十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
这篇文章将为大家详细讲解有关Android中如何实现虚拟导航键的显示隐藏功能,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
专注于为中小企业提供成都网站制作、网站建设服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业东宁免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了1000多家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
代码如下:
package test.lb.com.myapplication; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.Button; public class MainActivity extends Activity implements View.OnClickListener{ boolean isnight = false; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button nightbutton = (Button) findViewById(R.id.nightbutton); Button hidebutton = (Button) findViewById(R.id.hidenav); Button fullbutton = (Button) findViewById(R.id.full); Button fullonly = (Button) findViewById(R.id.fullonly); nightbutton.setOnClickListener(this); hidebutton.setOnClickListener(this); fullbutton.setOnClickListener(this); fullonly.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()){ case R.id.nightbutton: if (isnight){ v.setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE); }else{ //夜间模式,系统控件颜色会变暗 v.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE); } isnight = !isnight; break; case R.id.hidenav: //隐藏虚拟按键,点击又会重新出现 v.setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION); break; case R.id.full: //在隐藏显示系统控件的过程中不会来移动我们的控件 v.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE| //隐藏系统状态栏,如果设置了Window.FEATURE_ACTION_BAR_OVERLY同时隐藏Actionbar View.SYSTEM_UI_FLAG_FULLSCREEN| //这个会隐藏屏幕上的所有系统控件 View.SYSTEM_UI_FLAG_HIDE_NAVIGATION); break; case R.id.fullonly: v.setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN); } } }
关键代码部分其实已经在上方了,现在来说说几个FLAG:
1.View.SYSTEM_UI_FLAG_LOW_PROFILE 这个Flag设置之后你会发现整个屏幕中的系统控件部分的背景包括控件本身的会变暗或者消失,比如状态栏中的某些图标,但这个只是系统状态栏、虚拟按键等进入夜间模式,app内部的控件并不会进入夜间模式,这个以后有时间再研究怎么在应用内部实现夜间模式。
2.View.SYSTEM_UI_FLAG_HIDE_NAVIGATION,设置这个Flag可以是虚拟按键进行动态的显示和隐藏,因为虚拟按键会占用屏幕控件,所以虚拟按键的显示和隐藏可能会影响到你的控件在当前界面中的位置,这个时候你可能需要设置另外一个FLAG,这个FLAG就是View.SYSTEM_UI_FLAG_LAYOUT_STABLE,设置这个FLAG会是你的控件不在受虚拟按键显示或隐藏的影响。
3.View.SYSTEM_UI_FLAG_FULLSCREEN,这个Flag应该是大家比较常用的一个Flag,设置之后会屏蔽掉状态栏等控件使你的界面全屏显示(不会隐藏虚拟按键),但是如果有actionbar和activitytitle等相关内容存在,这些依旧还会显示,如果设置了Window.FEATURE_ACTION_BAR_OVERLY,在隐藏状态栏的同时,则会将actionbar也一起隐藏,如果要隐藏title则需要设置Window.FEATURE_NO_TITLE
如何在带有实体按键的情况下调出虚拟按键
1.通过修改build.prop调出虚拟按键,其路径在system/下,在其中找到build.prop打开可以看到qemu.hw.mainkeys=1 或者qemu.hw.mainkeys= 0,当qemu.hw.mainkeys=1时实体键盘起效,qemu.hw.mainkeys=0时,显示虚拟键盘,此时点击实体键盘不起作用。
关于“Android中如何实现虚拟导航键的显示隐藏功能”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。