本文章向大家介紹怎么在Android中利用反射機制獲取屏幕的寬高的基本知識點總結和需要注意事項,具有一定的參考價值,需要的朋友可以參考一下。
Android是一種基于Linux內核的自由及開放源代碼的操作系統,主要使用于移動設備,如智能手機和平板電腦,由美國Google公司和開放手機聯盟領導及開發。
獲取屏幕寬高
方法一
int screenWidth = getWindowManager().getDefaultDisplay().getWidth(); int screenHeight = getWindowManager().getDefaultDisplay().getHeight();
這個方法會提示過時了,推薦后邊兩種。
方法二
DisplayMetrics dm = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(dm); int screenWidth = dm.widthPixels; int screenHeight = dm.heightPixels;
方法三
Resources resources = this.getResources(); DisplayMetrics dm = resources.getDisplayMetrics(); int screenWidth = dm.widthPixels; int screenHeight = dm.heightPixels;
public Bitmap screenshot() { Resources resources = this.getResources(); DisplayMetrics dm = resources.getDisplayMetrics(); String surfaceClassName = ""; if (Build.VERSION.SDK_INT <= 17) { surfaceClassName = "android.view.Surface"; } else { surfaceClassName = "android.view.SurfaceControl"; } try { Class<?> c = Class.forName(surfaceClassName); Method method = c.getMethod("screenshot", new Class[]{int.class, int.class}); method.setAccessible(true); return (Bitmap) method.invoke(null, dm.widthPixels, dm.heightPixels); } catch (IllegalAccessException | NoSuchMethodException | InvocationTargetException | ClassNotFoundException e) { e.printStackTrace(); } return null; }
最后返回的 Bitmap 對象就是截取得圖像了。
需要的權限
<uses-permission android:name="android.permission.READ_FRAME_BUFFER"/>
調用截屏這個方法需要系統權限,因此沒辦法系統簽名的應用是會報錯的。
以上就是小編為大家帶來的怎么在Android中利用反射機制獲取屏幕的寬高的全部內容了,希望大家多多支持億速云!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。