Activity中ConfigChanges属性的用法

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>

1.jpg (11.7 KB, 下载次数: 12)

下载附件

?保存到相册

2011-10-25 00:03 上传

?

项目的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. }

复制代码

时间: 2024-11-10 03:49:54

Activity中ConfigChanges属性的用法的相关文章

XCODE UITextField 中的属性和用法

XCODE  UITextField  中的属性和用法 一些基本的用法 UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect]; CGRect frame =CGRectMake(110, 100, 100, 30); button.frame = frame; button.backgroundColor = [UIColor purpleColor]; [button setTitle:@"command&qu

css3中font-face属性的用法详解

@font-face是CSS3中的一个模块,他主要是把自己定义的Web字体嵌入到你的网页中,随着@font-face模块的出现,我们在Web的开发中使用字体不怕只能使用Web安全字体,你们当中或许有许多人会不自然的问,这样的东西IE能支持吗?当我告诉大家@font-face这个功能早在IE4就支持了你肯定会感到惊讶.我的Blog就使用了许多这样的自定义Web字体,比如说首页的Logo,Tags以及页面中的手写英文体,很多朋友问我如何使用,能让自己的页面也支持这样的自定义字体,一句话这些都是@fo

C# DataTable.DefaultView.Sort 排序方法 DataTable合并 DataTable中Merge属性的用法

排序 DataTable.DefaultView.Sort ="ID ASC"" DataTable进行合并1(必须相同结构DataTable)  DataTable中Merge属性 两个DataTable进行合并,最初测试使用DataTable的Merge方法直接合并读取,一个是两边接收的数据类型有很多不致,一个是感觉这个太简单了.所以在程序总报类型错误的时,我舍弃了这种方法取而代之的是从两个DataTable里面读值分别进行判断显示. DataTable  oldData

webpack中output配置项中chunkFilename属性的用法

chunkFilename和webpack.optimize.CommonsChunkPlugin插件的作用差不多,都是用来将公共模块提取出来,但是用法不一样,这里主要介绍chunkFilename的使用 entry:{ main:__dirname + '/app/main.js', index:__dirname + '/app/index.js' }, output:{ path:__dirname + '/public', //通过HtmlWebpackPlugin插件生成的html文件

css中filter属性的用法

转:http://www.cr173.com/html/7817_1.html filter:filtername(parameters)即 filter:滤镜名(参数) 其中,filter是滤镜选择符:filtername是滤镜的属性名,这里包括alpha.blur.chroma等 多种属性:parameters是属性参数值.属性名及参数值请看下面的<filter属性及属性值>. alpha:设置透明层次 blur:创建高速度移动效果,即模糊效果 chroma:制作专用颜色透明 DropSh

Vue中is属性的用法 可以动态切换组件

is 是组件的一个属性,用来展示组件的名称 is和component联用哈 <component :is="comName"> vue提供了component来展示对应的组件名称 compont是一个占位符,is这个属性,用来展示对应的组件名称 三个子组件 <template> <div> <h2>我是登录组件</h2> </div> </template> <template> <d

HTML 中mailto属性的用法浅析

近来,小码哥有点小闲啊,因此,也就没有想更新的内容了!希望光顾过俺博客的"yin民"不要吐槽我啊,,,,, 不过,今天小码哥用到了一个对我来说相对陌生的HTML属性,就是mailto属性,说是属性吧,也不完全正确.因为它是作为href属性值得前缀来用的. 其大概功能就是会给某个邮箱地址添加上一个点击效果,点击邮箱地址后,会直接跳转到或进入到电脑上某个邮箱软件.方便用户更快捷的.无误的发送邮件! 废话不多说了,直接上实例吧! HTML结构: <!doctype html> &

转-Activity中使用orientation属性讲解及需注意的问题

http://www.software8.co/wzjs/yidongkaifa/6504.html 今天遇到了一个关于orientation的问题查了点资料记录一下,只有点点滴滴的积累,才能让我们更加强壮,如有谬误欢迎大家批评指正 在Android默认情况,当“屏幕方向”或“键盘显示隐藏”变化时都会销毁当前Activity,创建新的Activity. 如果不希望重新创建 Activity实例,可以在AndroidManifest.xml中配置Activity: <activity androi

Activity中使用orientation属性讲解及需注意的问题

不积跬步,无以至千里:不积小流,无以成江海.骐骥一跃,不能十步,驽马十驾,功在不舍.---------荀子<劝学篇> 今天遇到了一个关于orientation的问题查了点资料记录一下,只有点点滴滴的积累,才能让我们更加强壮,如有谬误欢迎大家批评指正 在Android默认情况,当"屏幕方向"或"键盘显示隐藏"变化时都会销毁当前Activity,创建新的Activity.如果不希望重新创建Activity实例,可以在AndroidManifest.xml中配