android中关于手机屏幕的相关操作

本文介绍如何在Android应用中获取屏幕分辨率、实现全屏显示、控制屏幕方向等实用技巧。包括通过不同方式获取屏幕尺寸的方法,去掉标题栏及设置全屏的操作步骤,以及在程序中动态调整屏幕方向的示例。
这里总结下android中关于手机屏幕的相关操作:


1、获取屏幕的分辨率(因为android中处理显示的时候,需要根据屏幕分辨率的不同采取不同的布局或显示不同的素材)


    // 通过WindowManager获取


        DisplayMetrics dm = new DisplayMetrics();


getWindowManager().getDefaultDisplay().getMetrics(dm);


System.out.println("heigth : " + dm.heightPixels);


System.out.println("width : " + dm.widthPixels);


     // 通过Resources获取 


       DisplayMetrics dm2 = getResources().getDisplayMetrics();


System.out.println("heigth2 : " + dm2.heightPixels);


System.out.println("width2 : " + dm2.widthPixels);


    // 获取屏幕的默认分辨率


       Display display = getWindowManager().getDefaultDisplay();


System.out.println("width-display :" + display.getWidth());


System.out.println("heigth-display :" + display.getHeight());


2、去掉屏幕标题及全屏显示


     // 去掉标题  


      requestWindowFeature(Window.FEATURE_NO_TITLE);  


    // 设置全屏  


      getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,  


              WindowManager.LayoutParams.FLAG_FULLSCREEN);


3、设置屏幕的方向


在Manifest.xml文件中配置Activity的属性


<activity android:name=".AnimateActivity" android:label="@string/app_name" 


 android:screenOrientation="landscape"><!--landscape 横屏portrait 竖屏--> 


     <intent-filter> 


<action android:name="android.intent.action.MAIN" /> 


<category android:name="android.intent.category.LAUNCHER" /> 


  </intent-filter> 


</activity>


在程序中控制,一般在Activity中的onCreate、onDestroy方法中控制,因为在屏幕方向发生变化时,系统会重新启动Activity。所以需要再Activity销毁前保存相关数据,方便在下次onCreate方法中重新加载,并更新屏幕的布局


    public void onCreate(Bundle savedInstanceState) {  


    //强制横屏  


        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);  


    // TODO 更新屏幕布局  


}  


 


public void onDestroy()


          {  


      if(getRequestedOrientation() == ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE)


      {  


        // 保存数据  


    }


     else if(getRequestedOrientation() == ActivityInfo.SCREEN_ORIENTATION_PORTRAIT)


    {  


      // 保存数据  


   }  


}


下面是两个简单的demo:


 import android.os.Bundle;
import android.util.DisplayMetrics;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;


public class TheResolutionActivity extends Activity {
    private TextView tv;
    private Button btn;
    // 获取手机屏幕分辨率的类
    private DisplayMetrics dm;
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        // 获取布局中TextView,Button对像
        tv = (TextView) findViewById(R.id.tv);
        btn = (Button) findViewById(R.id.btnOK);
        // 增加button事件响应
        btn.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                dm = new DisplayMetrics();
                getWindowManager().getDefaultDisplay().getMetrics(dm);
                // 获得手机的宽度和高度像素单位为px
                String strPM = "手机屏幕分辨率为:" + dm.widthPixels + "* "
                        +dm.heightPixels;
                tv.setText(strPM);
            }
        });
    }
}


 也可以这样:
package yc.android.resolution;


import android.app.Activity;
import android.os.Bundle;
import android.view.Display;
import android.view.View;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.TextView;


public class TheResolutionActivity extends Activity {
    private TextView tv;
    private Button btn;
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        // 获取布局中TextView,Button对像
        tv = (TextView) findViewById(R.id.tv);
        btn = (Button) findViewById(R.id.btnOK);
        // 增加button事件响应
        btn.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                WindowManager windowManager = getWindowManager();
                Display dm = windowManager.getDefaultDisplay();
                // 获得手机的宽度和高度像素单位为px
                String strPM = "手机屏幕分辨率为:" + dm.getWidth() + "* "
                        + dm.getHeight();
                tv.setText(strPM);
            }
        });
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值