Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

底部出现空白区域的手机对应的 android.Build.MODEL #51

Closed
bingoogolapple opened this issue Jul 31, 2017 · 16 comments
Closed

Comments

@bingoogolapple
Copy link
Owner

bingoogolapple commented Jul 31, 2017

如果发现某些手机上底部出现空白区域,麻烦打印以下信息反馈到当前 Issue 中

android.Build.VERSION.SDK_INT

android.Build.MODEL

可以通过 BGASwipeBackManager.ignoreNavigationBarModels(Arrays.asList("底部出现空白区域的手机对应的 android.Build.MODEL")) 来临时解决该问题

目前已发现机型

  • Nexus 4
  • H60-L01
  • P7-L07
  • MT7-UL00
  • HUAWEI P7-L07
  • OPPO R7s
  • Xiaomi HM Note 1S
@lxmy
Copy link

lxmy commented Aug 8, 2017

你好,测试发现华为P7手机底部出现空白区域

版本 cn.bingoogolapple:bga-swipebacklayout:1.1.0
Build.VERSION.SDK_INT=19
Build.MODEL=HUAWEI P7-L07

@ghost
Copy link

ghost commented Aug 31, 2017

你好,测试发现OPPO R7s手机底部出现空白区域

版本 cn.bingoogolapple:bga-swipebacklayout:1.1.0
Build.VERSION.SDK_INT=19
Build.MODEL=OPPO R7s

@5bo
Copy link

5bo commented Sep 7, 2017

你好,测试发现红米Note手机底部出现空白区域
Build.VERSION.SDK_INT=19
Build.MODEL=Xiaomi HM Note 1S

@bingoogolapple
Copy link
Owner Author

@lxmy @instanceofz @5bo 谢谢反馈,最新版本 v1.1.1 已经在 library 中添加这三个机型到白名单中了

@ghost
Copy link

ghost commented Sep 11, 2017

你好,测试发现华为P7手机底部出现空白区域

版本 cn.bingoogolapple:bga-swipebacklayout:1.1.1
Build.VERSION.SDK_INT=19
Build.MODEL=HUAWEI P7-L09

发现一个规律,都是Build.VERSION.SDK_INT=19,要不要统一做下19的适配呢?

@ghost
Copy link

ghost commented Sep 13, 2017

你好,测试发现LG-D855手机底部出现空白区域

版本 cn.bingoogolapple:bga-swipebacklayout:1.1.1
Build.VERSION.SDK_INT=22
Build.MODEL=LG-D855

这次这个不是19了,但是2k屏幕, 使用BGASwipeBackManager.ignoreNavigationBarModels(Arrays.asList(models));后,底下空白被原来的布局覆盖,原来的布局不见一截。

@zhudongya123
Copy link

Build.VERSION.SDK_INT=23
Build.MODEL=E6683

@tongtian00
Copy link

你好,测试发现两部华为手机底部出现空白区域

版本 cn.bingoogolapple:bga-swipebacklayout:1.1.1

Build.VERSION.SDK_INT=19
Build.MODEL=HUAWEI G7-TL00

Build.VERSION.SDK_INT=19
Build.MODEL=PE-CL00

@brightpoplar
Copy link

brightpoplar commented Sep 29, 2017

你好,测试两部手机:
版本 cn.bingoogolapple:bga-swipebacklayout:1.1.1

索尼:手机 有 底部导航条
Build.VERSION.SDK_INT = 19
Build.MODEL = L55t

华为:手机 没有 底部导航条
Build.VERSION.SDK_INT = 17
Build.MODEL = H30-T10

@@@::
cn.bingoogolapple.swipebacklayout.BGASwipeBackLayout.onMeasure(int widthMeasureSpec, int heightMeasureSpec){
......
// ======================== 新加的 START ======================
// 这里:如果放开 【索尼】手机底部出现空白区域,注掉则不会出现;华为没有此问题
// @:个人建议,楼主后期对此问题优化的话,从导航条入手
// maxLayoutHeight -= UIUtil.getNavigationBarHeight(mActivity);
// ======================== 新加的 END ========================
......
}

// ========================
增加测试手机:
华为:手机 有 底部导航条
Build.VERSION.SDK_INT = 24
Build.MODEL = HUAWEI NXT-DL00

OPPO:手机 没有 底部导航条
Build.VERSION.SDK_INT = 22
Build.MODEL = OPPO R9 Plustm A

增加建议方法:
// 通过判断设备是否有返回键、菜单键(不是虚拟键,是手机屏幕外的按键)来确定是否有NavigationBar
private static boolean checkDeviceHasNavigationBar1(Activity activity) {
		boolean hasBackKey = KeyCharacterMap.deviceHasKey(KeyEvent.KEYCODE_BACK);
		boolean hasMenuKey = ViewConfiguration.get(activity).hasPermanentMenuKey();

		if (!hasMenuKey && !hasBackKey) {
			// 这个设备有一个导航栏
			return true;
		}
		return false;
	}

@yuer8087
Copy link

发现华为手机出现该问题
Build.VERSION.SDK_INT=19
Build.MODEL=PE-TL10

@huohuo5753
Copy link

发现华为手机出现该问题
Build.MODEL = PE-UL00
Build.VERSION.SDK_INT = 19

@huohuo5753
Copy link

此问题的原因我分析了一下,问题定位BGASwipeBackLayout.class类中的onMeasure()方法中;

private int getScreenHeight()
{ int screenHeight = 0;
Display display = ((Activity)getContext()).getWindowManager().getDefaultDisplay();
DisplayMetrics dm = new DisplayMetrics();
@SuppressWarnings("rawtypes")
Class c;
try {
c = Class.forName("android.view.Display");
@SuppressWarnings("unchecked")
Method method = c.getMethod("getRealMetrics",DisplayMetrics.class);
method.invoke(display, dm);
screenHeight=dm.heightPixels;
}catch(Exception e){
e.printStackTrace();
}
return screenHeight;
}
@OverRide
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int widthMode = MeasureSpec.getMode(widthMeasureSpec);
int widthSize = MeasureSpec.getSize(widthMeasureSpec);
int heightMode = MeasureSpec.getMode(heightMeasureSpec);
//int heightSize = MeasureSpec.getSize(heightMeasureSpec);
int heightSize = getScreenHeight();
。。。。。 }

heightSize高度的计算问题,通过debug发现,正常的手机最后heightSize的值为整个屏幕的高度,出现白屏的手机获取的heightSize的值为不包含虚拟键盘高度的有效屏幕高度(比如整屏1920的,此时获取到的值是1814);
所以我的解决思路是heightSize的值必须获取为整个屏幕的高度;

个人观点,请作者看是否可以作为解决方案;

@bingoogolapple
Copy link
Owner Author

Version 1.1.2 (2017-10-13)

  • 初始化由「BGASwipeBackManager.getInstance().init(this)」改成「BGASwipeBackHelper.init(this)」
  • 移除 BGASwipeBackManager 的 ignoreNavigationBarModels 方法
  • 支持全屏、横屏
  • 修复滑动释放逻辑错误
  • 修复部分手机底部出现出现白色区域

@jeesezh
Copy link

jeesezh commented Feb 24, 2018

你好,锤子坚果pro2也出现空白问题
cn.bingoogolapple:bga-swipebacklayout:1.1.8
Build.VERSION.SDK_INT=25
Build.MODEL=OS105

@ren93
Copy link

ren93 commented Mar 28, 2018

锤子坚果pro2也出现空白问题 ,导航栏隐藏的情况下,UIUtil.isNavigationBarVisible(Activity activity)返回true

@finalrose7
Copy link

你好,锤子坚果pro2也出现空白问题
cn.bingoogolapple:bga-swipebacklayout:1.1.8
Build.VERSION.SDK_INT=25
Build.MODEL=OS105

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests