bug fix, R8 rules update

This commit is contained in:
nuclearfog 2023-04-16 19:52:26 +02:00
parent 09a62e3aa3
commit b3edb7d647
No known key found for this signature in database
GPG Key ID: 03488A185C476379
5 changed files with 54 additions and 6 deletions

View File

@ -45,7 +45,7 @@ proguardDictionaries {
dictionaryNames = ['dict/class-dictionary', 'dict/package-dictionary', 'dict/obfuscation-dictionary']
minLineLength 4
maxLineLength 8
linesCountInDictionary 12500
linesCountInDictionary 50000
}
dependencies {

View File

@ -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 {*;}

View File

@ -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);
}
}
}
}

View File

@ -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);
}
}

View File

@ -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