隐藏虚拟按键,并且全屏

使用:
ScreenUtils.hideBottomUIMenu(getWindow().getDecorView());

 /*** 隐藏虚拟按键,并且全屏*/public static void hideBottomUIMenu(View view) {//隐藏虚拟按键,并且全屏if (Build.VERSION.SDK_INT > 11 && Build.VERSION.SDK_INT < 19) { // lower apiview.setSystemUiVisibility(View.GONE);} else if (Build.VERSION.SDK_INT >= 19) {//for new api versions.int uiOptions = View.SYSTEM_UI_FLAG_LAYOUT_STABLE| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION| View.SYSTEM_UI_FLAG_FULLSCREEN| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;view.setSystemUiVisibility(uiOptions);}}

获取配置

BaseApplication举例写法
第一个参数为:在自己的Application中传参进去;
第二个参数为:获取当前是测试服还是正式服;
如:UtilConfig.initUtilConfig(this, BuildConfig.DEBUG);

public class UtilConfig {private static Application application;public static boolean DEBUG = BuildConfig.DEBUG;public static void initUtilConfig(Application application, boolean isDebug) {UtilConfig.application = application;UtilConfig.DEBUG = isDebug;}public static Application getApplication() {return application;}
}

获取屏幕宽高

public static int getScreenWidth() {WindowManager wm = (WindowManager) UtilConfig.getApplication().getSystemService(Context.WINDOW_SERVICE);if (wm == null) return -1;Point point = new Point();if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {wm.getDefaultDisplay().getRealSize(point);} else {wm.getDefaultDisplay().getSize(point);}return point.x;}public static int getScreenHeight() {WindowManager wm = (WindowManager) UtilConfig.getApplication().getSystemService(Context.WINDOW_SERVICE);if (wm == null) return -1;Point point = new Point();if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {wm.getDefaultDisplay().getRealSize(point);} else {wm.getDefaultDisplay().getSize(point);}return point.y;}

判断是否是横屏

 return UtilConfig.getApplication().getResources().getConfiguration().orientation== Configuration.ORIENTATION_LANDSCAPE;

获取状态栏的高度

public static int getStatueBarHeight() {int height = DimenUtil.dp2px(22);try {int resourceId = WeApplication.getInstance().getResources().getIdentifier("status_bar_height", "dimen", "android");if (resourceId > 0) {height = WeApplication.getInstance().getResources().getDimensionPixelSize(resourceId);}} catch (Throwable e) {e.printStackTrace();}return height;}

关于软键盘的工具类

使用方法:

  • 显示:KeyboardUtils.show(edittext);
  • 隐藏:KeyboardUtils.hideSoftInput(edittext);
  • 将字符串复制到粘贴板:copyTextToClipboard
  • 软键盘显示时将view推上去:controlKeyboardLayout
public final class KeyboardUtils {private KeyboardUtils() {throw new UnsupportedOperationException("u can't instantiate me...");}//显示软键盘public static void show(View view) {MainHandlerUtil.postDelay(() -> {try {InputMethodManager imm =(InputMethodManager)ContextUtil.getActivity(view.getContext()).getSystemService(Context.INPUT_METHOD_SERVICE);if (imm != null) {imm.showSoftInput(view, InputMethodManager.SHOW_IMPLICIT);}} catch (Throwable e) {e.printStackTrace();}}, 150);}/*** Hide the soft input.** @param view The view.*/public static void hideSoftInput(@NonNull final View view) {InputMethodManager imm =(InputMethodManager) UtilConfig.getApplication().getSystemService(Context.INPUT_METHOD_SERVICE);if (imm == null) return;imm.hideSoftInputFromWindow(view.getWindowToken(), 0);}public static void copyTextToClipboard(String text) {ClipboardManager clipboardManager = (ClipboardManager) UtilConfig.getApplication().getSystemService(Context.CLIPBOARD_SERVICE);ClipData clipData = ClipData.newPlainText("Label", text);clipboardManager.setPrimaryClip(clipData);}/*** @param context      用于获取底部导航栏高度。* @param root         最外层布局* @param bottomView   可视区域的底部,即上移后的底层view*/public static void controlKeyboardLayout(Context context, final View root, final View bottomView) {final int navigationBarHeight = getNavigationBarHeight(context);root.getViewTreeObserver().addOnGlobalLayoutListener(() -> {Rect rect = new Rect();//获取root在窗体的可视区域root.getWindowVisibleDisplayFrame(rect);//获取root在窗体的不可视区域高度(被其他View遮挡的区域高度)int rootInvisibleHeight = root.getRootView().getHeight() - rect.bottom;//若不可视区域高度大于100,则键盘显示if (rootInvisibleHeight > navigationBarHeight) {int[] location = new int[2];//获取scrollToView在窗体的坐标bottomView.getLocationInWindow(location);//计算root滚动高度,使scrollToView在可见区域int scrollHeight = (location[1] + bottomView.getHeight()) - rect.bottom;if (root.getScrollY() != 0) {// 如果已经滚动,要根据上次滚动,重新计算位置。scrollHeight += root.getScrollY();}root.scrollTo(0, scrollHeight);} else {//键盘隐藏root.scrollTo(0, 0);}});}/*** 获取底部导航栏高度*/private static int getNavigationBarHeight(Context act) {Resources resources = act.getResources();int resourceId = resources.getIdentifier("navigation_bar_height", "dimen", "android");int height = resources.getDimensionPixelSize(resourceId);return height;}
}

Toast

public class ToastUtil {static Toast toast = null;private static Handler sHandler = new Handler(Looper.getMainLooper());public static void show(final String msg) {if ("".equals(msg) || msg == null) return;sHandler.post(new Runnable() {@Overridepublic void run() {try {// 因为9以上的系统不新建toast会不显示后续的toasttoast = Toast.makeText(UtilConfig.getApplication(), msg, Toast.LENGTH_SHORT);toast.show();} catch (Throwable e) {}}});}public static void show(@StringRes int resourceId) {show(UtilConfig.getApplication().getString(resourceId));}public static void show(final String msg, Object... args) {show(String.format(msg, args));}public static void show(@StringRes int resourceId, Object... args) {show(UtilConfig.getApplication().getString(resourceId), args);}public static void cancel() {sHandler.post(new Runnable() {@Overridepublic void run() {if (toast != null) {toast.cancel();}}});}}

Android常见公有方法(隐藏虚拟按键/隐藏软键盘/获取屏幕宽高等)相关推荐

  1. 安卓平板隐藏虚拟按键_实现安卓设备虚拟按键隐藏和显示的方法和系统的制作方法...

    实现安卓设备虚拟按键隐藏和显示的方法和系统的制作方法 [技术领域] [0001]本发明涉及移动终端显示技术领域,尤其涉及一种方便实现安卓设备虚拟按键隐藏和显示的方法和系统. [背景技术] [0002] ...

  2. 安卓 关于隐藏虚拟按键

    最近公司做了个游戏,是用cocos做的,用了安卓的壳子,没啥关于安卓的东西. 有个需求,就是隐藏虚拟按键 隐藏按键很简单 int uiOptions = View.SYSTEM_UI_FLAG_FUL ...

  3. Android 4.2虚拟按键背景透明,Android 4.0 隐藏虚拟按键(导航栏)的方法

    在Android4.0里,多了一些API,其中包括怎样隐藏虚拟按键(导航栏),这样编写游戏或一个视频播放器时,可以设置隐藏虚拟按键的参数,达到最佳效果,当然前提是使用的手机是有虚拟按键的,例如gala ...

  4. android4.0 去掉虚拟按键 教程,Android 4.0 隐藏虚拟按键(导航栏)的方法

    在Android4.0里,多了一些API,其中包括怎样隐藏虚拟按键(导航栏),这样编写游戏或一个视频播放器时,可以设置隐藏虚拟按键的参数,达到最佳效果,当然前提是使用的手机是有虚拟按键的,如下图所示下 ...

  5. java屏蔽虚拟按键代码_Android 中隐藏虚拟按键的方法实例代码

    下面通过一段代码给大家讲解android 隐藏虚拟按键的方法,废话不多说了,大家多多看看代码和注释吧,具体代码如下所示: /** * 隐藏虚拟按键,并且全屏 */ protected void hid ...

  6. Android 虚拟按键隐藏或显示之后共享元素动画异常解决方案

    背景 本篇算是共享元素的第三篇文章.主要还是因为第一篇才会衍生出来了第二篇和第三篇文章,后两篇均属于bug的分析和解决. 1.Android 仿微信朋友圈图片拖拽返回 2.Android 共享元素动画 ...

  7. android系统定制开发动态显示隐藏虚拟按键虚拟导航Navigationbar

    新需求:删除Android 原生自带的虚拟导航按键(暂定) 如想直接删除不显示Navigationbar,可以用如下两个方法 1)在资源xml文件中把导航按键的高度和宽度设置为0 frameworks ...

  8. Android:解决华为手机隐藏虚拟按键Activity被重新创建的问题

    解决华为手机隐藏虚拟按键Activity被重新创建的问题 问题描述 解决方法 分析 问题描述 在华为手机P9上 屏幕底部虚拟按键用户可以随时隐藏或显示,在改变后 返回上一页,会导致页面重新创建,页面操 ...

  9. Android 隐藏虚拟按键

    Android 隐藏虚拟按键 领导要求: 横屏播放视频时,不展示虚拟按键: 恢复到竖屏时,展示虚拟按键: /*** NavigationBar 显示与隐藏*/ public class Navigat ...

最新文章

  1. 学python是看书还是看视频-自学Python是看书还是看视频?
  2. c 语言贪心钓鱼思路,2020届九年级中考语文复习教案:第4讲现代文阅读之概括(27页)-原创力文档...
  3. 如何使用 Mmcv.exe 工具来管理群集消息队列资源[转]
  4. gdal进行遥感影像读写_如何使用遥感影像进行矿物勘探
  5. Linux系统:软链接与硬链接的原理分析
  6. SQL Server 2008修改数据库为多用户模式
  7. Ros学习——launch文件解析
  8. 翁恺老师C语言学习笔记(九)数组的运算
  9. Python之split()函数
  10. Shader 学习笔记:水面
  11. ubuntu出现qt.qpa.plugin报错
  12. 计算机硕士毕业论文范文,计算机论文:精选计算机硕士毕业论文范文十篇.docx...
  13. java fastmethod_Java FastMath.cbrt方法代码示例
  14. IP地址的划分-------IP地址的借位情况
  15. java的方法decompress_Java LZ4SafeDecompressor.decompress方法代码示例
  16. 《转》前端开发面试题
  17. Bert算法:语言模型-BERT详细介绍
  18. 如何选定搭建个人独立博客工具
  19. 2020年数学建模国赛B题解题思路
  20. 弹性盒模型 Flex

热门文章

  1. Win10多台电脑时间自动同步
  2. 细胞亚器互作综述解读~~~The secret conversations inside cells
  3. 【IT情感】关于专业、理想和工作的认知
  4. 计算机图形学四:着色-Shading
  5. ceph mds启动流程
  6. bzoj1127: [POI2008]KUP
  7. xmind各版本区别_思维导图工具 XMind 出了一个高颜值版:XMind ZEN
  8. Localization-Aware Active Learning for Object Detection (ACCV)
  9. 图形渲染——伽马矫正
  10. 三色球问题python_面试题-三色球问题