国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android高手進階教程(二十二)之Android中幾種圖像特效處理的集錦匯總!!

2019-12-12 04:34:40
字體:
來源:轉載
供稿:網友

大家好,這一節給大家分享的是Android中幾種圖像特效處理的小技巧,比如圓角,倒影,還有就是圖片縮放,Drawable轉化為Bitmap,Bitmap轉化為Drawable等等.

廢話少說了,直接講解今天的實例,本例主要是先獲取壁紙(getWallpaper()),然后對當前壁紙的一些特效處理.大家按步驟一步一步來:

第一步:新建一個Android工程命名為ImageDemo,工程結構如下:

第二步:新建一個.Java文件,命名為ImageUtil.java,在里面定義一些圖片處理方法,代碼如下:

package com.android.tutor; import androidgraphicsBitmap; import androidgraphicsCanvas; import androidgraphicsLinearGradient; import androidgraphicsMatrix; import androidgraphicsPaint; import androidgraphicsPixelFormat; import androidgraphicsPorterDuffXfermode; import androidgraphicsRect; import androidgraphicsRectF; import androidgraphicsBitmapConfig; import androidgraphicsPorterDuffMode; import androidgraphicsShaderTileMode; import androidgraphicsdrawableDrawable; public class ImageUtil {      //放大縮小圖片   public static Bitmap zoomBitmap(Bitmap bitmap,int w,int h){     int width = bitmapgetWidth();     int height = bitmapgetHeight();     Matrix matrix = new Matrix();     float scaleWidht = ((float)w / width);     float scaleHeight = ((float)h / height);     matrixpostScale(scaleWidht, scaleHeight);     Bitmap newbmp = BitmapcreateBitmap(bitmap, 0, 0, width, height, matrix, true);     return newbmp;   }   //將Drawable轉化為Bitmap    public static Bitmap drawableToBitmap(Drawable drawable){       int width = drawablegetIntrinsicWidth();       int height = drawablegetIntrinsicHeight();       Bitmap bitmap = BitmapcreateBitmap(width, height,           drawablegetOpacity() != PixelFormatOPAQUE ? BitmapConfigARGB_8888               : BitmapConfigRGB_565);       Canvas canvas = new Canvas(bitmap);       drawablesetBounds(0,0,width,height);       drawabledraw(canvas);       return bitmap;            }        //獲得圓角圖片的方法   public static Bitmap getRoundedCornerBitmap(Bitmap bitmap,float roundPx){          Bitmap output = BitmapcreateBitmap(bitmapgetWidth(), bitmap         getHeight(), ConfigARGB_8888);     Canvas canvas = new Canvas(output);       final int color = 0xff424242;     final Paint paint = new Paint();     final Rect rect = new Rect(0, 0, bitmapgetWidth(), bitmapgetHeight());     final RectF rectF = new RectF(rect);       paintsetAntiAlias(true);     canvasdrawARGB(0, 0, 0, 0);     paintsetColor(color);     canvasdrawRoundRect(rectF, roundPx, roundPx, paint);       paintsetXfermode(new PorterDuffXfermode(ModeSRC_IN));     canvasdrawBitmap(bitmap, rect, rect, paint);       return output;   }   //獲得帶倒影的圖片方法   public static Bitmap createReflectionImageWithOrigin(Bitmap bitmap){     final int reflectionGap = 4;     int width = bitmapgetWidth();     int height = bitmapgetHeight();          Matrix matrix = new Matrix();     matrixpreScale(1, -1);          Bitmap reflectionImage = BitmapcreateBitmap(bitmap,          0, height/2, width, height/2, matrix, false);          Bitmap bitmapWithReflection = BitmapcreateBitmap(width, (height + height/2), ConfigARGB_8888);          Canvas canvas = new Canvas(bitmapWithReflection);     canvasdrawBitmap(bitmap, 0, 0, null);     Paint deafalutPaint = new Paint();     canvasdrawRect(0, height,width,height + reflectionGap,         deafalutPaint);          canvasdrawBitmap(reflectionImage, 0, height + reflectionGap, null);          Paint paint = new Paint();     LinearGradient shader = new LinearGradient(0,         bitmapgetHeight(), 0, bitmapWithReflectiongetHeight()         + reflectionGap, 0x70ffffff, 0x00ffffff, TileModeCLAMP);     paintsetShader(shader);     // Set the Transfer mode to be porter duff and destination in     paintsetXfermode(new PorterDuffXfermode(ModeDST_IN));     // Draw a rectangle using the paint with our linear gradient     canvasdrawRect(0, height, width, bitmapWithReflectiongetHeight()         + reflectionGap, paint);       return bitmapWithReflection;   }    } 

第三步:修改main.xml布局文件,主要放了兩個ImageView控件,代碼如下:

<?xml version="0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemasandroidcom/apk/res/android"   android:orientation="vertical"   android:layout_width="fill_parent"   android:layout_height="fill_parent"   >   <ImageView      android:id="@+id/image01"      android:layout_width="wrap_content"      android:layout_height="wrap_content"      android:padding="10px"     />   <ImageView     android:id="@+id/image02"     android:layout_width="wrap_content"      android:layout_height="wrap_content"      android:padding="10px"   /> </LinearLayout> 

第四步:修改主核心程序,ImageDemo.java,代碼如下:

package comandroidtutor; import androidappActivity; import androidgraphicsBitmap; import androidgraphicsdrawableDrawable; import androidosBundle; import androidwidgetImageView; public class Imagedemo extends Activity {   private ImageView mImageView01,mImageView02;      public void onCreate(Bundle savedInstanceState) {     superonCreate(savedInstanceState);     setContentView(Rlayoutmain);     setupViews();   }      private void setupViews(){     mImageView01 = (ImageView)findViewById(Ridimage01);     mImageView02 = (ImageView)findViewById(Ridimage02);          //獲取壁紙返回值是Drawable     Drawable drawable = getWallpaper();     //將Drawable轉化為Bitmap     Bitmap bitmap = ImageUtildrawableToBitmap(drawable);     //縮放圖片     Bitmap zoomBitmap = ImageUtilzoomBitmap(bitmap, 100, 100);     //獲取圓角圖片     Bitmap roundBitmap = ImageUtilgetRoundedCornerBitmap(zoomBitmap, 0f);     //獲取倒影圖片     Bitmap reflectBitmap = ImageUtilcreateReflectionImageWithOrigin(zoomBitmap);     //這里可以讓Bitmap再轉化為Drawable //   Drawable roundDrawable = new BitmapDrawable(roundBitmap);     //   Drawable reflectDrawable = new BitmapDrawable(reflectBitmap);     //   mImageViewsetBackgroundDrawable(roundDrawable); //   mImageViewsetBackgroundDrawable(reflectDrawable);              mImageViewsetImageBitmap(roundBitmap);     mImageViewsetImageBitmap(reflectBitmap);   }          } 

第五步:運行上述工程,查看效果如下:

OK大功告成了!!

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 科技| 彩票| 江川县| 乌兰察布市| 翁源县| 东明县| 曲周县| 舒城县| 郑州市| 汤原县| 会昌县| 鹿邑县| 安陆市| 乐山市| 阜新市| 泸州市| 九寨沟县| 深圳市| 西丰县| 红安县| 手游| 桓台县| 新闻| 洮南市| 泰安市| 青河县| 普安县| 贵南县| 台东市| 河东区| 出国| 景东| 民丰县| 弥渡县| 神农架林区| 屏山县| 保德县| 雅安市| 牟定县| 镇坪县| 崇义县|