短视频商城源码,Android获取屏幕尺寸、像素

软件工具
0 675
public void getScreen(){
    // 通过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:" + y+",screen:"+getPhysicsScreenSize(UDPConn.this), Toast.LENGTH_LONG).show();
}
 
 
    /**
     * 得到屏幕的物理尺寸,由于该尺寸是在出厂时,厂商写死的,所以仅供参考
     * 计算方法:获取到屏幕的分辨率:point.x和point.y,再取出屏幕的DPI(每英寸的像素数量),
     * 计算长和宽有多少英寸,即:point.x / dm.xdpi,point.y / dm.ydpi,屏幕的长和宽算出来了,
     * 再用勾股定理,计算出斜角边的长度,即屏幕尺寸。
     *
     * @param context
     * @return
     */
    public static double getPhysicsScreenSize(Context context) {
        WindowManager manager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
        Point point = new Point();
        manager.getDefaultDisplay().getRealSize(point);
        DisplayMetrics dm = context.getResources().getDisplayMetrics();
        int densityDpi = dm.densityDpi;//得到屏幕的密度值,但是该密度值只能作为参考,因为他是固定的几个密度值。
        double x = Math.pow(point.x / dm.xdpi, 2);//dm.xdpi是屏幕x方向的真实密度值,比上面的densityDpi真实。
        double y = Math.pow(point.y / dm.ydpi, 2);//dm.xdpi是屏幕y方向的真实密度值,比上面的densityDpi真实。
        double screenInches = Math.sqrt(x + y);
        return screenInches;
    }
 
    /**
     * 获取屏幕像素,尺寸,dpi相关信息
     * @param activity 上下文
     * @return 屏幕信息
     */
    public static String getScreenInfo(Activity activity){
        DisplayMetrics displayMetrics = new DisplayMetrics();
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
            //4.2开始有虚拟导航栏,增加了该方法才能准确获取屏幕高度
            activity.getWindowManager().getDefaultDisplay().getRealMetrics(displayMetrics);
        }else{
            activity.getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
            //displayMetrics = activity.getResources().getDisplayMetrics();//或者该方法也行
        }
        Point point = new Point();
        activity.getWindowManager().getDefaultDisplay().getRealSize(point);
        double x = Math.pow(point.x / displayMetrics.xdpi, 2);//dm.xdpi是屏幕x方向的真实密度值,比上面的densityDpi真实。
        double y = Math.pow(point.y / displayMetrics.ydpi, 2);//dm.xdpi是屏幕y方向的真实密度值,比上面的densityDpi真实。
        double screenInches = Math.sqrt(x + y);
        return "screenSize="+screenInches
                + ",densityDpi="+displayMetrics.densityDpi
                + ",width="+displayMetrics.widthPixels
                +",height="+displayMetrics.heightPixels;
    }


精选帖子
Android GKD v1.9.2-b1 广告跳过神器,附加最新规则 19
Nodepay零成本挖矿撸毛,和grass同理,没赶上grass的可以冲一下 109
Android 麦田影院 v1.0去广告纯净版 60
Android 网易云音乐 v1.5.30去广告定制版 55
AI Chat 超级AI语言助手 v4.0.0.0解锁高级版 59
Android 大师兄影视 v3.3.6去广告会员版 181
Android 追忆影视 v5.0.0去广告纯净版 127
Android 爱其意 v1.2.0去广告纯净版 116
Android 红果免费短剧 v6.0.1.33解锁会员版 180
热门帖子
Nodepay零成本挖矿撸毛,和grass同理,没赶上grass的可以冲一下 109
【精品免费PC梯子】目前最稳定的免费PC电脑梯子VPN推荐 – 五款高效电脑V2ray梯子工具 98
每天看看广告浏览日入500+操作简単,无脑操作,可矩阵 54
黑科技玩法,一单利润9.9,一天到手1000+,新手小白秒上手 48
全自动运行,单机日入500+,可批量操作,长期稳定项目… 45
全自动挂机项目,一天的收益800+,操作也是十分的方便 44
国外知名游戏打金无脑搬砖单机收益500,每天操作七到八个小时 43
无脑搬砖项目 0门槛 0投资 可复制,可矩阵操作 单日收入可达2000+ 40
种草平台发短视频,只动手不动脑,每天发发视频,日入500+ 37