用onConfigurationChanged监控横竖屏改变 && 用Notification在状态栏提示图标
来源:互联网 发布:手机淘宝营销中心 编辑:程序博客网 时间:2024/05/22 00:06
可以通过做一个apk程序,在程序中加一个TextView控件。当手机(平板)横屏时提示系统处于landscape,竖屏时提示处于portrait。这样可以用来检测系统认为的方向跟设备真实的方向是否一致。步骤如下:
(1)XML中添加权限
<uses-permission android:name="android.permission.CHANGE_CONFIGURATION"></uses-permission>
(2)在XML中的activity属性中添加事件响应类型
<activity...android:configChanges="orientation|keyboard|screenSize"></activity>
(3)activity代码
package com.example.screenorientationtest;import android.os.Bundle;import android.app.Activity;import android.view.Menu;import android.widget.TextView;import android.content.pm.ActivityInfo;import android.content.res.Configuration;import android.util.DisplayMetrics;import android.util.Log;import android.view.View;import android.widget.Button;public class MainActivity extends Activity {private final String TAG = "OrientationTest"; private TextView textView;//显示控件 private int width; //系统认为的宽度 private int height; //系统认为的高度public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); textView = (TextView)findViewById(R.id.textView2); Button button1 = (Button)findViewById(R.id.test); button1.setOnClickListener(new Button.OnClickListener() { public void onClick(View v) { DisplayMetrics dm = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(dm); //后面两个函数所在的类不用import进去 width = dm.widthPixels; //获得系统宽度 height = dm.heightPixels; //获得系统高度 Log.i(TAG,"width is "+ width +"height is "+ height); if (width < height) { //如果是竖屏 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); //旋转系统界面成横屏 } else { //如果是横屏 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); //旋转系统界面成竖屏 } } }); } public void onConfigurationChanged(Configuration paramConfiguration){ //响应系统方向改变 if(paramConfiguration.orientation == 2)//横屏 textView.setText("横屏"); else textView.setText("竖屏"); super.onConfigurationChanged(paramConfiguration);//必有,否则运行会出现异常 } }
该APK可配合GSENSOR驱动使用。同时输出width/height可以用来确认系统原点方向的默认位置。
================用Notification在状态栏提示图标=====================
Notificateon是通过获取安卓系统的NotificationManager服务来实现的,它的用法在现在的一些客户端中用的很广泛,例如:网易新闻客户端以及短信功能、未接电话提示之类的都使用它来提示用户!以下的示例效果是点击按钮,然后通过Notification提示用户单击过按钮!注意需要导入的特殊类:
import android.app.Notification;import android.app.NotificationManager;import android.app.PendingIntent;
按键监听的Listener如下:
final NotificationManager m_NotificationManager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE); //或者状态栏通知服务 Button button = (Button)findViewById(R.id.callphone); button.setOnClickListener(new Button.OnClickListener() { public void onClick(View v){ Intent intent = new Intent(MainActivity.this,MainActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); PendingIntent appintent = PendingIntent.getActivity(MainActivity.this, 0, intent, 0); Notification notification = new Notification(); notification.icon = R.drawable.ic_launcher;//图标的图片 notification.tickerText = "hello";//滚动文本一闪而过的内容 notification.defaults = Notification.DEFAULT_SOUND;//带声音通知 notification.flags = Notification.FLAG_NO_CLEAR; //下拉状态栏后不会被"X"清掉 notification.setLatestEventInfo(MainActivity.this, "your title", "your text", appintent);//下拉后显示的详细文本 m_NotificationManager.notify(0, notification); } });
对应的,如果想隐藏掉状态栏图标的显示,用m_NotificationManager.cancelAll()就行了,如果该m_NotificationManager有管理了多个状态栏图标,那就用m_NotificationManager.cancel(0),其中0是你具体notify时的标号ID(自定义)。
PendingIntent 对象可以代表应用程序帮助在后面某个时候执行一个动作,而不用考虑应用程序是否在运行。形参可参见上述使用。
如果想在通知产生时,马达也震动,可在notify之前加上notification.vibrate= new long[]{100,250,100,500}。
参考原文:http://ikrboy.iteye.com/blog/1447856
参考原文:http://www.apkbus.com/android-68952-1-1.html
- 用onConfigurationChanged监控横竖屏改变 && 用Notification在状态栏提示图标
- 横竖屏转换(onConfigurationChanged)
- 状态栏提示Notification NotificationManager
- 状态栏提示:notification
- Android常见问题--横竖屏onConfigurationChanged方法失效
- 用autolayout如何在横竖屏切换情况下改变控件的位置
- android 应用图标放在状态栏上之NotificationManager和Notification的使用总结
- Android横竖屏切换onConfigurationChanged not Called 原因
- android4.0 横竖屏切换执行不到onConfigurationChanged
- 横竖屏切换问题(不使用onConfigurationChanged)
- 针对横竖屏切换没有调用onConfigurationChanged方法
- onConfigurationChanged切换横竖屏动态显示/隐藏通知栏
- Android 禁止横竖屏切换,onConfigurationChanged的作用
- 【Android开发】消息提示框与对话框-使用Notification在状态栏上显示通知
- 在service中监控横竖屏的切换
- 小知识:改变状态栏颜色,图标
- Notification更换图标,用系统的布局
- 横竖屏温馨提示
- NAT(Network Address Translate)原理
- Win7上Git安装及简单配置过程
- NYOJ-458:小光棍数
- 高级字符驱动程序操作——ioctl
- 在内核升级后自动安装nvdia驱动
- 用onConfigurationChanged监控横竖屏改变 && 用Notification在状态栏提示图标
- protues 仿真中3.3v VDD(1.8v)is outside specified range
- Java报表开发技术—JasperReports开发流程
- AMPS:应用程序模型
- 读《轻松SCRUM之旅》有感第二篇
- 我的随想--庐州月
- Struts2中action重定向跳转到jsp页面两种配置方式
- Nginx与Redis解决高并发问题
- 现在是2013年1月13日8时47分