`
haouziwefe
  • 浏览: 122595 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
社区版块
存档分类
最新评论

系统设更改时间onConfigurationChanged

    博客分类:
  • java
阅读更多
    在前一个例子中我们看到了屏幕方向的更改,事实上,当屏幕方向改变是,就会发生onconfigurationchanged()事件;虽然可以在更改方向是显示要更改的方向,但是并无法取得更改后的宽高或更改后的结果,此时,就必须通过onconfigurationchanged()的心事事件进行处理。
onconfigurationchanged()方法是当系统发生系统设置改变之后所触发的事件,其中唯一的传入参数为configuration对象,出来可以捕捉屏幕设置更改事件之外,也可扑捉其他系统设置更改事件,如隐藏键盘或打开键盘等。
public class ex05_23 extends activity{  private textview mtextview01;  private button mbutton01;    /* 屏幕宽高 */  private int intscreenh,intscreenw;    /** called when the activity is first created. */  @override  public void oncreate(bundle savedinstancestate)  {    super.oncreate(savedinstancestate);    setcontentview(r.layout.main);        /* 声明display对象,以取得屏幕宽高 */    final display defaultdisplay = getwindow().getwindowmanager().getdefaultdisplay();    intscreenh= defaultdisplay.getheight();    intscreenw = defaultdisplay.getwidth();        mbutton01 = (button)findviewbyid(r.id.mybutton1);     mtextview01 = (textview)findviewbyid(r.id.mytextview1);    mtextview01.settext(integer.tostring(intscreenw)+"x"+integer.tostring(intscreenh));        /* 当宽>高,表示为横式显示 */    if(intscreenw > intscreenh)    {      /* landscape */      mbutton01.settext(r.string.str_button2);    }    else    {      /* portrait */      mbutton01.settext(r.string.str_button1);    }        /* 按钮事件处理切换宽高 */    mbutton01.setonclicklistener(new button.onclicklistener()    {      @override      public void onclick(view v)      {        // todo auto-generated method stub        intscreenh= defaultdisplay.getheight();        intscreenw = defaultdisplay.getwidth();                /* 如果为landscape */        if(intscreenw > intscreenh)        {          /* landscape => portrait */          setrequestedorientation(activityinfo.screen_orientation_portrait);        }        else        {          /* portrait => landscape */          setrequestedorientation(activityinfo.screen_orientation_landscape);        }                /* 再一次取得屏幕宽高 */        intscreenh= defaultdisplay.getheight();        intscreenw = defaultdisplay.getwidth();        mtextview01.settext(integer.tostring(intscreenw)+"x"+integer.tostring(intscreenh));      }    });  }      @override  public void onconfigurationchanged(configuration newconfig)  {    // todo auto-generated method stub        /* 覆写onconfigurationchanged事件,捕捉当设定之后的值 */    if (newconfig.orientation == configuration.orientation_landscape)    {      /* 趁着事件发生之后,变更按钮上的文字 */      mbutton01.settext(r.string.str_button2);      mmaketexttoast      (        getresources().gettext(r.string.str_onconf_landscape).tostring(),        false      );    }        /* 须设定configchanges属性才能捕捉onconfigurationchanged */    if (newconfig.orientation == configuration.orientation_portrait)    {      mbutton01.settext(r.string.str_button1);      mmaketexttoast      (        getresources().gettext(r.string.str_onconf_portrait).tostring(),        false      );    }        if (newconfig.keyboardhidden == configuration.keyboardhidden_no)    {         }    super.onconfigurationchanged(newconfig);  }    public void mmaketexttoast(string str, boolean islong)  {    if(islong==true)    {      toast.maketext(ex05_23.this, str, toast.length_long).show();    }    else    {      toast.maketext(ex05_23.this, str, toast.length_short).show();    }  }}
 必须要在activity里设置configchanges属性,以作为系统设置更改时要扑捉的事件,除此之外,还需要获得系统设置更改的权限(<uses-permission android:name="android.permission.change_configuration"></uses-permission>)
<application    android:icon="@drawable/icon"    android:label="@string/app_name">    <!-- 必須設定activity的configchanges屬性 -->    <activity      android:name=".ex05_23"      android:label="@string/app_name"      android:configchanges="orientation|keyboard">      <intent-filter>        <action android:name="android.intent.action.main" />        <category android:name="android.intent.category.launcher" />      </intent-filter>    </activity>  </application>  <uses-sdk android:minsdkversion="8" />  <!-- 必須設定change configuration權限 -->  <uses-permission android:name="android.permission.change_configuration"></uses-permission>
 
 
0
0
分享到:
评论

相关推荐

    系统设置更改事件onConfigurationChanged 信息处理

    系统设置更改事件onConfigurationChanged 信息处理

    Android笔记之:onConfigurationChanged详解

    本篇是对Android中onConfigurationChanged的使用进行了详细的分析介绍。需要的朋友参考下

    疯狂安卓讲义第2章

    疯狂安卓讲义第2章 还有续集

    java for android

    Apress.Learn.Java.for.Android.Development.2nd.Edition.Mar.2013

    Android屏幕旋转

    Android屏幕旋转时候执行的方法,和onConfigurationChanged方法的使用

    Android 屏幕旋转(改变屏幕方向).rar

      Toast.makeText(this, "系统的屏幕方向发生改变", Toast.LENGTH_LONG).show();   updateEditText();//更新EditText显示的内容   super.onConfigurationChanged(newConfig);  }  public void updateEditText()...

    暗黑模式?安卓适配一波

    前言 第一次听到暗黑模式的时候,感觉好酷啊...当Activity声明它处理配置更改时,onConfigurationChanged()将在主题更改时调用其方法。 要检查当前主题是什么,应用可以运行如下代码: val currentNightMode = configur

    Android应用级小知识.doc

    Android应用级小知识一、关于onConfigurationChanged()的几点小知识Android中横竖屏(landscape是横向,portrait是纵向)切换时:没有调用onConfigurationChanged(),Activity执行过程为:onPause()—&gt;onStop()—&gt;...

    Android(2.2/2.3系统)Gallery解决默认和横竖屏切换选中状态问题

     Gallery的Item使用的是一个ImageView+TextView,并且为其设置了selector,当使用setSelection设置时、横竖屏切换时Item的状态不会改变,这个目前在2.2/2.3系统中存在,高版本如4.0是不存在的。 正文  一、第一步...

    Google Android SDK开发范例大全(PDF高清完整版3)(4-3)

    5.23 系统设置更改事件——onConfigurationChanged信息处理 5.24 取得电信网络与手机相关信息——TelephonyManager与android.provider.Settings.System的应用 第6章 手机自动服务纪实 6.1 您有一条短信popup提醒...

    Google Android SDK开发范例大全(完整版)

    5.23 系统设置更改事件——onConfigurationChanged信息处理 5.24 取得电信网络与手机相关信息——TelephonyManager与android.provider.Settings.System的应用 第6章 手机自动服务纪实 6.1 您有一条短信popup提醒...

    Google Android SDK开发范例大全(PDF完整版4)(4-4)

    5.23 系统设置更改事件——onConfigurationChanged信息处理 5.24 取得电信网络与手机相关信息——TelephonyManager与android.provider.Settings.System的应用 第6章 手机自动服务纪实 6.1 您有一条短信popup提醒...

    Google Android SDK开发范例大全(PDF高清完整版1)(4-1)

    5.23 系统设置更改事件——onConfigurationChanged信息处理 5.24 取得电信网络与手机相关信息——TelephonyManager与android.provider.Settings.System的应用 第6章 手机自动服务纪实 6.1 您有一条短信popup提醒...

    Android 播放视频常见问题小结

    在android 开发中常见到视频播放的问题,在常规的视频中 有直接用videoView + MediaController 或者 mediaController + serfercie holder ...public void onConfigurationChanged(Configuration newConfig) {

    Google Android SDK开发范例大全的目录

    5.23 系统设置更改事件——onConfigurationChanged信息处理 5.24 取得电信网络与手机相关信息——TelephonyManager与android.provider.Settings.System的应用 第6章 手机自动服务纪实 –p254 6.1 您有一条短信popup...

    Google+Android+SDK开发范例大全

    5.21 任务管理器正在运行的程序——RunningTaskInfo 5.22 动态更改屏幕方向——LANDSCAPE与PORTRAIT 5.23 系统设置更改事件——onConfigurationChanged信息处理 5.24 取得电信网络与手机相关信息——...

    IceCreamOrder.zip

    简单的订单安卓程序,其中包括OnClickListener,TextWatcher,onSaveInstanceState,onRestoreInstanceState,onConfigurationChanged的用法

    Google Android SDK开发范例大全(完整版附部分源码).pdf

    5.23 系统设置更改事件——onConfigurationChanged信息处理 5.24 取得电信网络与手机相关信息——TelephonyManager与android.provider.Settings.System的应用 第6章 手机自动服务纪实 6.1 您有一条短信popup提醒...

Global site tag (gtag.js) - Google Analytics