Android之响应的系统设置的事件
2011-11-17 17:56
435 查看
1、Configuration类专门用于描述手机设备上的配置信息,这些配置信息既包括用户特定的也包括系统的动态设备配置。
程序可调用Activity的如下方法来获取 系统的Configuration对象:
Configuration cfg=getResources().getConfiguration();
String screen = cfg.orientation == Configuration.ORIENTATION_LANDSCAPE? "横向屏幕": "竖向屏幕";
String mncCode = cfg.mnc + "";//获取系统屏幕的方向,ORIENTATION_LANDSCAPE 是横向,ORIENTATION_PORTRAIT是竖向屏幕,ORIENTATION_SQUARE是方形屏幕;
String naviName = cfg.orientation == Configuration.NAVIGATION_NONAV ? "没有方向控制" :cfg.orientation == Configuration.NAVIGATION_WHEEL ? "滚轮控制方向" :cfg.orientation
== Configuration.NAVIGATION_DPAD
? "方向键控制方向" : "轨迹球控制方向";//判断系统上方向导航设备的类型。NAVIGATION_NONAV无导航,NAVIGATION_DPAD(DPAD导航),NAVIGATION_TRACKBALL轨迹球导航,NAVIGATION_WHEEL滚轮导航;
String touchName = cfg.touchscreen == Configuration.TOUCHSCREEN_NOTOUCH? "无触摸屏" :cfg.touchscreen == Configuration.TOUCHSCREEN_STYLUS? "触摸笔式触摸屏" : "接受手指的触摸屏";//获取系统触摸屏蔽的触摸方式,TOUCHSCREEN_NOTOUCH
无触摸屏TOUCHSCREEN_STYLUS触摸笔式触摸屏,TOUCHSCREEN_FINGERR接受手指的触摸屏;
String mncCode = cfg.mnc+" ";获取移动信号的网络码
String mncCode = cfg.mcc+" "获取移动信号的国家码;
2、如果程序需要监听系统设置的更改,则可以考虑重写Activity的onConfigurationChanged方法,该方法是一个基于回调的事件处理方法:当系统设置发生 更改时,该方法会被自动触发;
接下来以一个简单程序说明:
界面很简单一个普通的按钮来更改屏幕方向,so 界面文件不写了;
为按钮绑定监听事件:
view plaincopy
to clipboardprint?
bn.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View source)
{
Configuration config = getResources().getConfiguration();
//如果当前是横屏
if (config.orientation
== Configuration.ORIENTATION_LANDSCAPE)
{
//设为竖屏
ChangeCfg.this.setRequestedOrientation(
ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
//如果当前是竖屏
if (config.orientation
== Configuration.ORIENTATION_PORTRAIT)
{
//设为横屏
ChangeCfg.this.setRequestedOrientation(
ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE );
}
}
});
bn.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View source)
{
Configuration config = getResources().getConfiguration();
//如果当前是横屏
if (config.orientation
== Configuration.ORIENTATION_LANDSCAPE)
{
//设为竖屏
ChangeCfg.this.setRequestedOrientation(
ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
//如果当前是竖屏
if (config.orientation
== Configuration.ORIENTATION_PORTRAIT)
{
//设为横屏
ChangeCfg.this.setRequestedOrientation(
ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE );
}
}
});
重写Activity的onConfigurationChanged方法:public void onConfigurationChanged(Configuration newConfig)
{
super.onConfigurationChanged(newConfig);
String screen = newConfig.orientation ==
Configuration.ORIENTATION_LANDSCAPE ? "横向屏幕": "竖向屏幕";
Toast.makeText(this, "系统的屏幕方向发生改变"
+ "\n修改后的屏幕方向为:" + screen
, Toast.LENGTH_LONG)
.show();
}
由于程序需要动态地更改系统设置,因此需要在androidManifest.xml文件中授予诮程序更改系统设置的权限,并设置Activity运行动态修改的系统设置是屏幕方向;
<!-- 授予应用程序修改系统设置的权限 -->
<uses-permission android:name="android.permission.CHANGE_CONFIGURATION" />
程序可调用Activity的如下方法来获取 系统的Configuration对象:
Configuration cfg=getResources().getConfiguration();
String screen = cfg.orientation == Configuration.ORIENTATION_LANDSCAPE? "横向屏幕": "竖向屏幕";
String mncCode = cfg.mnc + "";//获取系统屏幕的方向,ORIENTATION_LANDSCAPE 是横向,ORIENTATION_PORTRAIT是竖向屏幕,ORIENTATION_SQUARE是方形屏幕;
String naviName = cfg.orientation == Configuration.NAVIGATION_NONAV ? "没有方向控制" :cfg.orientation == Configuration.NAVIGATION_WHEEL ? "滚轮控制方向" :cfg.orientation
== Configuration.NAVIGATION_DPAD
? "方向键控制方向" : "轨迹球控制方向";//判断系统上方向导航设备的类型。NAVIGATION_NONAV无导航,NAVIGATION_DPAD(DPAD导航),NAVIGATION_TRACKBALL轨迹球导航,NAVIGATION_WHEEL滚轮导航;
String touchName = cfg.touchscreen == Configuration.TOUCHSCREEN_NOTOUCH? "无触摸屏" :cfg.touchscreen == Configuration.TOUCHSCREEN_STYLUS? "触摸笔式触摸屏" : "接受手指的触摸屏";//获取系统触摸屏蔽的触摸方式,TOUCHSCREEN_NOTOUCH
无触摸屏TOUCHSCREEN_STYLUS触摸笔式触摸屏,TOUCHSCREEN_FINGERR接受手指的触摸屏;
String mncCode = cfg.mnc+" ";获取移动信号的网络码
String mncCode = cfg.mcc+" "获取移动信号的国家码;
2、如果程序需要监听系统设置的更改,则可以考虑重写Activity的onConfigurationChanged方法,该方法是一个基于回调的事件处理方法:当系统设置发生 更改时,该方法会被自动触发;
接下来以一个简单程序说明:
界面很简单一个普通的按钮来更改屏幕方向,so 界面文件不写了;
为按钮绑定监听事件:
view plaincopy
to clipboardprint?
bn.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View source)
{
Configuration config = getResources().getConfiguration();
//如果当前是横屏
if (config.orientation
== Configuration.ORIENTATION_LANDSCAPE)
{
//设为竖屏
ChangeCfg.this.setRequestedOrientation(
ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
//如果当前是竖屏
if (config.orientation
== Configuration.ORIENTATION_PORTRAIT)
{
//设为横屏
ChangeCfg.this.setRequestedOrientation(
ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE );
}
}
});
bn.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View source)
{
Configuration config = getResources().getConfiguration();
//如果当前是横屏
if (config.orientation
== Configuration.ORIENTATION_LANDSCAPE)
{
//设为竖屏
ChangeCfg.this.setRequestedOrientation(
ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}
//如果当前是竖屏
if (config.orientation
== Configuration.ORIENTATION_PORTRAIT)
{
//设为横屏
ChangeCfg.this.setRequestedOrientation(
ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE );
}
}
});
重写Activity的onConfigurationChanged方法:public void onConfigurationChanged(Configuration newConfig)
{
super.onConfigurationChanged(newConfig);
String screen = newConfig.orientation ==
Configuration.ORIENTATION_LANDSCAPE ? "横向屏幕": "竖向屏幕";
Toast.makeText(this, "系统的屏幕方向发生改变"
+ "\n修改后的屏幕方向为:" + screen
, Toast.LENGTH_LONG)
.show();
}
由于程序需要动态地更改系统设置,因此需要在androidManifest.xml文件中授予诮程序更改系统设置的权限,并设置Activity运行动态修改的系统设置是屏幕方向;
<!-- 授予应用程序修改系统设置的权限 -->
<uses-permission android:name="android.permission.CHANGE_CONFIGURATION" />
相关文章推荐
- Android讲义3---第三章---响应系统设置的事件
- Android事件处理之三 响应的系统设置的事件
- Android基础入门教程——3.6 响应系统设置的事件(Configuration类)
- android之响应的系统设置的事件
- android之响应的系统设置的事件
- Android 事件处理详解(三) —— 响应系统设置的事件[Configuration]
- Android零基础入门第36节:Android系统事件的响应
- Android 如何才能捕获系统的恢复出厂设置事件
- Android 如何才能捕获系统的恢复出厂设置事件
- Android零基础入门第36节:Android系统事件的响应
- Android 如何才能捕获系统的恢复出厂设置事件
- Android零基础入门第36节:Android系统事件的响应
- Configuration类响应系统设置的事件处置
- 3.6 响应系统设置的事件(Configuration类)
- 响应的系统设置事件
- Android 设置了ClickableSpan导致的上层View点击事件无法响应解决方案
- android中重写onConfigurationChanged方法响应系统设置更改
- android 一个控件设置了事件响应(比如Button添加了OnClick回调响应),却在触发控件事件时,不执行事件处理函数
- 对android里布局文件当中的TextView对象设置事件监听,但是不响应问题解决
- 响应的系统设置的事件