bug fix, R8 rules update
This commit is contained in:
parent
09a62e3aa3
commit
b3edb7d647
|
@ -45,7 +45,7 @@ proguardDictionaries {
|
|||
dictionaryNames = ['dict/class-dictionary', 'dict/package-dictionary', 'dict/obfuscation-dictionary']
|
||||
minLineLength 4
|
||||
maxLineLength 8
|
||||
linesCountInDictionary 12500
|
||||
linesCountInDictionary 50000
|
||||
}
|
||||
|
||||
dependencies {
|
||||
|
|
|
@ -3,6 +3,8 @@
|
|||
-classobfuscationdictionary dict/class-dictionary.txt
|
||||
-packageobfuscationdictionary dict/package-dictionary.txt
|
||||
|
||||
-optimizationpasses 5
|
||||
|
||||
# keep these libraries but allow obfuscating
|
||||
-dontwarn org.conscrypt.Conscrypt
|
||||
-keep,allowobfuscation, allowoptimization class org.conscrypt.Conscrypt {*;}
|
||||
|
|
|
@ -0,0 +1,38 @@
|
|||
package org.nuclearfog.twidda.backend.utils;
|
||||
|
||||
import android.view.View;
|
||||
|
||||
import java.lang.ref.WeakReference;
|
||||
|
||||
/**
|
||||
* This class is used to set visibility of a view using it's post method memory leak safe
|
||||
*
|
||||
* @author nuclearfog
|
||||
*/
|
||||
public class VisibilityDelay implements Runnable {
|
||||
|
||||
private WeakReference<View> viewRef;
|
||||
private boolean visibility;
|
||||
|
||||
/**
|
||||
* @param view view to set visibility
|
||||
* @param visibility true to set view visible
|
||||
*/
|
||||
public VisibilityDelay(View view, boolean visibility) {
|
||||
viewRef = new WeakReference<>(view);
|
||||
this.visibility = visibility;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
View view = viewRef.get();
|
||||
if (view != null) {
|
||||
if (visibility) {
|
||||
view.setVisibility(View.VISIBLE);
|
||||
} else {
|
||||
view.setVisibility(View.INVISIBLE);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -17,6 +17,7 @@ import androidx.viewpager2.widget.ViewPager2.OnPageChangeCallback;
|
|||
|
||||
import org.nuclearfog.twidda.R;
|
||||
import org.nuclearfog.twidda.backend.utils.AppStyles;
|
||||
import org.nuclearfog.twidda.backend.utils.VisibilityDelay;
|
||||
import org.nuclearfog.twidda.config.GlobalSettings;
|
||||
|
||||
/**
|
||||
|
@ -57,12 +58,14 @@ public class TabSelector extends LinearLayout implements OnClickListener, OnGlob
|
|||
tabContainer.setOrientation(LinearLayout.HORIZONTAL);
|
||||
indicator = new View(context);
|
||||
|
||||
indicator.setVisibility(INVISIBLE);
|
||||
indicator_height = (int) getResources().getDimension(R.dimen.tabs_indicator_height);
|
||||
LayoutParams indicatorParam = new LayoutParams(getMeasuredWidth() / Math.max(tabCount, 1), 5);
|
||||
LayoutParams tabContainerParam = new LayoutParams(LayoutParams.MATCH_PARENT, 0);
|
||||
tabContainerParam.weight = 1;
|
||||
|
||||
tabContainer.setLayoutParams(tabContainerParam);
|
||||
indicator.setLayoutParams(indicatorParam);
|
||||
setVisibility(INVISIBLE);
|
||||
addView(tabContainer);
|
||||
addView(indicator);
|
||||
}
|
||||
|
@ -86,7 +89,8 @@ public class TabSelector extends LinearLayout implements OnClickListener, OnGlob
|
|||
@Override
|
||||
public void onGlobalLayout() {
|
||||
getViewTreeObserver().removeOnGlobalLayoutListener(this);
|
||||
for (int i = 0 ; i < tabContainer.getChildCount(); i++) {
|
||||
// set tab item size
|
||||
for (int i = 0; i < tabContainer.getChildCount(); i++) {
|
||||
View tabItemView = tabContainer.getChildAt(i);
|
||||
ImageView icon = tabItemView.findViewById(R.id.tab_icon);
|
||||
TextView label = tabItemView.findViewById(R.id.tab_text);
|
||||
|
@ -94,11 +98,15 @@ public class TabSelector extends LinearLayout implements OnClickListener, OnGlob
|
|||
tabItemView.getLayoutParams().height = getMeasuredHeight();
|
||||
AppStyles.setDrawableColor(icon, settings.getIconColor());
|
||||
label.setTextColor(settings.getTextColor());
|
||||
tabItemView.requestLayout();
|
||||
}
|
||||
// set indicator size
|
||||
LayoutParams params = new LayoutParams(getMeasuredWidth() / Math.max(tabCount, 1), 5);
|
||||
indicator.setLayoutParams(params);
|
||||
indicator.setBackgroundColor(settings.getHighlightColor());
|
||||
indicator.setVisibility(VISIBLE);
|
||||
indicator.requestLayout();
|
||||
// make this view visible after setting sizes and distances correctly
|
||||
post(new VisibilityDelay(this, true));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -124,7 +132,7 @@ public class TabSelector extends LinearLayout implements OnClickListener, OnGlob
|
|||
} else {
|
||||
tabCount = tArray.length();
|
||||
}
|
||||
for (int i = 0 ; i < tabCount ; i++) {
|
||||
for (int i = 0; i < tabCount; i++) {
|
||||
View tabItemView = inflate(getContext(), R.layout.item_tab, null);
|
||||
ImageView icon = tabItemView.findViewById(R.id.tab_icon);
|
||||
int resId = tArray.getResourceId(i, 0);
|
||||
|
@ -165,7 +173,6 @@ public class TabSelector extends LinearLayout implements OnClickListener, OnGlob
|
|||
LayoutParams params = new LayoutParams(getMeasuredWidth() / tabCount, indicator_height);
|
||||
params.setMarginStart((int) (getMeasuredWidth() * positionOffset / tabCount));
|
||||
indicator.setLayoutParams(params);
|
||||
indicator.setVisibility(VISIBLE);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -15,3 +15,4 @@ org.gradle.configureondemand=false;
|
|||
org.gradle.jvmargs=-Xmx1536M -Dkotlin.daemon.jvm.options\="-Xmx1536M"
|
||||
android.enableJetifier=true
|
||||
android.useAndroidX=true
|
||||
android.enableR8.fullMode=true
|
||||
|
|
Loading…
Reference in New Issue