Androidは画像の実際のサイズと互換性のあるタブレットを取得します

2356 ワード

プロジェクトの中で1つのピクチャーはタブレットの中で特に小さい原因を表示して、ずっと原因を探し当てていないことに苦しんで、タブレットのテストもなくて、今日解像度を修正することを探して、関連する方法を編纂してやっと処理して、記録の下で比較します:
これから車輪を作らないようにする.
主に文章関連の画像表示の問題を取得して、直接getIntrinsicWidth()の方法で取得して、getIntrinsicWidth()が取得したのは画像の実際の幅ではありませんて、携帯電話で見るのはまあまあで、あまり差はありませんが、タブレットで見ると、
それはまるで女の子で、耻ずかしくて、そんなに小さく表示されています.
本題に戻ります.
解決方法:
1.携帯電話の解像度を取得するその解像度に密度を乗じる
    
   if (file.exists()) {
            //         ,    
            Drawable drawable = Drawable.createFromPath(savePath);
            DisplayMetrics  dm = new DisplayMetrics();
            //         
            dm = context.getResources().getDisplayMetrics();
             //      
             //  int screenWidth = dm.widthPixels;
             //  int screenHeight = dm.heightPixels;
             float density = dm.density;
             //      
             int imgWidth = (int) (drawable.getIntrinsicWidth() *density);
             int imgHeight = (int)( drawable.getIntrinsicHeight() * density);
             //drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
              drawable.setBounds(0, 0, imgWidth,imgHeight);
            //}
            return drawable;

        }

画像なしでロード
private void setDrawable(Drawable nDrawable) {
            drawable = nDrawable;
            //drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
            //setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
            
            DisplayMetrics  dm = new DisplayMetrics();
            //         
            dm = context.getResources().getDisplayMetrics();
             //      
             //  int screenWidth = dm.widthPixels;
             //  int screenHeight = dm.heightPixels;
             float density = dm.density;
             //      
             int imgWidth = (int) (drawable.getIntrinsicWidth() *density);
             int imgHeight = (int)( drawable.getIntrinsicHeight() * density);
             //drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
              drawable.setBounds(0, 0, imgWidth,imgHeight);
              setBounds(0, 0, imgWidth, imgHeight); //    ,               
        }
原文アドレス:http://hongshengpeng.com/article/show/254.aspx