当前位置:  编程技术>移动开发
本页文章导读:
    ▪怎么获取设备屏幕的宽度和高度(分辨率)        如何获取设备屏幕的宽度和高度(分辨率) 原文转自:http://www.chengyunfeng.com/2010/02/how-to-obtain-the-equipment-the-width-and-height//在某些场所下可能需要获取手机屏幕的宽度和高度,可以通过如下.........
    ▪ 转屏的处置        转屏的处理 出自http://eigo.co.uk/News-Article.aspx?NewsArticleID=103 How to lock the orientation In the onCreateDialog(int) event of the activity use the setRequestedOrientation(int) method to set the screen orientation to your chosen sett.........
    ▪ 刚刚启动应用程序 非UI线程修改 UI-错乱情况       刚启动应用程序 非UI线程修改 UI--错乱情况    在做项目时,偶尔写程序发现一个不经意的混乱事件!!如下代码:public void onCreate(Bundle savedInstanceState) { .. .. .. new Thread(new Runnable(){     .........

[1]怎么获取设备屏幕的宽度和高度(分辨率)
    来源: 互联网  发布时间: 2014-02-18
如何获取设备屏幕的宽度和高度(分辨率)
原文转自:http://www.chengyunfeng.com/2010/02/how-to-obtain-the-equipment-the-width-and-height

//在某些场所下可能需要获取手机屏幕的宽度和高度,可以通过如下代码获取:
DisplayMetrics dm = new DisplayMetrics(); 
getWindowManager().getDefaultDisplay().getMetrics(dm); 
mScreenWidth = dm.widthPixels; 
mScreenHeight = dm.heightPixels;


//也可通过getSystemService来获取WindowManager:

      WindowManager manager = (WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE);
      Display display = manager.getDefaultDisplay();
     Pont screenResolution = new Point(display.getWidth(), display.getHeight());

    
[2] 转屏的处置
    来源: 互联网  发布时间: 2014-02-18
转屏的处理

出自http://eigo.co.uk/News-Article.aspx?NewsArticleID=103

How to lock the orientation

In the onCreateDialog(int) event of the activity use the setRequestedOrientation(int) method to set the screen orientation to your chosen setting. The activity will stay in this orientation regardless of if the device is tilted or not.

[Code sample – How to lock the orientation] /** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    this.setRequestedOrientation(
ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}

 

How to detect the current orientation

To programmatically detect the current orientation of the activity use the following code snippet. The orientation property of the Configuration class returns three possible values corresponding to Landscape, Portrait and Square.

[Code sample – How to detect the current orientation] switch (this.getResources().getConfiguration().orientation)
{
case Configuration.ORIENTATION_PORTRAIT:
  // Do something here
  break;
case Configuration.ORIENTATION_LANDSCAPE:
  // Do something here
  break;
case Configuration.ORIENTATION_SQUARE:
  // Do something here
  break;
default:
  throw new Exception("Unexpected orientation enumeration returned");
  break;
}

 

Example : Locking rotation while performing an action.

You might wish to disable the screen rotation whilst performing an action or by user command, to do this you need to combine the above samples to detect the current orientation and lock the display to that orientation.

[Code sample – Locking rotation while performing an action] // Sets screen rotation as fixed to current rotation setting
private void mLockScreenRotation()
{
  // Stop the screen orientation changing during an event
    switch (this.getResources().getConfiguration().orientation)
    {
  case Configuration.ORIENTATION_PORTRAIT:
    this.setRequestedOrientation(
ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
    break;
  case Configuration.ORIENTATION_LANDSCAPE:
    this.setRequestedOrientation(
ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
    break;
    }
}

Once your action has completed you may wish to enable screen rotation again, see the next section for an example on how to do this.

 

How to re-enable screen rotation

To enable the orientation to be automatically changed on device tilt simply pass thesetRequestedOrientation(int) method the enumeration value for an unspecified orientation.

[Code sample – How to re-enable screen rotation] // allow screen rotations again
this.setRequestedOrientation(
ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);

异步处理 的时候如果转屏 异步处理就会停止,附件就是防止这种情况发生


    
[3] 刚刚启动应用程序 非UI线程修改 UI-错乱情况
    来源: 互联网  发布时间: 2014-02-18
刚启动应用程序 非UI线程修改 UI--错乱情况
   在做项目时,偶尔写程序发现一个不经意的混乱事件!!如下代码:
public void onCreate(Bundle savedInstanceState) {
..
..
..
new Thread(new Runnable(){

            public void run() {
                // TODO Auto-generated method stub
                btn_start_audio.setText("Confuse");
            }
           
        });
    }
    这时竟然可以运行成功,而且使button的text修改成功。没有报告"Only the original thread that created a view hierarchy can touch its views.“ 异常。
    不过此次更改Button Text仍然是由UI线程完成的。因为在子线程启动之后,开始Run,而这时Button的Parent,或者是parent 的parent的(父视图的父视图) mParent.isLayoutRequested() 为true。导致子线程无法运行到 ViewRoot的requestLayout(),所以不会抛出上述异常。但是此时Button类里面的mText变量已经被更改了。当CPU切换到UI线程开始layout整个View 时,同时也就给Button 展现了一个 mText(刚才已经更新)。

new Thread(new Runnable(){

            public void run() {
                Thread.Sleep(500);
                // TODO Auto-generated method stub
                btn_start_audio.setText("Confuse");
            }
           
        });
    }
这样就会出现异常。



    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3