Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in / Register
Toggle navigation
M
Magisk
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Administrator
Magisk
Commits
5bb943f8
Commit
5bb943f8
authored
Jan 06, 2017
by
topjohnwu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix repo expand card issue
parent
a3109953
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
69 additions
and
59 deletions
+69
-59
ReposAdapter.java
...main/java/com/topjohnwu/magisk/adapters/ReposAdapter.java
+69
-59
No files found.
app/src/main/java/com/topjohnwu/magisk/adapters/ReposAdapter.java
View file @
5bb943f8
...
@@ -24,6 +24,7 @@ import com.topjohnwu.magisk.receivers.RepoDlReceiver;
...
@@ -24,6 +24,7 @@ import com.topjohnwu.magisk.receivers.RepoDlReceiver;
import
com.topjohnwu.magisk.utils.Utils
;
import
com.topjohnwu.magisk.utils.Utils
;
import
com.topjohnwu.magisk.utils.WebWindow
;
import
com.topjohnwu.magisk.utils.WebWindow
;
import
java.util.HashSet
;
import
java.util.List
;
import
java.util.List
;
import
butterknife.BindView
;
import
butterknife.BindView
;
...
@@ -32,9 +33,11 @@ import butterknife.ButterKnife;
...
@@ -32,9 +33,11 @@ import butterknife.ButterKnife;
public
class
ReposAdapter
extends
RecyclerView
.
Adapter
<
ReposAdapter
.
ViewHolder
>
{
public
class
ReposAdapter
extends
RecyclerView
.
Adapter
<
ReposAdapter
.
ViewHolder
>
{
private
List
<
Repo
>
mUpdateRepos
,
mInstalledRepos
,
mOthersRepos
;
private
List
<
Repo
>
mUpdateRepos
,
mInstalledRepos
,
mOthersRepos
;
private
View
mView
;
private
HashSet
<
Repo
>
expandList
=
new
HashSet
<>()
;
private
Context
mContext
;
private
Context
mContext
;
private
int
expandHeight
=
0
;
public
ReposAdapter
(
List
<
Repo
>
update
,
List
<
Repo
>
installed
,
List
<
Repo
>
others
)
{
public
ReposAdapter
(
List
<
Repo
>
update
,
List
<
Repo
>
installed
,
List
<
Repo
>
others
)
{
mUpdateRepos
=
update
;
mUpdateRepos
=
update
;
mInstalledRepos
=
installed
;
mInstalledRepos
=
installed
;
...
@@ -43,11 +46,11 @@ public class ReposAdapter extends RecyclerView.Adapter<ReposAdapter.ViewHolder>
...
@@ -43,11 +46,11 @@ public class ReposAdapter extends RecyclerView.Adapter<ReposAdapter.ViewHolder>
@Override
@Override
public
ViewHolder
onCreateViewHolder
(
ViewGroup
parent
,
int
viewType
)
{
public
ViewHolder
onCreateViewHolder
(
ViewGroup
parent
,
int
viewType
)
{
mView
=
LayoutInflater
.
from
(
parent
.
getContext
()).
inflate
(
R
.
layout
.
list_item_repo
,
parent
,
false
);
View
v
=
LayoutInflater
.
from
(
parent
.
getContext
()).
inflate
(
R
.
layout
.
list_item_repo
,
parent
,
false
);
ButterKnife
.
bind
(
this
,
mView
);
ButterKnife
.
bind
(
this
,
v
);
mContext
=
parent
.
getContext
();
mContext
=
parent
.
getContext
();
return
new
ViewHolder
(
mView
);
return
new
ViewHolder
(
v
);
}
}
@Override
@Override
...
@@ -78,8 +81,23 @@ public class ReposAdapter extends RecyclerView.Adapter<ReposAdapter.ViewHolder>
...
@@ -78,8 +81,23 @@ public class ReposAdapter extends RecyclerView.Adapter<ReposAdapter.ViewHolder>
holder
.
description
.
setText
(
description
);
holder
.
description
.
setText
(
description
);
}
}
View
.
OnClickListener
listener
=
view
->
{
holder
.
setExpanded
(
expandList
.
contains
(
repo
));
if
(
view
.
getId
()
==
holder
.
updateImage
.
getId
())
{
holder
.
itemView
.
setOnClickListener
(
view
->
{
if
(
holder
.
mExpanded
)
{
holder
.
collapse
();
expandList
.
remove
(
repo
);
}
else
{
holder
.
expand
();
expandList
.
add
(
repo
);
}
});
holder
.
changeLog
.
setOnClickListener
(
view
->
{
if
(!
repo
.
getLogUrl
().
isEmpty
())
{
new
WebWindow
(
mContext
.
getString
(
R
.
string
.
changelog
),
repo
.
getLogUrl
(),
mContext
);
}
});
holder
.
updateImage
.
setOnClickListener
(
view
->
{
String
filename
=
repo
.
getName
()
+
"-"
+
repo
.
getVersion
()
+
".zip"
;
String
filename
=
repo
.
getName
()
+
"-"
+
repo
.
getVersion
()
+
".zip"
;
MainActivity
.
alertBuilder
MainActivity
.
alertBuilder
.
setTitle
(
mContext
.
getString
(
R
.
string
.
repo_install_title
,
repo
.
getName
()))
.
setTitle
(
mContext
.
getString
(
R
.
string
.
repo_install_title
,
repo
.
getName
()))
...
@@ -92,22 +110,17 @@ public class ReposAdapter extends RecyclerView.Adapter<ReposAdapter.ViewHolder>
...
@@ -92,22 +110,17 @@ public class ReposAdapter extends RecyclerView.Adapter<ReposAdapter.ViewHolder>
Utils
.
getLegalFilename
(
filename
)))
Utils
.
getLegalFilename
(
filename
)))
.
setNegativeButton
(
R
.
string
.
no_thanks
,
null
)
.
setNegativeButton
(
R
.
string
.
no_thanks
,
null
)
.
show
();
.
show
();
}
});
if
((
view
.
getId
()
==
holder
.
changeLog
.
getId
())
&&
(!
repo
.
getLogUrl
().
equals
(
""
)))
{
holder
.
authorLink
.
setOnClickListener
(
view
->
{
new
WebWindow
(
mContext
.
getString
(
R
.
string
.
changelog
),
repo
.
getLogUrl
(),
mContext
);
if
(!
repo
.
getDonateUrl
().
isEmpty
())
{
}
if
((
view
.
getId
()
==
holder
.
authorLink
.
getId
())
&&
(!
repo
.
getSupportUrl
().
equals
(
""
)))
{
mContext
.
startActivity
(
new
Intent
(
Intent
.
ACTION_VIEW
,
Uri
.
parse
(
repo
.
getDonateUrl
())));
mContext
.
startActivity
(
new
Intent
(
Intent
.
ACTION_VIEW
,
Uri
.
parse
(
repo
.
getDonateUrl
())));
}
}
if
((
view
.
getId
()
==
holder
.
supportLink
.
getId
())
&&
(!
repo
.
getSupportUrl
().
equals
(
""
)))
{
});
holder
.
supportLink
.
setOnClickListener
(
view
->
{
if
(!
repo
.
getSupportUrl
().
isEmpty
())
{
mContext
.
startActivity
(
new
Intent
(
Intent
.
ACTION_VIEW
,
Uri
.
parse
(
repo
.
getSupportUrl
())));
mContext
.
startActivity
(
new
Intent
(
Intent
.
ACTION_VIEW
,
Uri
.
parse
(
repo
.
getSupportUrl
())));
}
}
};
});
holder
.
changeLog
.
setOnClickListener
(
listener
);
holder
.
updateImage
.
setOnClickListener
(
listener
);
holder
.
authorLink
.
setOnClickListener
(
listener
);
holder
.
supportLink
.
setOnClickListener
(
listener
);
}
}
@Override
@Override
...
@@ -130,9 +143,7 @@ public class ReposAdapter extends RecyclerView.Adapter<ReposAdapter.ViewHolder>
...
@@ -130,9 +143,7 @@ public class ReposAdapter extends RecyclerView.Adapter<ReposAdapter.ViewHolder>
private
ValueAnimator
mAnimator
;
private
ValueAnimator
mAnimator
;
private
ObjectAnimator
animY2
;
private
ObjectAnimator
animY2
;
private
ViewHolder
holder
;
private
boolean
mExpanded
=
false
;
private
boolean
expanded
=
false
;
public
ViewHolder
(
View
itemView
)
{
public
ViewHolder
(
View
itemView
)
{
super
(
itemView
);
super
(
itemView
);
...
@@ -140,51 +151,51 @@ public class ReposAdapter extends RecyclerView.Adapter<ReposAdapter.ViewHolder>
...
@@ -140,51 +151,51 @@ public class ReposAdapter extends RecyclerView.Adapter<ReposAdapter.ViewHolder>
ButterKnife
.
bind
(
this
,
itemView
);
ButterKnife
.
bind
(
this
,
itemView
);
DisplayMetrics
dimension
=
new
DisplayMetrics
();
DisplayMetrics
dimension
=
new
DisplayMetrics
();
windowmanager
.
getDefaultDisplay
().
getMetrics
(
dimension
);
windowmanager
.
getDefaultDisplay
().
getMetrics
(
dimension
);
holder
=
this
;
expandLayout
.
getViewTreeObserver
().
addOnPreDrawListener
(
this
.
expandLayout
.
getViewTreeObserver
().
addOnPreDrawListener
(
new
ViewTreeObserver
.
OnPreDrawListener
()
{
new
ViewTreeObserver
.
OnPreDrawListener
()
{
@Override
@Override
public
boolean
onPreDraw
()
{
public
boolean
onPreDraw
()
{
if
(
expandHeight
==
0
)
{
final
int
widthSpec
=
View
.
MeasureSpec
.
makeMeasureSpec
(
0
,
View
.
MeasureSpec
.
UNSPECIFIED
);
final
int
widthSpec
=
View
.
MeasureSpec
.
makeMeasureSpec
(
0
,
View
.
MeasureSpec
.
UNSPECIFIED
);
final
int
heightSpec
=
View
.
MeasureSpec
.
makeMeasureSpec
(
0
,
View
.
MeasureSpec
.
UNSPECIFIED
);
final
int
heightSpec
=
View
.
MeasureSpec
.
makeMeasureSpec
(
0
,
View
.
MeasureSpec
.
UNSPECIFIED
);
holder
.
expandLayout
.
getViewTreeObserver
().
removeOnPreDrawListener
(
this
);
expandLayout
.
measure
(
widthSpec
,
heightSpec
);
holder
.
expandLayout
.
setVisibility
(
View
.
GONE
);
expandHeight
=
expandLayout
.
getMeasuredHeight
();
holder
.
expandLayout
.
measure
(
widthSpec
,
heightSpec
);
}
final
int
holderHeight
=
holder
.
expandLayout
.
getMeasuredHeight
();
mAnimator
=
slideAnimator
(
0
,
holderHeight
);
animY2
=
ObjectAnimator
.
ofFloat
(
holder
.
updateImage
,
"translationY"
,
holderHeight
/
2
);
expandLayout
.
getViewTreeObserver
().
removeOnPreDrawListener
(
this
);
expandLayout
.
setVisibility
(
View
.
GONE
);
mAnimator
=
slideAnimator
(
0
,
expandHeight
);
animY2
=
ObjectAnimator
.
ofFloat
(
updateImage
,
"translationY"
,
expandHeight
/
2
);
return
true
;
return
true
;
}
}
});
});
mView
.
setOnClickListener
(
view
->
{
if
(
expanded
)
{
collapse
(
holder
.
expandLayout
);
}
else
{
expand
(
holder
.
expandLayout
);
}
}
expanded
=
!
expanded
;
});
private
void
setExpanded
(
boolean
expanded
)
{
mExpanded
=
expanded
;
ViewGroup
.
LayoutParams
layoutParams
=
expandLayout
.
getLayoutParams
();
layoutParams
.
height
=
expanded
?
expandHeight
:
0
;
expandLayout
.
setLayoutParams
(
layoutParams
);
expandLayout
.
setVisibility
(
expanded
?
View
.
VISIBLE
:
View
.
GONE
);
}
}
private
void
expand
(
View
view
)
{
private
void
expand
()
{
view
.
setVisibility
(
View
.
VISIBLE
);
expandLayout
.
setVisibility
(
View
.
VISIBLE
);
mAnimator
.
start
();
mAnimator
.
start
();
animY2
.
start
();
animY2
.
start
();
mExpanded
=
true
;
}
}
private
void
collapse
(
View
view
)
{
private
void
collapse
()
{
int
finalHeight
=
view
.
getHeight
();
if
(!
mExpanded
)
return
;
int
finalHeight
=
expandLayout
.
getHeight
();
ValueAnimator
mAnimator
=
slideAnimator
(
finalHeight
,
0
);
ValueAnimator
mAnimator
=
slideAnimator
(
finalHeight
,
0
);
mAnimator
.
addListener
(
new
Animator
.
AnimatorListener
()
{
mAnimator
.
addListener
(
new
Animator
.
AnimatorListener
()
{
@Override
@Override
public
void
onAnimationEnd
(
Animator
animator
)
{
public
void
onAnimationEnd
(
Animator
animator
)
{
view
.
setVisibility
(
View
.
GONE
);
expandLayout
.
setVisibility
(
View
.
GONE
);
}
}
@Override
@Override
...
@@ -198,7 +209,7 @@ public class ReposAdapter extends RecyclerView.Adapter<ReposAdapter.ViewHolder>
...
@@ -198,7 +209,7 @@ public class ReposAdapter extends RecyclerView.Adapter<ReposAdapter.ViewHolder>
});
});
mAnimator
.
start
();
mAnimator
.
start
();
animY2
.
reverse
();
animY2
.
reverse
();
mExpanded
=
false
;
}
}
private
ValueAnimator
slideAnimator
(
int
start
,
int
end
)
{
private
ValueAnimator
slideAnimator
(
int
start
,
int
end
)
{
...
@@ -207,8 +218,7 @@ public class ReposAdapter extends RecyclerView.Adapter<ReposAdapter.ViewHolder>
...
@@ -207,8 +218,7 @@ public class ReposAdapter extends RecyclerView.Adapter<ReposAdapter.ViewHolder>
animator
.
addUpdateListener
(
valueAnimator
->
{
animator
.
addUpdateListener
(
valueAnimator
->
{
int
value
=
(
Integer
)
valueAnimator
.
getAnimatedValue
();
int
value
=
(
Integer
)
valueAnimator
.
getAnimatedValue
();
ViewGroup
.
LayoutParams
layoutParams
=
expandLayout
ViewGroup
.
LayoutParams
layoutParams
=
expandLayout
.
getLayoutParams
();
.
getLayoutParams
();
layoutParams
.
height
=
value
;
layoutParams
.
height
=
value
;
expandLayout
.
setLayoutParams
(
layoutParams
);
expandLayout
.
setLayoutParams
(
layoutParams
);
});
});
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment