Merge pull request #293 from okcaptain/dev

fix View.generateViewId
pull/296/head
okcaptain 2 years ago committed by GitHub
commit 4abf6446ef
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 4
      app/src/leanback/java/com/fongmi/android/tv/bean/Func.java
  2. 29
      app/src/main/java/com/fongmi/android/tv/utils/ViewUtil.java

@ -1,10 +1,10 @@
package com.fongmi.android.tv.bean;
import android.annotation.SuppressLint;
import android.view.View;
import com.fongmi.android.tv.R;
import com.fongmi.android.tv.utils.ResUtil;
import com.fongmi.android.tv.utils.ViewUtil;
public class Func {
@ -20,7 +20,7 @@ public class Func {
public Func(int resId) {
this.resId = resId;
this.id = View.generateViewId();
this.id = ViewUtil.generateViewId();
this.setDrawable();
}

@ -0,0 +1,29 @@
package com.fongmi.android.tv.utils;
import android.os.Build;
import android.view.View;
import java.util.concurrent.atomic.AtomicInteger;
public class ViewUtil {
private static final AtomicInteger viewIdGenerator = new AtomicInteger(1);
public static int generateViewId() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) return View.generateViewId();
else return generateUniqueViewId();
}
private static int generateUniqueViewId() {
while (true) {
final int result = viewIdGenerator.get();
// aapt-generated IDs have the high byte nonzero; clamp to the range under that.
int newValue = result + 1;
if (newValue > 0x00FFFFFF) newValue = 1; // Roll over to 1, not 0.
if (viewIdGenerator.compareAndSet(result, newValue)) {
return result;
}
}
}
}
Loading…
Cancel
Save