码迷,mamicode.com
首页 > 其他好文 > 详细

Activity中ConfigChanges属性的用法

时间:2015-03-13 15:48:52      阅读:137      评论:0      收藏:0      [点我收藏+]

标签:

Activity中ConfigChanges属性的用法 - 综合讨论 - Android开发论坛 - 安卓开发论坛 - Android开发 - 安卓论坛 - 移动互联网门户 - Powered by Discuz!

通过设置这个属性可以使Activity捕捉设备状态变化,以下是可以被识别的内容:??



CONFIG_FONT_SCALE

CONFIG_MCC

CONFIG_MNC

CONFIG_LOCALE

CONFIG_TOUCHSCREEN

CONFIG_KEYBOARD

CONFIG_NAVIGATION

CONFIG_ORIENTATION



设置方法:将下列字段用“|”符号分隔开,例如:“locale|navigation|orientation”




Value:Description
mcc:The IMSI mobile country code (MCC) has changed — that is, a SIM hasbeen detected and updated the MCC.移动国家号码,由三位数字组成,每个国家都有自己独立的MCC,可以识别手机用户所属国家。
mnc:The IMSI mobile network code (MNC) has changed — that is, a SIM hasbeen detected and updated the MNC.移动网号,在一个国家或者地区中,用于区分手机用户的服务商
locale:The locale has changed — for example, the user has selected a new language that text should be displayed in.用户所在地区发生变化。
touchscreen:The touchscreen has changed. (This should never normally happen.)
keyboard:The keyboard type has changed — for example, the user has plugged in an external keyboard.键盘模式发生变化,例如:用户接入外部键盘输入。
keyboardHidden:The keyboard accessibility has changed — for example, the user has slid the keyboard out to expose it.用户打开手机硬件键盘
navigation:The navigation type has changed. (This should never normally happen.)
orientation:The screen orientation has changed — that is, the user has rotated the device.设备旋转,横向显示和竖向显示模式切换。
fontScale:The font scaling factor has changed — that is, the user has selected a new global font size.全局字体大小缩放发生改变





通过一个例子介绍这个属性的用法: 首先需要修改项目的manifest:


  1. <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  2. ? ?? ?package="com.androidres.ConfigChangedTesting"
  3. ? ?? ?android:versionCode="1"
  4. ? ?? ?android:versionName="1.0.0">
  5. ? ? <application android:icon="@drawable/icon" android:label="@string/app_name">
  6. ? ?? ???<activity android:name=".ConfigChangedTesting"
  7. ? ?? ?? ?? ?? ?? ?android:label="@string/app_name"
  8. ? ?? ?? ?? ?? ?? ?android:configChanges="keyboardHidden|orientation">
  9. ? ?? ?? ?? ?<intent-filter>
  10. ? ?? ?? ?? ?? ? <action android:name="android.intent.action.MAIN" />
  11. ? ?? ?? ?? ?? ? <category android:name="android.intent.category.LAUNCHER" />
  12. ? ?? ?? ?? ?</intent-filter>
  13. ? ?? ???</activity>
  14. ? ? </application>
  15. </manifest>

复制代码

  1. <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  2. ? ?? ?package="com.androidres.ConfigChangedTesting"
  3. ? ?? ?android:versionCode="1"
  4. ? ?? ?android:versionName="1.0.0">
  5. ? ? <application android:icon="@drawable/icon" android:label="@string/app_name">
  6. ? ?? ???<activity android:name=".ConfigChangedTesting"
  7. ? ?? ?? ?? ?? ?? ?android:label="@string/app_name"
  8. ? ?? ?? ?? ?? ?? ?android:configChanges="keyboardHidden|orientation">
  9. ? ?? ?? ?? ?<intent-filter>
  10. ? ?? ?? ?? ?? ? <action android:name="android.intent.action.MAIN" />
  11. ? ?? ?? ?? ?? ? <category android:name="android.intent.category.LAUNCHER" />
  12. ? ?? ?? ?? ?</intent-filter>
  13. ? ?? ???</activity>
  14. ? ? </application>
  15. </manifest>

复制代码

在Activity中添加了 android:configChanges属性,目的是当所指定属性(Configuration Changes)发生改变时,通知程序调用 onConfigurationChanged()函数。 创建一个Layout UI:




  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2. ? ? android:orientation="vertical"
  3. ? ? android:layout_width="fill_parent"
  4. ? ? android:layout_height="fill_parent"
  5. ? ? >
  6. <Button
  7. ? ?? ???android:id="@+id/pick"
  8. ? ? android:layout_width="fill_parent"
  9. ? ? android:layout_height="wrap_content"
  10. ? ? android:text="Pick"
  11. ? ? />
  12. <Button
  13. ? ?? ???android:id="@+id/view"
  14. ? ? android:layout_width="fill_parent"
  15. ? ? android:layout_height="wrap_content"
  16. ? ? android:text="View"
  17. ? ? />
  18. </LinearLayout>

复制代码

  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2. ? ? android:orientation="vertical"
  3. ? ? android:layout_width="fill_parent"
  4. ? ? android:layout_height="fill_parent"
  5. ? ? >
  6. <Button
  7. ? ?? ???android:id="@+id/pick"
  8. ? ? android:layout_width="fill_parent"
  9. ? ? android:layout_height="wrap_content"
  10. ? ? android:text="Pick"
  11. ? ? />
  12. <Button
  13. ? ?? ???android:id="@+id/view"
  14. ? ? android:layout_width="fill_parent"
  15. ? ? android:layout_height="wrap_content"
  16. ? ? android:text="View"
  17. ? ? />
  18. </LinearLayout>

复制代码

这个简单的UI包含两个按钮,其中一个是通过Contact列表选择一个联系人,另外一个是查看当前选择联系人的详细内容。



<ignore_js_op>

技术分享






项目的Java源代码:




  1. import android.app.Activity;??
  2. import android.content.Intent;??
  3. import android.content.res.Configuration;??
  4. import android.net.Uri;??
  5. import android.os.Bundle;??
  6. import android.provider.Contacts.People;??
  7. import android.view.View;??
  8. import android.widget.Button;??
  9. public class ConfigChangedTesting extends Activity {??
  10. ? ? /** Called when the activity is first created. */
  11. ? ? static final int PICK_REQUEST = 1337;??
  12. ? ? Button viewButton=null;??
  13. ? ? Uri contact = null;??
  14. ? ? @Override
  15. ? ? public void onCreate(Bundle savedInstanceState) {??
  16. ? ?? ???super.onCreate(savedInstanceState);??
  17. ? ?? ???//setContentView(R.layout.main);??
  18. ? ?? ???setupViews();??
  19. ? ? }??
  20. ? ? public void onConfigurationChanged(Configuration newConfig) {??
  21. ? ?? ?? ?? ?? ???super.onConfigurationChanged(newConfig);? ?
  22. ? ?? ?? ?? ?? ???setupViews();??
  23. ? ? }? ?
  24. ? ? /* (non-Javadoc)
  25. ? ???* @see android.app.Activity#onActivityResult(int, int, android.content.Intent)
  26. ? ???*/
  27. ? ? @Override
  28. ? ? protected void onActivityResult(int requestCode, int resultCode, Intent data) {??
  29. ? ?? ???// TODO Auto-generated method stub??
  30. ? ?? ???//super.onActivityResult(requestCode, resultCode, data);??
  31. ? ?? ???if(requestCode == PICK_REQUEST){??
  32. ? ?? ?? ?? ?if(resultCode==RESULT_OK){??
  33. ? ?? ?? ?? ?? ? contact = data.getData();??
  34. ? ?? ?? ?? ?? ? viewButton.setEnabled(true);??
  35. ? ?? ?? ?? ?}??
  36. ? ?? ???}??
  37. ? ? }??
  38. ? ? private void setupViews(){??
  39. ? ?? ???setContentView(R.layout.main);??
  40. ? ?? ???Button pickBtn = (Button)findViewById(R.id.pick);??
  41. ? ?? ???pickBtn.setOnClickListener(new View.OnClickListener(){??
  42. ? ?? ?? ?? ?public void onClick(View v) {??
  43. ? ?? ?? ?? ?? ? // TODO Auto-generated method stub??
  44. ? ?? ?? ?? ?? ? Intent i=new Intent(Intent.ACTION_PICK,People.CONTENT_URI);??
  45. ? ?? ?? ?? ?? ? startActivityForResult(i,PICK_REQUEST);??
  46. ? ?? ?? ?? ?}??
  47. ? ?? ???});??
  48. ? ?? ???viewButton =(Button)findViewById(R.id.view);? ?
  49. ? ?? ???viewButton.setOnClickListener(new View.OnClickListener() {??
  50. ? ?? ?? ?? ?? ?? ???public void onClick(View view) {??
  51. ? ?? ?? ?? ?? ?? ?? ?? ?startActivity(new Intent(Intent.ACTION_VIEW, contact));??
  52. ? ?? ?? ?? ?? ?? ???}??
  53. ? ?? ???});? ?
  54. ? ?? ???viewButton.setEnabled(contact!=null);??
  55. ? ? }??
  56. }

复制代码

Activity中ConfigChanges属性的用法

标签:

原文地址:http://www.cnblogs.com/seven1979/p/4335071.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!