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
cc81cd44
Commit
cc81cd44
authored
Aug 28, 2017
by
topjohnwu
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Extract ExpandableView code into interface
parent
439c7118
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
117 additions
and
165 deletions
+117
-165
FlashActivity.java
app/src/main/java/com/topjohnwu/magisk/FlashActivity.java
+0
-1
MagiskFragment.java
app/src/main/java/com/topjohnwu/magisk/MagiskFragment.java
+10
-74
PolicyAdapter.java
...ain/java/com/topjohnwu/magisk/adapters/PolicyAdapter.java
+10
-5
SuLogAdapter.java
...main/java/com/topjohnwu/magisk/adapters/SuLogAdapter.java
+10
-5
ExpandableView.java
.../java/com/topjohnwu/magisk/components/ExpandableView.java
+84
-0
ExpandableViewHolder.java
...com/topjohnwu/magisk/components/ExpandableViewHolder.java
+0
-77
Topic.java
app/src/main/java/com/topjohnwu/magisk/utils/Topic.java
+2
-2
Utils.java
app/src/main/java/com/topjohnwu/magisk/utils/Utils.java
+1
-1
No files found.
app/src/main/java/com/topjohnwu/magisk/FlashActivity.java
View file @
cc81cd44
...
...
@@ -14,7 +14,6 @@ import android.widget.TextView;
import
com.topjohnwu.magisk.asyncs.FlashZip
;
import
com.topjohnwu.magisk.components.Activity
;
import
com.topjohnwu.magisk.utils.AdaptiveList
;
import
com.topjohnwu.magisk.utils.Shell
;
import
butterknife.BindView
;
import
butterknife.ButterKnife
;
...
...
app/src/main/java/com/topjohnwu/magisk/MagiskFragment.java
View file @
cc81cd44
package
com
.
topjohnwu
.
magisk
;
import
android.animation.Animator
;
import
android.animation.ValueAnimator
;
import
android.app.NotificationManager
;
import
android.app.ProgressDialog
;
import
android.content.Context
;
...
...
@@ -16,7 +14,6 @@ import android.support.v7.widget.CardView;
import
android.view.LayoutInflater
;
import
android.view.View
;
import
android.view.ViewGroup
;
import
android.view.ViewTreeObserver
;
import
android.widget.ArrayAdapter
;
import
android.widget.Button
;
import
android.widget.CheckBox
;
...
...
@@ -28,6 +25,7 @@ import android.widget.TextView;
import
com.topjohnwu.magisk.asyncs.CheckUpdates
;
import
com.topjohnwu.magisk.components.AlertDialogBuilder
;
import
com.topjohnwu.magisk.components.ExpandableView
;
import
com.topjohnwu.magisk.components.Fragment
;
import
com.topjohnwu.magisk.components.SnackbarMaker
;
import
com.topjohnwu.magisk.receivers.DownloadReceiver
;
...
...
@@ -49,15 +47,14 @@ import butterknife.OnClick;
import
butterknife.Unbinder
;
public
class
MagiskFragment
extends
Fragment
implements
Topic
.
Subscriber
,
SwipeRefreshLayout
.
OnRefreshListener
{
implements
Topic
.
Subscriber
,
SwipeRefreshLayout
.
OnRefreshListener
,
ExpandableView
{
public
static
final
String
SHOW_DIALOG
=
"dialog"
;
private
static
final
String
UNINSTALLER
=
"magisk_uninstaller.sh"
;
private
static
final
String
UTIL_FUNCTIONS
=
"util_functions.sh"
;
private
static
int
expandHeight
=
0
;
private
static
boolean
mExpanded
=
false
;
private
Container
expandableContainer
=
new
Container
();
private
MagiskManager
magiskManager
;
private
Unbinder
unbinder
;
...
...
@@ -231,23 +228,8 @@ public class MagiskFragment extends Fragment
unbinder
=
ButterKnife
.
bind
(
this
,
v
);
magiskManager
=
getApplication
();
expandLayout
.
getViewTreeObserver
().
addOnPreDrawListener
(
new
ViewTreeObserver
.
OnPreDrawListener
()
{
@Override
public
boolean
onPreDraw
()
{
if
(
expandHeight
==
0
)
{
final
int
widthSpec
=
View
.
MeasureSpec
.
makeMeasureSpec
(
0
,
View
.
MeasureSpec
.
UNSPECIFIED
);
final
int
heightSpec
=
View
.
MeasureSpec
.
makeMeasureSpec
(
0
,
View
.
MeasureSpec
.
UNSPECIFIED
);
expandLayout
.
measure
(
widthSpec
,
heightSpec
);
expandHeight
=
expandLayout
.
getMeasuredHeight
();
}
expandLayout
.
getViewTreeObserver
().
removeOnPreDrawListener
(
this
);
setExpanded
();
return
true
;
}
});
expandableContainer
.
expandLayout
=
expandLayout
;
setupExpandable
();
mSwipeRefreshLayout
.
setOnRefreshListener
(
this
);
...
...
@@ -306,6 +288,11 @@ public class MagiskFragment extends Fragment
unbinder
.
unbind
();
}
@Override
public
Container
getContainer
()
{
return
expandableContainer
;
}
private
void
updateUI
()
{
((
MainActivity
)
getActivity
()).
checkHideSection
();
...
...
@@ -440,56 +427,5 @@ public class MagiskFragment extends Fragment
expand
();
}
}
private
void
setExpanded
()
{
ViewGroup
.
LayoutParams
layoutParams
=
expandLayout
.
getLayoutParams
();
layoutParams
.
height
=
mExpanded
?
expandHeight
:
0
;
expandLayout
.
setLayoutParams
(
layoutParams
);
expandLayout
.
setVisibility
(
mExpanded
?
View
.
VISIBLE
:
View
.
GONE
);
}
private
void
expand
()
{
if
(
mExpanded
)
return
;
expandLayout
.
setVisibility
(
View
.
VISIBLE
);
ValueAnimator
mAnimator
=
slideAnimator
(
0
,
expandHeight
);
mAnimator
.
start
();
mExpanded
=
true
;
}
private
void
collapse
()
{
if
(!
mExpanded
)
return
;
int
finalHeight
=
expandLayout
.
getHeight
();
ValueAnimator
mAnimator
=
slideAnimator
(
finalHeight
,
0
);
mAnimator
.
addListener
(
new
Animator
.
AnimatorListener
()
{
@Override
public
void
onAnimationEnd
(
Animator
animator
)
{
expandLayout
.
setVisibility
(
View
.
GONE
);
}
@Override
public
void
onAnimationStart
(
Animator
animator
)
{}
@Override
public
void
onAnimationCancel
(
Animator
animator
)
{}
@Override
public
void
onAnimationRepeat
(
Animator
animator
)
{}
});
mAnimator
.
start
();
mExpanded
=
false
;
}
private
ValueAnimator
slideAnimator
(
int
start
,
int
end
)
{
ValueAnimator
animator
=
ValueAnimator
.
ofInt
(
start
,
end
);
animator
.
addUpdateListener
(
valueAnimator
->
{
int
value
=
(
Integer
)
valueAnimator
.
getAnimatedValue
();
ViewGroup
.
LayoutParams
layoutParams
=
expandLayout
.
getLayoutParams
();
layoutParams
.
height
=
value
;
expandLayout
.
setLayoutParams
(
layoutParams
);
});
return
animator
;
}
}
app/src/main/java/com/topjohnwu/magisk/adapters/PolicyAdapter.java
View file @
cc81cd44
...
...
@@ -12,7 +12,7 @@ import android.widget.TextView;
import
com.topjohnwu.magisk.R
;
import
com.topjohnwu.magisk.components.AlertDialogBuilder
;
import
com.topjohnwu.magisk.components.ExpandableView
Holder
;
import
com.topjohnwu.magisk.components.ExpandableView
;
import
com.topjohnwu.magisk.components.SnackbarMaker
;
import
com.topjohnwu.magisk.database.SuDatabaseHelper
;
import
com.topjohnwu.magisk.superuser.Policy
;
...
...
@@ -50,7 +50,7 @@ public class PolicyAdapter extends RecyclerView.Adapter<PolicyAdapter.ViewHolder
holder
.
setExpanded
(
expandList
.
contains
(
policy
));
holder
.
itemView
.
setOnClickListener
(
view
->
{
if
(
holder
.
mExpanded
)
{
if
(
holder
.
isExpanded
()
)
{
holder
.
collapse
();
expandList
.
remove
(
policy
);
}
else
{
...
...
@@ -119,7 +119,7 @@ public class PolicyAdapter extends RecyclerView.Adapter<PolicyAdapter.ViewHolder
return
policyList
.
size
();
}
static
class
ViewHolder
extends
ExpandableViewHolder
{
static
class
ViewHolder
extends
RecyclerView
.
ViewHolder
implements
ExpandableView
{
@BindView
(
R
.
id
.
app_name
)
TextView
appName
;
@BindView
(
R
.
id
.
package_name
)
TextView
packageName
;
...
...
@@ -127,18 +127,23 @@ public class PolicyAdapter extends RecyclerView.Adapter<PolicyAdapter.ViewHolder
@BindView
(
R
.
id
.
master_switch
)
Switch
masterSwitch
;
@BindView
(
R
.
id
.
notification_switch
)
Switch
notificationSwitch
;
@BindView
(
R
.
id
.
logging_switch
)
Switch
loggingSwitch
;
@BindView
(
R
.
id
.
expand_layout
)
ViewGroup
expandLayout
;
@BindView
(
R
.
id
.
delete
)
ImageView
delete
;
@BindView
(
R
.
id
.
more_info
)
ImageView
moreInfo
;
private
Container
container
=
new
Container
();
public
ViewHolder
(
View
itemView
)
{
super
(
itemView
);
ButterKnife
.
bind
(
this
,
itemView
);
container
.
expandLayout
=
expandLayout
;
setupExpandable
();
}
@Override
public
void
setExpandLayout
(
View
itemView
)
{
expandLayout
=
itemView
.
findViewById
(
R
.
id
.
expand_layout
)
;
public
Container
getContainer
(
)
{
return
container
;
}
}
}
app/src/main/java/com/topjohnwu/magisk/adapters/SuLogAdapter.java
View file @
cc81cd44
...
...
@@ -11,7 +11,7 @@ import android.widget.ImageView;
import
android.widget.TextView
;
import
com.topjohnwu.magisk.R
;
import
com.topjohnwu.magisk.components.ExpandableView
Holder
;
import
com.topjohnwu.magisk.components.ExpandableView
;
import
com.topjohnwu.magisk.database.SuDatabaseHelper
;
import
com.topjohnwu.magisk.superuser.SuLogEntry
;
...
...
@@ -90,7 +90,7 @@ public class SuLogAdapter extends SectionedAdapter<SuLogAdapter.SectionHolder, S
SuLogEntry
entry
=
new
SuLogEntry
(
suLogCursor
);
holder
.
setExpanded
(
itemExpanded
.
contains
(
sqlPosition
));
holder
.
itemView
.
setOnClickListener
(
view
->
{
if
(
holder
.
mExpanded
)
{
if
(
holder
.
isExpanded
()
)
{
holder
.
collapse
();
itemExpanded
.
remove
(
sqlPosition
);
}
else
{
...
...
@@ -128,7 +128,7 @@ public class SuLogAdapter extends SectionedAdapter<SuLogAdapter.SectionHolder, S
}
}
static
class
LogViewHolder
extends
ExpandableViewHolder
{
static
class
LogViewHolder
extends
RecyclerView
.
ViewHolder
implements
ExpandableView
{
@BindView
(
R
.
id
.
app_name
)
TextView
appName
;
@BindView
(
R
.
id
.
action
)
TextView
action
;
...
...
@@ -136,15 +136,20 @@ public class SuLogAdapter extends SectionedAdapter<SuLogAdapter.SectionHolder, S
@BindView
(
R
.
id
.
fromPid
)
TextView
fromPid
;
@BindView
(
R
.
id
.
toUid
)
TextView
toUid
;
@BindView
(
R
.
id
.
command
)
TextView
command
;
@BindView
(
R
.
id
.
expand_layout
)
ViewGroup
expandLayout
;
private
Container
container
=
new
Container
();
LogViewHolder
(
View
itemView
)
{
super
(
itemView
);
ButterKnife
.
bind
(
this
,
itemView
);
container
.
expandLayout
=
expandLayout
;
setupExpandable
();
}
@Override
public
void
setExpandLayout
(
View
itemView
)
{
expandLayout
=
itemView
.
findViewById
(
R
.
id
.
expand_layout
)
;
public
Container
getContainer
(
)
{
return
container
;
}
}
}
app/src/main/java/com/topjohnwu/magisk/components/ExpandableView.java
0 → 100644
View file @
cc81cd44
package
com
.
topjohnwu
.
magisk
.
components
;
import
android.animation.ValueAnimator
;
import
android.view.View
;
import
android.view.ViewGroup
;
import
android.view.ViewTreeObserver
;
public
interface
ExpandableView
{
class
Container
{
public
ViewGroup
expandLayout
;
ValueAnimator
expandAnimator
,
collapseAnimator
;
boolean
mExpanded
=
false
;
int
expandHeight
=
0
;
}
// Provide state info
Container
getContainer
();
default
void
setupExpandable
()
{
Container
container
=
getContainer
();
container
.
expandLayout
.
getViewTreeObserver
().
addOnPreDrawListener
(
new
ViewTreeObserver
.
OnPreDrawListener
()
{
@Override
public
boolean
onPreDraw
()
{
if
(
container
.
expandHeight
==
0
)
{
final
int
widthSpec
=
View
.
MeasureSpec
.
makeMeasureSpec
(
0
,
View
.
MeasureSpec
.
UNSPECIFIED
);
final
int
heightSpec
=
View
.
MeasureSpec
.
makeMeasureSpec
(
0
,
View
.
MeasureSpec
.
UNSPECIFIED
);
container
.
expandLayout
.
measure
(
widthSpec
,
heightSpec
);
container
.
expandHeight
=
container
.
expandLayout
.
getMeasuredHeight
();
}
container
.
expandLayout
.
getViewTreeObserver
().
removeOnPreDrawListener
(
this
);
container
.
expandLayout
.
setVisibility
(
View
.
GONE
);
container
.
expandAnimator
=
slideAnimator
(
0
,
container
.
expandHeight
);
container
.
collapseAnimator
=
slideAnimator
(
container
.
expandHeight
,
0
);
return
true
;
}
});
}
default
boolean
isExpanded
()
{
return
getContainer
().
mExpanded
;
}
default
void
setExpanded
(
boolean
expanded
)
{
Container
container
=
getContainer
();
container
.
mExpanded
=
expanded
;
ViewGroup
.
LayoutParams
layoutParams
=
container
.
expandLayout
.
getLayoutParams
();
layoutParams
.
height
=
expanded
?
container
.
expandHeight
:
0
;
container
.
expandLayout
.
setLayoutParams
(
layoutParams
);
container
.
expandLayout
.
setVisibility
(
expanded
?
View
.
VISIBLE
:
View
.
GONE
);
}
default
void
expand
()
{
Container
container
=
getContainer
();
if
(
container
.
mExpanded
)
return
;
container
.
expandLayout
.
setVisibility
(
View
.
VISIBLE
);
container
.
expandAnimator
.
start
();
container
.
mExpanded
=
true
;
}
default
void
collapse
()
{
Container
container
=
getContainer
();
if
(!
container
.
mExpanded
)
return
;
container
.
collapseAnimator
.
start
();
container
.
mExpanded
=
false
;
}
default
ValueAnimator
slideAnimator
(
int
start
,
int
end
)
{
Container
container
=
getContainer
();
ValueAnimator
animator
=
ValueAnimator
.
ofInt
(
start
,
end
);
animator
.
addUpdateListener
(
valueAnimator
->
{
int
value
=
(
Integer
)
valueAnimator
.
getAnimatedValue
();
ViewGroup
.
LayoutParams
layoutParams
=
container
.
expandLayout
.
getLayoutParams
();
layoutParams
.
height
=
value
;
container
.
expandLayout
.
setLayoutParams
(
layoutParams
);
});
return
animator
;
}
}
app/src/main/java/com/topjohnwu/magisk/components/ExpandableViewHolder.java
deleted
100644 → 0
View file @
439c7118
package
com
.
topjohnwu
.
magisk
.
components
;
import
android.animation.ValueAnimator
;
import
android.support.v7.widget.RecyclerView
;
import
android.view.View
;
import
android.view.ViewGroup
;
import
android.view.ViewTreeObserver
;
public
abstract
class
ExpandableViewHolder
extends
RecyclerView
.
ViewHolder
{
protected
ViewGroup
expandLayout
;
private
ValueAnimator
expandAnimator
,
collapseAnimator
;
private
static
int
expandHeight
=
0
;
public
boolean
mExpanded
=
false
;
public
ExpandableViewHolder
(
View
itemView
)
{
super
(
itemView
);
setExpandLayout
(
itemView
);
expandLayout
.
getViewTreeObserver
().
addOnPreDrawListener
(
new
ViewTreeObserver
.
OnPreDrawListener
()
{
@Override
public
boolean
onPreDraw
()
{
if
(
expandHeight
==
0
)
{
final
int
widthSpec
=
View
.
MeasureSpec
.
makeMeasureSpec
(
0
,
View
.
MeasureSpec
.
UNSPECIFIED
);
final
int
heightSpec
=
View
.
MeasureSpec
.
makeMeasureSpec
(
0
,
View
.
MeasureSpec
.
UNSPECIFIED
);
expandLayout
.
measure
(
widthSpec
,
heightSpec
);
expandHeight
=
expandLayout
.
getMeasuredHeight
();
}
expandLayout
.
getViewTreeObserver
().
removeOnPreDrawListener
(
this
);
expandLayout
.
setVisibility
(
View
.
GONE
);
expandAnimator
=
slideAnimator
(
0
,
expandHeight
);
collapseAnimator
=
slideAnimator
(
expandHeight
,
0
);
return
true
;
}
});
}
public
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
);
}
public
void
expand
()
{
if
(
mExpanded
)
return
;
expandLayout
.
setVisibility
(
View
.
VISIBLE
);
expandAnimator
.
start
();
mExpanded
=
true
;
}
public
void
collapse
()
{
if
(!
mExpanded
)
return
;
collapseAnimator
.
start
();
mExpanded
=
false
;
}
public
abstract
void
setExpandLayout
(
View
itemView
);
private
ValueAnimator
slideAnimator
(
int
start
,
int
end
)
{
ValueAnimator
animator
=
ValueAnimator
.
ofInt
(
start
,
end
);
animator
.
addUpdateListener
(
valueAnimator
->
{
int
value
=
(
Integer
)
valueAnimator
.
getAnimatedValue
();
ViewGroup
.
LayoutParams
layoutParams
=
expandLayout
.
getLayoutParams
();
layoutParams
.
height
=
value
;
expandLayout
.
setLayoutParams
(
layoutParams
);
});
return
animator
;
}
}
app/src/main/java/com/topjohnwu/magisk/utils/Topic.java
View file @
cc81cd44
...
...
@@ -34,8 +34,8 @@ public class Topic {
publish
(
true
);
}
public
void
publish
(
boolean
b
)
{
hasPublished
=
b
;
public
void
publish
(
boolean
record
)
{
hasPublished
=
record
;
if
(
subscribers
!=
null
)
{
for
(
WeakReference
<
Subscriber
>
subscriber
:
subscribers
)
{
if
(
subscriber
.
get
()
!=
null
)
...
...
app/src/main/java/com/topjohnwu/magisk/utils/Utils.java
View file @
cc81cd44
...
...
@@ -142,7 +142,7 @@ public class Utils {
@Override
public
void
handleResults
(
Result
result
)
{
getMagiskManager
(
mActivity
).
SNCheckResult
=
result
;
getMagiskManager
(
mActivity
).
safetyNetDone
.
publish
();
getMagiskManager
(
mActivity
).
safetyNetDone
.
publish
(
false
);
}
}.
requestTest
();
}
...
...
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