Android的Configuration类
来源:互联网 发布:淘宝店铺转让风险 编辑:程序博客网 时间:2024/06/02 00:24
1.Configuration类专门用来描述Android设备的配置信息。
5.在各个属性改变的时候,会重新跑Activity的生命周期函数,即Activity会重新启动。
主意:在configChanges属性中,需要加上screenSize,否则还是会重启Activity。
2.获得Configuration类对象
Configuration config = getResources().getConfiguration();
3.各种属性介绍
(1)fontScale:字体的缩放因子
(2)keyboard:键盘类型
(3)keyboardHidden:键盘是否可用,true为不可用,false为可用。当所有的键盘(软键盘&硬件键盘)都不可用才返回true。
(4)locale:语言(本地环境)。具体的要靠理解。setting中设置语言会导致local改变。
(5)mcc:国家码
(6)mnc:网络码
(7)navigation:导航类型
(8)orientation:屏幕方向
(9)touchscreen:触摸方式
4.使用实例获得各种属性
public class MainActivity extends Activity {private TextView fontScaleTv = null;private TextView keyboardTv = null;private TextView keyboardHiddenTv = null;private TextView localeTv = null;private TextView mccTv = null;private TextView mncTv = null;private TextView navigationTv = null;private TextView orientationTv = null;private TextView touchscreenTv = null;private Button changeOrientation = null;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Log.d("zmq", "MainActivty onCreate");findView();Configuration config = getResources().getConfiguration();fontScaleTv.setText("字体缩放:" + config.fontScale);keyboardTv.setText("键盘:" + config.keyboard);keyboardHiddenTv.setText("键盘是否可用:" + config.keyboardHidden);localeTv.setText("语言:" + config.locale);mccTv.setText("国家码:" + config.mcc);mncTv.setText("网络码:" + config.mnc);navigationTv.setText("导航类型:" + config.navigation);orientationTv.setText("屏幕方向:" + config.orientation);touchscreenTv.setText("触摸方式:" + config.touchscreen);}private void findView() {fontScaleTv = (TextView) findViewById(R.id.fontScaleTv);keyboardTv = (TextView) findViewById(R.id.keyboardTv);keyboardHiddenTv = (TextView) findViewById(R.id.keyboardHiddenTv);localeTv = (TextView) findViewById(R.id.localeTv);mccTv = (TextView) findViewById(R.id.mccTv);mncTv = (TextView) findViewById(R.id.mncTv);navigationTv = (TextView) findViewById(R.id.navigationTv);orientationTv = (TextView) findViewById(R.id.orientationTv);touchscreenTv = (TextView) findViewById(R.id.touchscreenTv);changeOrientation = (Button) findViewById(R.id.changeOrientation);changeOrientation.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {// TODO Auto-generated method stub// get Configuration infoConfiguration config = getResources().getConfiguration();Log.d("zmq", "orientation=" + config.orientation);// current orientation is LANDSCAPE,then set to PORTRAITif (config.orientation == Configuration.ORIENTATION_LANDSCAPE) {Log.d("zmq", "change LANDSCAPE to PORTRAIT");MainActivity.this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);}// current orientation is PORTRAIT,then set to LANDSCAPEelse if (config.orientation == Configuration.ORIENTATION_PORTRAIT) {Log.d("zmq", "change PORTRAIT to LANDSCAPE");MainActivity.this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);}}});}@Overridepublic void onConfigurationChanged(Configuration newConfig) {// TODO Auto-generated method stubsuper.onConfigurationChanged(newConfig);String orientation = newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE ? "横屏": "竖屏";Toast.makeText(MainActivity.this, "orientation", Toast.LENGTH_SHORT).show();}}
<activity android:name="com.zmq.configuration.MainActivity" android:label="@string/app_name" android:configChanges="orientation"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>当改变orientation的时候,会触发onConfigurationChanged函数运行(在Android中配置configChanges属性,如果没有配置这个属性,不会触发onConfigurationChanged函数运行)。(系统属性变化时,会触发此函数回调)
点击按钮:
会重新跑onCreate函数:
5.在各个属性改变的时候,会重新跑Activity的生命周期函数,即Activity会重新启动。
要想使Activity 不重新启动,则需要:
在Manifest文件中,使用android:configChanges属性,并且可以在Activity中重写onConfigurationChanged()方法。
例如,改变orientation:
<activity android:name="com.zmq.configuration.MainActivity" android:label="@string/app_name" android:configChanges="orientation|screenSize"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>
@Overridepublic void onConfigurationChanged(Configuration newConfig) {// TODO Auto-generated method stubsuper.onConfigurationChanged(newConfig);Log.d("zmq", "onConfigurationChanged");String orientation = newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE ? "横屏": "竖屏";Toast.makeText(MainActivity.this, "orientation:"+orientation, Toast.LENGTH_SHORT).show();}
主意:在configChanges属性中,需要加上screenSize,否则还是会重启Activity。
locale的时候要加上layoutDirection。
0 0
- Android的Configuration类
- Android的Configuration
- hibernate 的Configuration类
- hibernate的Configuration类
- Configuration类的用法
- Android中Configuration类简介
- Android当中Configuration类简介
- android Configuration
- android Configuration
- Android Configuration
- Android屏幕旋转和Configuration的使用
- Android基础入门教程——3.6 响应系统设置的事件(Configuration类)
- Configuration类
- Configuration类
- Configuration类
- Hadoop的Configuration类冲突问题
- Hibernate中的Configuration类的使用
- Hadoop Configuration配置类的分析
- ZooKeeper - O'Reilly Media ---- Zookeeper Internals (4)
- 智能算法——PageRank
- 堆排序
- 关于逻辑回归
- UI基础----常见控件的使用之EditText
- Android的Configuration类
- HDU 3483 A Very Simple Problem
- QT快捷键
- CopyOnWriteArraySet<E>和CopyOnWriteArrayList<E>
- IT 架构和应用程序的端到端测试
- 对梯度下降法的简单理解
- 设计功能和界面测试用例
- oldssoj2668Bombing plan(树形dp)
- Space is not allowed after parameter prefix ':' MySQL异常