网站首页
手机版

响应系统设置的事件(Configuration类)

更新时间:2024-06-07 01:18作者:小乐

给大家介绍的Configuration类是用来描述手机设备的配置信息的,比如屏幕方向、触摸屏触摸方式等。相信定制过ROM的朋友应该知道,我们可以使用:框架/base/core/java/android/content/res/Configuration.java 找到这个类,然后更改相关设置,比如调整默认字体大小!有兴趣的话可以自己去了解一下! Configuration类的使用在我们的Android开发中本节讲解~API文档:Configuration

1.Configuration为我们提供了方法列表

DensityDpi:屏幕密度fontScale:当前用户设置的字体的缩放系数HardKeyboardHidden:确定硬键盘是否可见。有两个可选值:HARDKEYBOARDHIDDEN_NO、HARDKEYBOARDHIDDEN_YES,分别为十六进制0和1keyboard:获取当前关联的键盘类型:该属性的返回值:KEYBOARD_12KEY(只有12个键的小键盘)、KEYBOARD_NOKEYS、KEYBOARD_QWERTY(普通键盘)keyboardHidden:这个属性返回一个布尔值来标识当前键盘是否可用。该属性不仅决定了系统的硬件键盘,还决定了系统的软键盘(位于屏幕上)。 locale:获取用户当前所在地区mcc:获取手机信号的国家代码mnc:获取手机信号的网络代码ps: 国家代码和网络代码共同确定当前手机网络运营商navigation:确定手机上导航设备的类型系统。该属性的返回值:NAVIGATION_NONAV(无导航)、NAVIGATION_DPAD(DPAD 导航) NAVIGATION_TRACKBALL(轨迹球导航)、NAVIGATION_WHEEL(滚轮导航)orientation:获取系统屏幕的方向。该属性的返回值:ORIENTATION_LANDSCAPE(水平屏幕)、ORIENTATION_PORTRAIT(垂直屏幕) screenHeightDp、screenWidthDp:屏幕的可用高度和宽度,以dp表示touchscreen:获取系统触摸屏的触摸模式。该属性的返回值:TOUCHSCREEN_NOTOUCH(无触摸屏)、TOUCHSCREEN_STYLUS(手写笔触摸屏)、TOUCHSCREEN_FINGER(接受手指的触摸屏) 2、写一个简单的例子来测试:

运行截图:

代码:

公共类MainActivity 扩展AppCompatActivity {

@覆盖

protected void onCreate(Bundle savingInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

TextView txtResult=(TextView) findViewById(R.id.txtResult);

StringBuffer 状态=new StringBuffer();

//获取系统的Configuration对象

配置cfg=getResources().getConfiguration();

//检查你想检查的内容

status.append(\'密度Dpi:\' + cfg.密度Dpi + \'\n\');

status.append(\'fontScale:\' + cfg.fontScale + \'\n\');

status.append(\'hardKeyboardHidden:\' + cfg.hardKeyboardHidden + \'\n\');

status.append(\'keyboard:\' + cfg.keyboard + \'\n\');

status.append(\'keyboardHidden:\' + cfg.keyboardHidden + \'\n\');

status.append(\'locale:\' + cfg.locale + \'\n\');

status.append(\'mcc:\' + cfg.mcc + \'\n\');

status.append(\'mnc:\' + cfg.mnc + \'\n\');

status.append(\'navigation:\' + cfg.navigation + \'\n\');

status.append(\'navigationHidden:\' + cfg.navigationHidden + \'\n\');

status.append(\'orientation:\' + cfg.orientation + \'\n\');

status.append(\'screenHeightDp:\' + cfg.screenHeightDp + \'\n\');

status.append(\'screenWidthDp:\' + cfg.screenWidthDp + \'\n\');

status.append(\'screenLayout:\' + cfg.screenLayout + \'\n\');

status.append(\'smallestScreenWidthDp:\' + cfg.密度Dpi + \'\n\');

status.append(\'touchscreen:\' + cfg.密度Dpi + \'\n\');

status.append(\'uiMode:\' + cfg.密度Dpi + \'\n\');

txtResult.setText(status.toString());

}

}

3.重写onConfigurationChanged以响应系统设置更改

该方法用于监视系统设置的变化。它是一种基于回调的时间处理方法。当系统设置改变时会自动触发;但请注意,如果使用下面的方法进行监控,targetSdkVersion属性最多只能设置为12,如果高于12,该方法将不会被激活!下面是横竖屏切换的例子,供大家参考。其他信息大家可以Google一下~

代码示例:一个简单的按钮,点击横竖屏切换,然后Toast提示

操作效果图:

实现代码:

公共类MainActivity 扩展Activity {

@覆盖

protected void onCreate(Bundle savingInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

按钮btn=(按钮) findViewById(R.id.btncahange);

btn.setOnClickListener(new OnClickListener() {

@覆盖

公共无效onClick(查看v){

配置config=getResources().getConfiguration();

//如果是横屏,则切换为竖屏

if(config.orientation==Configuration.ORIENTATION_LANDSCAPE)

{

MainActivity.this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

}

//如果屏幕是竖屏,则切换为横屏

if(config.orientation==Configuration.ORIENTATION_PORTRAIT)

{

MainActivity.this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

}

}

});

}

@覆盖

公共无效onConfigurationChanged(配置newConfig){

super.onConfigurationChanged(newConfig);

String screen=newConfig.orientation==Configuration.ORIENTATION_LANDSCAPE \'横屏\':\'竖屏\';

Toast.makeText(MainActivity.this, \'系统屏幕方向已改变\n修改后的方向为\' + screen, Toast.LENGTH_SHORT).show();

}

}

另外,还需要在AndroidManifest.xml中添加以下内容:

Permission :uses-permission android:name=\'android.permission.CHANGE_CONFIGURATION\'/在activity标签中添加:android:configChanges=\'orientation\'并将targetSdkVersion更改为12或以上,12也可以

本节小结:

本节向您解释:Configuration类和onConfigurationChanged响应系统设置的更改。大家可以有一个大概的了解。以后用的话我们会继续深入研究~

为您推荐

密歇根州立大学相当于中国什么等级的大学?(密歇根州立大学相当于几本)

密歇根州立大学(Michigan State University),简称MSU,成立于1855年的,坐落在美国密歇根州东兰辛市,是一所世界一流的公立研究型大学,是北美顶尖大学学术联盟美国大学协会(AAU)的成员之一,被誉为“公立常青藤”大

2024-06-07 01:18

一步到位!密歇根州立大学,高考后的最佳选择(密歇根州立大学是野鸡大学吗)

密歇根州立大学概述密歇根州立大学(Michigan State University),或译为密西根州立大学,简称MSU,成立于1855年,坐落在美国密歇根州东兰辛市,是一所世界一流的公立研究型大学,是北美顶尖大学学术联盟美国大学协会(AA

2024-06-07 01:17

航电GNSS增强系统在民航中的应用

航空运输量的快速增长使空域资源变得十分紧张,如北京首都国际机场每日航班进出港数量在1400架次左右,已经接近饱和。同时,其他航空器飞行任务也在不断增长,使得原本紧张的空域变得更加拥堵。国际民航组织(ICAO)与各缔约国和有关国际组织共同致力

2024-06-07 01:17

又是“一箭双星”!这次,它们带上了“国际搜救黑匣子”

9月19日22时07分,我国在西昌卫星发射中心用长征三号乙运载火箭(及远征一号上面级),以“一箭双星”方式成功发射第三十七、三十八颗北斗导航卫星。首次装载国际搜救组织标准设备卫星经过3个多小时的飞行后顺利进入预定轨道,后续将进行测试与试验评

2024-06-07 01:16

150美元成本,实力可掏空在线扑克公司!AI玩多人德扑击败顶级玩家

人工智能终于开始掌握人性中一些独特的能力,并且比它的老师玩得还好。要想在扑克中获胜,就需要利用这样一项能力:狡猾。为了获胜,玩家必须分析对手如何出牌,然后欺骗他们交出手中的筹码。当然,这种狡诈对人来说很自然。现在,人工智能程序首次表现出能够

2024-06-07 01:16

什么是区域卫星导航系统(IRNSS区域卫星导航系统)

区域卫星导航系统仅可在一定区域内实现导航定位。如我国的北斗一号卫星导航系统,其作用范围为我国国土范围和周边地区。目前,国内外已经建成或正在建设的区域卫星导航系统有日本的准天顶卫星服务系统(QZSS)和印度的区域卫星导航系统(IRNSS).以

2024-06-07 01:15

加载中...