分享

android 自定义适配屏幕的 ImageView

 asd_Fung 2016-01-29
  1. package org.angryfun.view;  
  2. <pre name="code" class="java">import android.content.Context;  
  3. import android.graphics.Bitmap;  
  4. import android.util.AttributeSet;  
  5. import android.view.ViewGroup.LayoutParams;  
  6. import android.widget.ImageView;  
  7.   
  8. public class FitImageView extends ImageView {  
  9.     private Bitmap mBitmap;  
  10.     private int mBitmapWidth;  
  11.     private int mBitmapHeight;  
  12.   
  13.     private boolean mReady;  
  14.     private boolean mSetupPending;  
  15.   
  16.     public FitImageView(Context context) {  
  17.         super(context);  
  18.         init();  
  19.     }  
  20.   
  21.     public FitImageView(Context context, AttributeSet attrs) {  
  22.         this(context, attrs, 0);  
  23.     }  
  24.   
  25.     public FitImageView(Context context, AttributeSet attrs, int defStyle) {  
  26.         super(context, attrs, defStyle);  
  27.         init();  
  28.     }  
  29.   
  30.     private void init() {  
  31.         mReady = true;  
  32.   
  33.         if (mSetupPending) {  
  34.             setup();  
  35.             mSetupPending = false;  
  36.         }  
  37.     }  
  38.   
  39.     private void reSize() {  
  40.         int width = getResources().getDisplayMetrics().widthPixels;  
  41.         int height = (int) (getResources().getDisplayMetrics().heightPixels * 0.8);  
  42.         int imgH = mBitmapHeight;  
  43.         int imgW = mBitmapWidth;  
  44.         int lastH = imgH;  
  45.         int lastW = imgW;  
  46.         double radio = 1.0;  
  47.         radio = (width * 1.0) / imgW;  
  48.         if (imgH * radio > height) {  
  49.             radio = (height * 1.0) / imgH;  
  50.         }  
  51.         lastH = (int) (radio * imgH);  
  52.         lastW = (int) (radio * imgW);  
  53.         LayoutParams lp = this.getLayoutParams();  
  54.         lp.width = lastW;  
  55.         lp.height = lastH;  
  56.         this.setLayoutParams(lp);  
  57.     }  
  58.   
  59.     @Override  
  60.     public void setImageBitmap(Bitmap bm) {  
  61.         super.setImageBitmap(bm);  
  62.         mBitmap = bm;  
  63.         setup();  
  64.         reSize();  
  65.     }  
  66.   
  67.     private void setup() {  
  68.         if (!mReady) {  
  69.             mSetupPending = true;  
  70.             return;  
  71.         }  
  72.   
  73.         if (mBitmap == null) {  
  74.             return;  
  75.         }  
  76.   
  77.         mBitmapHeight = mBitmap.getHeight();  
  78.         mBitmapWidth = mBitmap.getWidth();  
  79.   
  80.         invalidate();  
  81.     }  
  82.   

出处:http://blog.csdn.net/liufang1991/article/details/41819577

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多