Android的Configuration类

1.Configuration类专门用来描述Android设备的配置信息。

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;
	@Override
	protected 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() {
			@Override
			public void onClick(View view) {
				// TODO Auto-generated method stub
				// get Configuration info
				Configuration config = getResources().getConfiguration();
				Log.d("zmq", "orientation=" + config.orientation);
				// current orientation is LANDSCAPE,then set to PORTRAIT
				if (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 LANDSCAPE
				else if (config.orientation == Configuration.ORIENTATION_PORTRAIT) {
					Log.d("zmq", "change PORTRAIT to LANDSCAPE");
					MainActivity.this
							.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
				}
			}
		});
	}
	@Override
	public void onConfigurationChanged(Configuration newConfig) {
		// TODO Auto-generated method stub
		super.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>
@Override
	public void onConfigurationChanged(Configuration newConfig) {
		// TODO Auto-generated method stub
		super.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。






Android Studio配置 Android Studio是一款由Google开发的集成开发环境(IDE),用于开发Android应用程序。在使用Android Studio之前,需要进行一些配置,以确保它能够正常工作。 首先,需要安装Java开发工具包(JDK)。Android Studio需要JDK 8或更高版本才能运行。可以从Oracle官网下载并安装JDK。 其次,需要下载并安装Android Studio。可以从官网下载最新版本的Android Studio,并按照安装向导进行安装。 安装完成后,需要配置Android Studio。首先,需要设置Android SDK的路径。Android SDK是一组开发工具,包括Android平台、SDK工具和其他组件,用于开发Android应用程序。可以在安装Android Studio时选择安装Android SDK,或者在后续安装过程中安装它。在Android Studio中,可以通过“File”菜单中的“Project Structure”选项来设置Android SDK的路径。 另外,还需要配置Android虚拟设备(AVD)。AVD是一种模拟Android设备的工具,用于在开发和测试应用程序时模拟不同的设备和操作系统版本。可以在Android Studio中通过“Tools”菜单中的“AVD Manager”选项来创建和管理AVD。 最后,还需要配置Gradle。Gradle是一种构建工具,用于构建和打包Android应用程序。在Android Studio中,默认使用Gradle构建工具。可以在“File”菜单中的“Settings”选项中配置Gradle。 以上就是Android Studio的配置过程。配置完成后,就可以开始使用Android Studio开发Android应用程序了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值