文档章节

android Configuration系统设置

张林思密达
 张林思密达
发布于 2015/08/19 17:05
字数 821
阅读 1166
收藏 7

Configuration类是专门用来描述手机设备上的配置信息。这些配置信息包括用户特定的配置项,也包括系统的动态设备配置。

程序中可调用Activity的如下方法来获取Configuration对象

//获取系统的Configuration对象
Configuration cfg = getResources().getConfiguration();

其中以下的参数代表的配置信息

fontScale:获取当前用户设置的字体的缩放因子。

keyboard:获取当前设备所关联的键盘类型。该属性的返回值:KEYBOARD_12KEY(只有12个键的小键盘)、KEYBOARD_NOKEYS、KEYBOARD_QWERTY(普通键盘)

keyboardHidden:该属性返回一个boolean值用于标识当前键盘是否可用。该属性不仅会判断系统的硬件键盘,也会判断系统的软键盘(位于屏幕)。

locale:获取用户当前的Locale.

mcc:获取移动信号的国家码

mnc:获取移动信号的网络码

navigation:判断系统上方向导航设备的类型。该属性的返回值:NAVIGATION_NONAV(无导航)、NAVIGATION_DPAD(DPAD导航)

、NAVIGATION_TRACKBALL(轨迹球导航)、NAVIGATION_WHEEL(滚轮导航)

orientation:获取系统屏幕的方向。该属性的返回值:ORIENTATION_LANDSCAPE(横向屏幕)、ORIENTATION_PORTRAIT(竖向屏幕)

touchscreen:获取系统触摸屏的触摸方式。该属性的返回值:TOUCHSCREEN_NOTOUCH(无触摸屏)、TOUCHSCREEN_STYLUS(触摸笔式触摸屏)、

TOUCHSCREEN_FINGER(接收手指的触摸屏)

案例:获取手机系统的设备状态

XML代码:

[html] view plaincopy在CODE上查看代码片派生到我的代码片

  1. <?xml version="1.0" encoding="UTF-8"?>  

  2. <LinearLayout  

  3.     android:layout_width="match_parent"  

  4.     android:layout_height="match_parent"  

  5.     android:orientation="vertical"  

  6.     xmlns:android="http://schemas.android.com/apk/res/android">  

  7.       

  8.     <EditText   

  9.         android:id="@+id/conori"  

  10.         android:layout_width="match_parent"  

  11.         android:layout_height="wrap_content"  

  12.         />  

  13.     <EditText   

  14.         android:id="@+id/connavigation"  

  15.         android:layout_width="match_parent"  

  16.         android:layout_height="wrap_content"  

  17.         />  

  18.     <EditText   

  19.         android:id="@+id/contouch"  

  20.         android:layout_width="match_parent"  

  21.         android:layout_height="wrap_content"  

  22.         />  

  23.     <EditText   

  24.         android:id="@+id/conmnc"  

  25.         android:layout_width="match_parent"  

  26.         android:layout_height="wrap_content"  

  27.         />  

  28.   

  29.     <Button  

  30.         android:id="@+id/conbu"  

  31.         android:layout_width="wrap_content"  

  32.         android:layout_height="wrap_content"   

  33.         android:layout_marginLeft="70dp"  

  34.         android:text="获取手机信息"  

  35.         />  

  36.   

  37. </LinearLayout>  

Java代码:

[html] view plaincopy在CODE上查看代码片派生到我的代码片

  1. package com.demo.configuration;  

  2.   

  3.   

  4. import com.example.demo.R;  

  5.   

  6. import android.app.Activity;  

  7. import android.content.res.Configuration;  

  8. import android.os.Bundle;  

  9. import android.view.View;  

  10. import android.view.View.OnClickListener;  

  11. import android.widget.Button;  

  12. import android.widget.EditText;  

  13.   

  14. public class configurationTest extends Activity{  

  15.     private EditText ori;  

  16.     private EditText navigation;  

  17.     private EditText touch;  

  18.     private EditText mnc;  

  19.     private Button bn;  

  20.     @Override  

  21.     protected void onCreate(Bundle savedInstanceState) {  

  22.         super.onCreate(savedInstanceState);  

  23.         setContentView(R.layout.configurationtest);  

  24.         //获取应用界面中的界面组件  

  25.         ori = (EditText)findViewById(R.id.conori);  

  26.         navigation = (EditText)findViewById(R.id.connavigation);  

  27.         touch = (EditText)findViewById(R.id.contouch);  

  28.         mnc = (EditText)findViewById(R.id.conmnc);  

  29.         bn = (Button)findViewById(R.id.conbu);  

  30.         bn.setOnClickListener(new OnClickListener(){  

  31.   

  32.             @Override  

  33.             public void onClick(View v) {  

  34.                 // TODO Auto-generated method stub  

  35.                 //获取系统的Configuration对象  

  36.                 Configuration cfg = getResources().getConfiguration();  

  37.                 String screen = cfg.orientation == Configuration.ORIENTATION_LANDSCAPE ? "横向屏幕" : "竖向屏幕";  

  38.                 ori.setText(screen);  

  39.                 String mncCode = cfg.mcc + "";  

  40.                 mnc.setText(mncCode);  

  41.                 String naviName = cfg.orientation == Configuration.NAVIGATION_NONAV  

  42.                 ? "没有方向控制" : cfg.orientation == Configuration.NAVIGATION_WHEEL  

  43.                         ? "滚轮方向控制" : cfg.orientation == Configuration.NAVIGATION_DPAD  

  44.                                 ? "方向键控制方向" : "轨迹球控制方向";  

  45.                 navigation.setText(naviName);  

  46.                 String touchName = cfg.touchscreen == Configuration.TOUCHSCREEN_NOTOUCH  

  47.                 ? "无触摸屏" : cfg.touchscreen == Configuration.TOUCHSCREEN_STYLUS  

  48.                         ? "触摸笔式触摸屏" : "接收手指的触摸屏";  

  49.                 touch.setText(touchName);  

  50.             }});  

  51.     }  

  52. }  


如果程序需要监听系统设置的更改,可以考虑重写Activity的onConfigurationChanged方法,该方法时一个基于回调的事件处理方法.

下面案例:点击按钮改变系统屏幕的方向

[html] view plaincopy在CODE上查看代码片派生到我的代码片

  1. public class changeCfg extends Activity{  

  2.     private Button bu1;  

  3.     @Override  

  4.     protected void onCreate(Bundle savedInstanceState) {  

  5.         super.onCreate(savedInstanceState);  

  6.         setContentView(R.layout.changcfg);  

  7.         bu1 = (Button)findViewById(R.id.changcfgbu);  

  8.         bu1.setOnClickListener(new OnClickListener(){  

  9.   

  10.             @Override  

  11.             public void onClick(View v) {  

  12.                 // TODO Auto-generated method stub  

  13.                 Configuration config = getResources().getConfiguration();  

  14.                 //如果当前为横屏  

  15.                 if(config.orientation == Configuration.ORIENTATION_LANDSCAPE){  

  16.                     //设置为竖屏  

  17.                     changeCfg.this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);  

  18.                 }  

  19.                 //如果当前为竖屏  

  20.                 if(config.orientation == Configuration.ORIENTATION_PORTRAIT){  

  21.                     //设置为横屏  

  22.                     changeCfg.this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);  

  23.                 }  

  24.             }  

  25.               

  26.         });  

  27.     }  

  28.     //重写该方法,用于监听系统设置的更改  

  29.     @Override  

  30.     public void onConfigurationChanged(Configuration newConfig){  

  31.         super.onConfigurationChanged(newConfig);  

  32.         String screen = newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE ?"横屏":"竖屏";  

  33.         Toast.makeText(this, screen, Toast.LENGTH_LONG).show();  

  34.     }  


© 著作权归作者所有

张林思密达
粉丝 5
博文 23
码字总数 26879
作品 0
海淀
私信 提问
从android应用程序跳转到系统的各个设置页面

在android SDK文档中有这样一个类,android.provider.Settings类提供android系统各个页面的跳转常量: 使用实例例: 如果要launch Mobile Networks Setting页面按如下方法: Intent intent=...

g4wonderful
2012/12/12
92
0
android 外部启动activity,自定义action,action常量大全

从任意app,启动另外一个app的activity: 1. Intent i = new Intent(); ComponentName cn = new ComponentName("com.book.android2", "com.book.android2.AndroidSearch"); i.setComponent(c......

程序袁_绪龙
2015/01/14
8.1K
0
解决android 语言国际化在横竖屏切换后,设置的语言又变为本地语言

@Overridepublic boolean onOptionsItemSelected(MenuItem item) { List dataList = new ArrayList(); dataList.add("中文"); dataList.add("English"); dataList.add("日本語");/** 在Activ......

sky清水无香sky
2013/11/13
3K
0
Android App 多语言切换

前段时间公司 App 需要实现多语言切换功能,接到任务后先 Google 了下,发现搜到的方法都比较老旧,很多都莫名其妙,比如什么 API 欺骗、反射、手动转换语系,感觉不应该这么复杂地实现(也可...

丁佳辉
2018/05/29
109
0
Android 强制设置横屏或竖屏 设置全屏

全屏 在Activity的onCreate方法中的setContentView(myview)调用之前添加下面代码 横屏 按照下面代码示例修改Activity的onResume方法 或者在配置文件中对Activity节点添加android:screenOrien...

长平狐
2012/08/29
5.7K
0

没有更多内容

加载失败,请刷新页面

加载更多

golang-字符串-地址分析

demo package mainimport "fmt"func main() {str := "map.baidu.com"fmt.Println(&str, str)str = str[0:5]fmt.Println(&str, str)str = "abc"fmt.Println(&s......

李琼涛
今天
4
0
Spring Boot WebFlux 增删改查完整实战 demo

03:WebFlux Web CRUD 实践 前言 上一篇基于功能性端点去创建一个简单服务,实现了 Hello 。这一篇用 Spring Boot WebFlux 的注解控制层技术创建一个 CRUD WebFlux 应用,让开发更方便。这里...

泥瓦匠BYSocket
今天
6
0
从0开始学FreeRTOS-(列表与列表项)-3

FreeRTOS列表&列表项的源码解读 第一次看列表与列表项的时候,感觉很像是链表,虽然我自己的链表也不太会,但是就是感觉很像。 在FreeRTOS中,列表与列表项使用得非常多,是FreeRTOS的一个数...

杰杰1号
今天
4
0
Java反射

Java 反射 反射是框架设计的灵魂(使用的前提条件:必须先得到代表的字节码的 Class,Class 类 用于表示.class 文件(字节码)) 一、反射的概述 定义:JAVA 反射机制是在运行状态中,对于任...

zzz1122334
今天
5
0
聊聊nacos的LocalConfigInfoProcessor

序 本文主要研究一下nacos的LocalConfigInfoProcessor LocalConfigInfoProcessor nacos-1.1.3/client/src/main/java/com/alibaba/nacos/client/config/impl/LocalConfigInfoProcessor.java p......

go4it
昨天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部