响应的系统设置的事件——Configuration类简介
Configuration类专门用于描述手机设备上的配置信息,这些配置信息既包括用户特定的配置项,也包括系统的动态设置配置。
程序可调用Activity的如下方法来获取系统的Configuration对象:
Configuration cfg=getResources().getConfiguration();
一旦获得了系统的Configuration对象,该对象提供了如下常用属性来获取系统的配置信息。
- public float fontScale:获取当前用户设置的字体的缩放因子。
- public int keyboard:获取当前设备所关联的键盘类型。该属性可能返回如下值:KEYBOARD_NOKEYS、KEYBOARD_QWERTY(普通电脑键盘)、KEYBOARD_12KEY(只有12个键的小键盘)。
- public int keyboardHidden:该属性返回一个boolean值用于标识当前键盘是否可用。该属性不仅会判断系统的硬键盘,也会判断系统的软键盘(位于屏幕上)。如果系统的硬键盘不可用,但软键盘可用,该属性也会返回KEYBOARDHIDDEN_NO;只有当两个键盘都可用时才返回KEYBOARDHIDDEN_YES。
- public Locale locale:获取用户当前的Locale。
- public int mcc:获取移动信号的国家码。
- public int mnc:获取移动信号的网络码。
- public int navigation:判断系统上方向导航设备的类型。该属性可能返回如NAVIGATION_NONAV(无导航)、NAVIGATION_DPAD(DPAD导航)、NAVIGATION_TRACKBALL(轨迹球导航)、NAVIGATION_WHEEL(滚轮导航)等属性值。
- public int orientation:获取系统屏幕的方向,该属性可能返回ORIENTATION_LANDSCAPE(横向屏幕)、ORIENTATION_PORTRAIT(竖向屏幕)、ORIENTATION_SQUARE(方形屏幕)等属性值。
- public int touchscreen:获取系统触摸屏的触摸方式。该属性可能返回TOUCHSC_REEN_NOTOUCH(无触摸屏)、TOUCHSCREEN_STYLUS(触摸笔式的触摸屏)、TOUCHSCREEN_FINGER(接受手指的触摸屏)。
下面以一个实例来介绍Configuration的用法,该程序可以获取系统的屏幕方向、触摸屏方式等。
实例:获取系统设备状态
该程序的界面布局比较简单,程序只是提供了4个文本框来显示系统的屏幕方向、触摸屏方式等状态,故此处不再给出界面布局文件。
该程序的Java代码主要可分为两步:
①获取屏幕的Configuration对象。
②调用Configuration对象的属性来获取设备状态。
该程序的界面布局文件如下:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center_horizontal"
>
<EditText
android:id="@+id/ori"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:editable="false"
android:cursorVisible="false"
android:hint="显示屏幕方向"
/>
<EditText
android:id="@+id/navigation"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:editable="false"
android:cursorVisible="false"
android:hint="显示手机方向控制设备"
/>
<EditText
android:id="@+id/touch"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:editable="false"
android:cursorVisible="false"
android:hint="显示触摸屏状态"
/>
<EditText
android:id="@+id/mnc"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:editable="false"
android:cursorVisible="false"
android:hint="显示移动网络代号"
/>
<Button
android:id="@+id/bn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="获取手机信息"
/>
</LinearLayout>
下面是该程序的Java代码。
package com.example.studyevent; import android.os.Bundle;
import android.app.Activity;
import android.content.res.Configuration;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText; public class ConfigurationTest extends Activity {
EditText ori;
EditText navigation;
EditText touch;
EditText mnc;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_configuration_test);
//获取应用界面中的界面组件
ori=(EditText)findViewById(R.id.ori);
navigation=(EditText)findViewById(R.id.navigation);
touch=(EditText)findViewById(R.id.touch);
mnc=(EditText)findViewById(R.id.mnc);
Button bn=(Button)findViewById(R.id.bn);
bn.setOnClickListener(new OnClickListener(){
//为按钮绑定事件监听器
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
//获取系统的Configuration对象
Configuration cfg=getResources().getConfiguration();
String screen=cfg.orientation==Configuration.ORIENTATION_LANDSCAPE?
"横向屏幕":"竖向屏幕";
String mncCode=cfg.mnc+"";
String naviName=cfg.orientation==Configuration.NAVIGATION_NONAV?
"没有方向控制":cfg.orientation==Configuration.NAVIGATION_WHEEL?
"滚轮控制方向":cfg.orientation==Configuration.NAVIGATION_DPAD?
"方向键控制方向":"轨迹球控制方向";
navigation.setText(naviName);
String touchName=cfg.touchscreen==Configuration.TOUCHSCREEN_NOTOUCH?
"无触摸屏":"支持触摸屏";
ori.setText(screen);
mnc.setText(mncCode);
touch.setText(touchName); }
}); } @Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.configuration_test, menu);
return true;
} }
上面的程序中粗体字代码用于获取系统的Configuration对象,一旦获得了系统的Configuration之后,程序就可以通过它来了解系统的设备状态了。运行上面的程序将看到下图所示效果:

响应的系统设置的事件——Configuration类简介的更多相关文章
- 响应系统设置的事件(Configuration类)
1.Configuration给我们提供的方法列表 densityDpi:屏幕密度 fontScale:当前用户设置的字体的缩放因子 hardKeyboardHidden:判断硬键盘是否可见,有两个可 ...
- 响应的系统设置的事件——重写onConfigurationChanged响应系统设置更改
如果程序需要监听系统设置的更改,则可以考虑重写Activity的onConfigurationChanged(Configuration newConfig)方法,该方法是一个基于回调的事件处理方法: ...
- 第三篇 :微信公众平台开发实战Java版之请求消息,响应消息以及事件消息类的封装
微信服务器和第三方服务器之间究竟是通过什么方式进行对话的? 下面,我们先看下图: 其实我们可以简单的理解: (1)首先,用户向微信服务器发送消息: (2)微信服务器接收到用户的消息处理之后,通过开发者 ...
- C#基础-事件 继承类无法直接引发基类的事件
An event can be raised only from the declaration space in which it is declared. Therefore, a class c ...
- UITextView: 响应键盘的 return 事件(收回键盘)
UITextView: 响应键盘的 return 事件(收回键盘) 此篇文章将要介绍UITextView: 响应键盘的 return 事件(收回键盘)的相关介绍,具体实例请看下文 UITextView ...
- 3 EventTime 事件时间类和TimeNow函数——Live555源码阅读(一)基本组件类
这是Live555源码阅读的第一部分,包括了时间类,延时队列类,处理程序描述类,哈希表类这四个大类. 这里是时间相关类的第三个部分,也是最后一个部分. EventTime 事件时间类 这个类和Dela ...
- [原创]java WEB学习笔记77:Hibernate学习之路---Hibernate 版本 helloword 与 解析,.环境搭建,hibernate.cfg.xml文件及参数说明,持久化类,对象-关系映射文件.hbm.xml,Hibernate API (Configuration 类,SessionFactory 接口,Session 接口,Transaction(事务))
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- Hibernate中的Configuration类
Configuration类用来管理我们的配置文件的信息的,通过它,我们可以通过创建一个configuration实例来管理相应的配置文档,但是通常我们只创建一个configuration实例. 下面 ...
- ASP.NET中定制自己的委托和事件参数类
本文笔记选自<庖丁解牛:纵向切入ASP.NET 3.5控件和组件开发技术>一书 一般在实际开发中,对于事件不需要传递数据信息时,像上面的KingTextBox控件的事件,在引发事件时传递的 ...
随机推荐
- js_设置光标到文本的最后位置
div_right_table_tr1_td3_input2.focus(function(){ if(input1.setSelectionRange){//火狐 input1.setSelecti ...
- telnet关闭tomcat
telnet localhost 8005然后输入SHUTDOWN即可关闭tomcat 前提是8005端口已打开
- 2.1Android界面View及ViewGroup(转)
2.1Android界面View及ViewGroup 2.1.0 View及ViewGroup类关系Android View和ViewGroup从组成架构上看,似乎ViewGroup在View之上,V ...
- PAT (Advanced Level) 1055. The World's Richest (25)
排序.随便加点优化就能过. #include<iostream> #include<cstring> #include<cmath> #include<alg ...
- java正则表达式获取指定HTML标签的指定属性值
package com.mmq.regex; import java.util.ArrayList; import java.util.List; import java.util.regex.Mat ...
- mysql安装使用--2 用户管理
1 修改mysql.user表 添加用户 mysql> INSERT INTO mysql.user (Host,User,Password) VALUES (\'%\',\'system\', ...
- java web系统优化, mysql查询优化
1. 采用数据库连接池技术 2. 优化sql语句格式, 比如用PreparedStatement代替Statement, 前者避免重复编译, 后者每次都需要对数据库进行解析编译, 降低数据库的访问效率 ...
- PHP PSR 代码风格
FIG组织在制定跟PHP相关规范,简称PSR,PSR旨在通过讨论我们代码项目的共同点以找出一个协作编程的方法. 什么是psr0 强调自动加载的方式 下文描述了若要使用一个通用的自动加载器(autolo ...
- STM32音乐播放器,文件查找的实现
使用FATFS只是完成了一个基本的文件读写,有时候我们需要扩展一些功能,比如MP3实验,需要上一曲下一曲的切换,扩展的代码如下 //显示目录下所有文件 u8 ShowFileList(u8* dirP ...
- ERP软件数据库覆盖数据恢复成功/重装数据库系统软件,导致同名文件覆盖
ERP软件数据库覆盖数据恢复成功/重装数据库系统软件,导致同名文件覆盖 [数据恢复故障描述] 上海某酒店ERP软件原来安装在C盘上,用户误操作把软件进行了卸载,发现软件没有了, 但操作之前没有把原 ...