亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

如何放大一個drawable

2019-11-06 09:56:49
字體:
來源:轉載
供稿:網友

縮小一個drawable在網上很容易找到答案,不過變大一個drawable就不是那么好找的了。

不通的思路:Bitmap.createBitmap

網上很多方案都是使用這個方法

public static Bitmap createBitmap(Bitmap source, int x, int y, int width, int height,            Matrix m, boolean filter) {        checkXYSign(x, y);        checkWidthHeight(width, height);        if (x + width > source.getWidth()) {            throw new IllegalArgumentException("x + width must be <= bitmap.width()");        }        if (y + height > source.getHeight()) {            throw new IllegalArgumentException("y + height must be <= bitmap.height()");        }        // check if we can just return our argument unchanged        if (!source.isMutable() && x == 0 && y == 0 && width == source.getWidth() &&                height == source.getHeight() && (m == null || m.isIdentity())) {            return source;        }        int neww = width;        int newh = height;        Canvas canvas = new Canvas();        Bitmap bitmap;        Paint paint;        Rect srcR = new Rect(x, y, x + width, y + height);        RectF dstR = new RectF(0, 0, width, height);        Config newConfig = Config.ARGB_8888;        final Config config = source.getConfig();        // GIF files generate null configs, assume ARGB_8888        if (config != null) {            switch (config) {                case RGB_565:                    newConfig = Config.RGB_565;                    break;                case ALPHA_8:                    newConfig = Config.ALPHA_8;                    break;                //noinspection dePRecation                case ARGB_4444:                case ARGB_8888:                default:                    newConfig = Config.ARGB_8888;                    break;            }        }        if (m == null || m.isIdentity()) {            bitmap = createBitmap(neww, newh, newConfig, source.hasAlpha());            paint = null;   // not needed        } else {            final boolean transformed = !m.rectStaysRect();            RectF deviceR = new RectF();            m.mapRect(deviceR, dstR);            neww = Math.round(deviceR.width());            newh = Math.round(deviceR.height());            bitmap = createBitmap(neww, newh, transformed ? Config.ARGB_8888 : newConfig,                    transformed || source.hasAlpha());            canvas.translate(-deviceR.left, -deviceR.top);            canvas.concat(m);            paint = new Paint();            paint.setFilterBitmap(filter);            if (transformed) {                paint.setAntiAlias(true);            }        }        // The new bitmap was created from a known bitmap source so assume that        // they use the same density        bitmap.mDensity = source.mDensity;        bitmap.setHasAlpha(source.hasAlpha());        bitmap.setPremultiplied(source.mRequestPremultiplied);        canvas.setBitmap(bitmap);        canvas.drawBitmap(source, srcR, dstR, paint);        canvas.setBitmap(null);        return bitmap;    }

這個方法很容易看出,無法創建比原圖片大的圖片,可以縮小,但是無法放大。
 if (x + width > source.getWidth()) {            throw new IllegalArgumentException("x + width must be <= bitmap.width()");        }        if (y + height > source.getHeight()) {            throw new IllegalArgumentException("y + height must be <= bitmap.height()");        }

換思路:利用canvas

大體看了一下Bitmap的諸多方法,貌似都不行,那就試著用canvas重新畫一個bitmap了,直接上代碼
  public static Drawable createDrawable(Context context, int width, int height, Drawable drawable) {        if (drawable == null || width <= 0 || height <= 0) {            return null;        }
        Bitmap newBitmap = null;
        try {    
	    newBitmap = Bitmap.createBitmap(width, height, config);        } catch (OutOfMemoryError e) {            e.printStackTrace();        }
if (newBitmap == null) {
           return null;
        }
        Canvas canvas = new Canvas();        canvas.setBitmap(newBitmap);        drawable.setBounds(new Rect(0, 0, width, height));        drawable.draw(canvas);        return new BitmapDrawable(context.getResources(), newBitmap);    }
width和height就是需要的寬和高,當然,如果放大的話,事先算好了就可以。代碼很簡單,不過最后轉出來的drawable變成了bitmapdrawable。注意最后的地方:new BitmapDrawable的時候,一定要傳resource,否則會使用DisplayMetrics.DENSITY_DEFAULT的值。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产欧美在线视频| 国产精品成人va在线观看| 久久精品中文字幕免费mv| 最近2019中文字幕第三页视频| www.亚洲一二| 亚洲国产小视频| 国产日韩精品在线| 日韩成人激情视频| 成人网在线免费看| 久久久久999| 亚洲精品美女在线观看| 久久久999成人| 色久欧美在线视频观看| 日韩美女av在线免费观看| 91超碰中文字幕久久精品| 色综合导航网站| 精品国偷自产在线视频99| 国产成人综合精品| 国产精品欧美日韩| 日韩欧美国产成人| 午夜免费日韩视频| 亚洲国产精品va在线观看黑人| 国内揄拍国内精品| 亚洲欧美日韩另类| 色琪琪综合男人的天堂aⅴ视频| 欧美午夜精品伦理| 国产精品免费视频xxxx| 91tv亚洲精品香蕉国产一区7ujn| 色中色综合影院手机版在线观看| 久久影院资源站| 欧美激情一区二区久久久| 精品视频久久久久久| 国产在线视频欧美| 欧美亚洲在线视频| 一本色道久久综合亚洲精品小说| 久久久久久有精品国产| 97av在线影院| 欧美在线观看www| 国产精品久久久久91| 国产欧美精品va在线观看| 亚洲激情久久久| 综合激情国产一区| 日本乱人伦a精品| 成人妇女淫片aaaa视频| 亚洲欧美日韩国产成人| 精品中文字幕视频| 国产精品成久久久久三级| 91精品国产91久久久久久最新| 欧美猛少妇色xxxxx| 久久久精品国产亚洲| 成人国产精品免费视频| 国产成人一区二区三区小说| 日本成人黄色片| 亚洲午夜色婷婷在线| 精品国产乱码久久久久久虫虫漫画| 色先锋久久影院av| 日韩av电影中文字幕| 欧美极度另类性三渗透| 亚洲专区中文字幕| 日韩精品欧美国产精品忘忧草| 92裸体在线视频网站| 国产精品第2页| 精品久久久久久| 成人黄色激情网| 精品久久久久久久久国产字幕| 日韩精品视频在线播放| 亚洲男人的天堂网站| 久久久久久久国产| 国产精品久久久精品| 久久琪琪电影院| 欧美色xxxx| 国产一区二区视频在线观看| 91精品国产高清久久久久久91| 欧美刺激性大交免费视频| 国产精品美女久久久久久免费| 日韩精品在线观| 97香蕉久久夜色精品国产| 亚洲精品久久久一区二区三区| 日韩av免费网站| 在线看日韩欧美| 欧美成人黑人xx视频免费观看| 国产精品久久久久久久久久ktv| 欧美一区二区视频97| 欧美性色xo影院| 国产精品福利网站| 欧美日韩国产精品一区| 9.1国产丝袜在线观看| 91理论片午午论夜理片久久| 成人中心免费视频| 福利二区91精品bt7086| 亚洲欧美国产精品久久久久久久| 国产精品久久视频| 国产精品爽爽爽爽爽爽在线观看| 欧美国产欧美亚洲国产日韩mv天天看完整| 欧美黑人xxxⅹ高潮交| 精品夜色国产国偷在线| 69久久夜色精品国产69| 日韩中文在线不卡| 久久九九热免费视频| 久久婷婷国产麻豆91天堂| 久久久精品国产| 中文字幕亚洲综合久久| 亚洲精品久久久久| 97免费中文视频在线观看| 欧美黄色免费网站| 91av视频在线播放| 色偷偷噜噜噜亚洲男人的天堂| 国产精品高清在线| 97av在线播放| 91久久久久久久一区二区| 欧美成人免费一级人片100| 亚洲日韩第一页| 亚洲精品乱码久久久久久按摩观| 亚洲最大福利网站| 亚洲毛茸茸少妇高潮呻吟| 国产精品一区二区性色av| 日本中文字幕不卡免费| 亚洲国产另类久久精品| 亚洲高清在线观看| 久久久久久国产三级电影| 最近2019中文字幕第三页视频| 国产亚洲福利一区| 亚洲一区免费网站| 亚洲精品动漫100p| 亚洲国产日韩欧美在线99| 亚洲第一福利网站| 热久久这里只有精品| 日韩a**中文字幕| 久久艳片www.17c.com| 欧美午夜激情小视频| 亚洲香蕉成视频在线观看| 日本道色综合久久影院| 久久久久国产精品一区| 成人信息集中地欧美| 91精品视频网站| 亚洲欧洲在线播放| 欧美激情啊啊啊| 91精品国产精品| 国产精品第一区| 欧美性猛交99久久久久99按摩| 91色琪琪电影亚洲精品久久| 亚洲成人黄色网| 国产欧美在线视频| 福利二区91精品bt7086| 亚洲精品在线看| 国产精品美腿一区在线看| 精品呦交小u女在线| 成人精品网站在线观看| 丝袜亚洲另类欧美重口| 国产va免费精品高清在线| 久久久精品日本| 久久手机免费视频| 亚洲视频国产视频| 日韩av在线电影网| 日日骚av一区| 中文字幕欧美亚洲| 欧美极品第一页| 成人www视频在线观看| 精品国产网站地址| 久久久精品在线观看| 日韩精品视频三区| 97超级碰在线看视频免费在线看| 不卡av电影在线观看| 亚洲精品久久久久久久久久久久久|