700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Android虚拟按键的适配

Android虚拟按键的适配

时间:2022-07-26 12:05:40

相关推荐

Android虚拟按键的适配

华为等手机底部带有虚拟按键,会遮挡app的底部,针对这个问题网上有一些解决方案,但都不是很完美,或多或少存在一些问题。

下面推荐一个比较完美的适配方式。

public class AndroidWorkaround {

public static void assistActivity(View content) {

new AndroidWorkaround(content);

}

private View mChildOfContent;

private int usableHeightPrevious;

private ViewGroup.LayoutParams frameLayoutParams;

private AndroidWorkaround(View content) {

mChildOfContent = content;

mChildOfContent.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {

public void onGlobalLayout() {

possiblyResizeChildOfContent();

}

});

frameLayoutParams = mChildOfContent.getLayoutParams();

}

private void possiblyResizeChildOfContent() {

int usableHeightNow = computeUsableHeight();

if (usableHeightNow != usableHeightPrevious) {

frameLayoutParams.height = usableHeightNow;

mChildOfContent.requestLayout();

usableHeightPrevious = usableHeightNow;

}

}

private int computeUsableHeight() {

Rect r = new Rect();

mChildOfContent.getWindowVisibleDisplayFrame(r);

return (r.bottom);

}

public static boolean checkDeviceHasNavigationBar(Context context) {

boolean hasNavigationBar = false;

Resources rs = context.getResources();

int id = rs.getIdentifier("config_showNavigationBar", "bool", "android");

if (id > 0) {

hasNavigationBar = rs.getBoolean(id);

}

try {

Class systemPropertiesClass = Class.forName("android.os.SystemProperties");

Method m = systemPropertiesClass.getMethod("get", String.class);

String navBarOverride = (String) m.invoke(systemPropertiesClass, "qemu.hw.mainkeys");

if ("1".equals(navBarOverride)) {

hasNavigationBar = false;

} else if ("0".equals(navBarOverride)) {

hasNavigationBar = true;

}

} catch (Exception e) {

}

return hasNavigationBar;

}

}

随后在activity的setContentView后调用即可

setContentView(R.layout.activity_main);

//适配虚拟按键

if (AndroidWorkaround.checkDeviceHasNavigationBar(this)) {

AndroidWorkaround.assistActivity(findViewById(android.R.id.content));

}

以上转载:/wuhongjie24/article/details/80987142的文章,自己项目中亲测有效,供各位码友参考。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。