Android中的手机屏幕像素的几种获取方式
来源:互联网 发布:2016淘宝经营技巧 编辑:程序博客网 时间:2024/06/03 17:38
在Android开发中,获取手机屏幕像素的方法有多种。在这里,我仅仅做一个小小的总结,将这些方法分为两类。一类是使用Activity类来获取,另一类便是使用上下文(Context)来获取。
1、使用Activity类中的方法来获取,使用范围是在Activity的类及子类中和有传入Activity类及子类的对象参数的方法中使用
①在Activity的子类中使用
public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 通过Activity类中的getWindowManager()方法获取窗口管理,再调用getDefaultDisplay()方法获取获取Display对象 Display display = getWindowManager().getDefaultDisplay(); // 方法一(推荐使用)使用Point来保存屏幕宽、高两个数据 Point outSize = new Point(); // 通过Display对象获取屏幕宽、高数据并保存到Point对象中 display.getSize(outSize); // 从Point对象中获取宽、高 int x = outSize.x; int y = outSize.y; // 通过吐司显示屏幕宽、高数据 Toast.makeText(this, "手机像素为:" + x + "x" + y, Toast.LENGTH_LONG).show(); // 方法二(不推荐使用)直接通过Display对象获取屏幕宽、高数据 int width = display.getWidth(); int height = display.getHeight(); // 通过吐司显示屏幕宽、高数据 Toast.makeText(this, "手机像素为:" + width + "x" + height, Toast.LENGTH_LONG).show(); }}
②在传入Activity类及子类对象的方法中调用
public class Utils { /** * 该方法获取屏幕分辨率的值 * @param activity 调用此方法的Activity对象 * @return Point 存有屏幕分辨率的对象 */ public static Point getSize(Activity activity) { // 通过Activity类中的getWindowManager()方法获取窗口管理,再调用getDefaultDisplay()方法获取获取Display对象 Display display = activity.getWindowManager().getDefaultDisplay(); // 使用Point来保存屏幕宽、高两个数据 Point outSize = new Point(); // 通过Display对象获取屏幕宽、高数据并保存到Point对象中 display.getSize(outSize); return outSize; }}
public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 通过调用Utils类中的getSize方法,传入当前Activity作为参数获取 Point outSize = Utils.getSize(this); // 从Point对象中获取宽、高 int x = outSize.x; int y = outSize.y; // 通过吐司显示屏幕宽、高数据 Toast.makeText(this, "手机像素为:" + x + "x" + y, Toast.LENGTH_LONG).show(); }}
2、使用上下文(Context)获取系统服务来获取,使用范围是在一些没有Activity及其子类对象而只有上下文(Context)的类或者方法中,比如Fragment类及其子类中。
public class Utils { /** * 该方法获取屏幕分辨率的值 * * @param context * 调用此方法的上下文对象 * @return Point 存有屏幕分辨率的对象 */ public static Point getSize(Context context) { // 通过上下文的getSystemService()方法获取系统服务来获取WindowManager对象 WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); // 通过WindowManager对象的getDefaultDisplay()方法获取Display对象 Display display = windowManager.getDefaultDisplay(); // 使用Point来保存屏幕宽、高两个数据 Point outSize = new Point(); // 通过Display对象获取屏幕宽、高数据并保存到Point对象中 display.getSize(outSize); return outSize; }}
public class MyFragment extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.activity_fragment, null); // 通过调用Utils类中的getSize方法,通过View对象的getContext()方法获取Context对象作为参数获取Point对象 Point outSize = Utils.getSize(view.getContext()); // 从Point对象中获取宽、高 int x = outSize.x; int y = outSize.y; // 通过吐司显示屏幕宽、高数据 Toast.makeText(view.getContext(), "手机像素为:" + x + "x" + y, Toast.LENGTH_LONG).show(); return view; }}
3、上面演示了两种分别以Activity和Context作为参数获取屏幕分辨率的方法,如果是仅仅有两种单独的使用,那么分别选用两种方法的对应条件下的方法使用即可。但是如果同时需要在Activity中调用,也需要在Fragement中调用来获取分辨率,其实只需要一个方法也就可以了,那就是以Activity作为参数的。因为Activity是Context的子类,在Context作为参数传入该方法时,只要强制将Context转换成Activity类型就可以了。
public class Utils { /** * 该方法获取屏幕分辨率的值 * @param activity 调用此方法的Activity对象 * @return Point 存有屏幕分辨率的对象 */ public static Point getSize(Activity activity) { // 通过Activity类中的getWindowManager()方法获取窗口管理,再调用getDefaultDisplay()方法获取获取Display对象 Display display = activity.getWindowManager().getDefaultDisplay(); // 使用Point来保存屏幕宽、高两个数据 Point outSize = new Point(); // 通过Display对象获取屏幕宽、高数据并保存到Point对象中 display.getSize(outSize); return outSize; }}
public class MyFragment extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.activity_fragment, null); // 通过调用Utils类中的getSize方法,通过View对象的getContext()方法获取Context对象,并且强制转换成Activity作为参数获取Point对象 Point outSize = Utils.getSize((Activity)view.getContext()); // 从Point对象中获取宽、高 int x = outSize.x; int y = outSize.y; // 通过吐司显示屏幕宽、高数据 Toast.makeText(view.getContext(), "手机像素为:" + x + "x" + y, Toast.LENGTH_LONG).show(); return view; }}
4、有两个类可以获取到屏幕的像素,之前我们使用到的都是Display类,这个类保存着关于屏幕的很多相关的参数,分辨率只是其中的一个。这里要介绍的另一个类是DisplayMetrics类,这个类保存的就是屏幕像素相关的内容。在Display的getSize()方法中,也是将DisplayMetrics的关于屏幕像素的宽、高设置于Point中。
//Displaypublic class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 通过Activity类中的getWindowManager()方法获取窗口管理,再调用getDefaultDisplay()方法获取Display对象 Display display = getWindowManager().getDefaultDisplay(); Point outSize = new Point(); display.getSize(outSize); int x = outSize.x; Toast.makeText(this, "手机像素为:" + x + "x" + y, Toast.LENGTH_LONG).show(); }}
//DisplayMetricspublic class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 声明一个DisplayMetrics对象 DisplayMetrics metrics = new DisplayMetrics(); // 获取Manager对象后获取Display对象,然后调用getMetrics()方法 getWindowManager().getDefaultDisplay().getMetrics(metrics); // 从DisplayMetrics对象中获取宽、高 int heightPixels = metrics.heightPixels; int widthPixels = metrics.widthPixels; // 通过吐司显示屏幕宽、高数据 Toast.makeText(this, "手机像素为:" + widthPixels + "x" + heightPixels, Toast.LENGTH_LONG).show(); }}
- Android中的手机屏幕像素的几种获取方式
- Android获取手机屏幕像素
- 简单的获取Android手机屏幕的像素
- Android获取手机屏幕像素大小
- 获取手机屏幕长宽的几种方法
- Android 获取Bitmap的几种方式
- Android获取图片的几种方式
- android获取手机屏幕的尺寸
- android 获取手机屏幕的大小
- Android 获得手机屏幕宽高参数的几种方法
- 获取Android设备的唯一标识的几种方式
- android 获取手机自定位的几种实现方式
- android 获取当前时间的几种方式,总结
- Android 中获取图片资源的几种方式
- Android获取View宽高的几种方式
- Android获取View宽高的几种方式
- Android获取View宽高的几种方式
- Android获取CPU使用率的几种方式
- NVcaffe源码阅读——Layer
- 1061. Dating 解析
- 前端技术基础篇
- 从微信跳转到appstore下载App
- 1014. Waiting in Line (30)
- Android中的手机屏幕像素的几种获取方式
- iOS应用打包提交AppStore
- nodejs日志读取、日志查找、日志刷新
- Final关键字
- 1015. Reversible Primes (20)
- 1062. Talent and Virtue 解析
- iOS证书和描述文件申请
- 微信消息管理之接收事件推送
- Windows 环境下 C 程序的编译配置