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

首頁 > 系統 > Android > 正文

Android編程中圖片特效處理方法小結

2020-04-11 11:20:36
字體:
來源:轉載
供稿:網友

本文實例總結了Android編程中圖片特效處理方法。分享給大家供大家參考,具體如下:

這里介紹的Android圖片處理方法包括:

轉換 -  drawable To  bitmap
縮放 -  Zoom
圓角 -  Round Corner
倒影 -  Reflected

bitmapPrcess  code:

package com.learn.games; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.LinearGradient; import android.graphics.Matrix; import android.graphics.Paint; import android.graphics.PixelFormat; import android.graphics.PorterDuffXfermode; import android.graphics.Rect; import android.graphics.RectF; import android.graphics.Bitmap.Config; import android.graphics.PorterDuff.Mode; import android.graphics.Shader.TileMode; import android.graphics.drawable.Drawable; public class bitmapProcess {   // zoom   public static Bitmap zoomBitmap(Bitmap bitmap, int w, int h){     int width = bitmap.getWidth();     int height = bitmap.getHeight();     Matrix matrix = new Matrix();     float scaleWidth = w/(float)width;     float scaleHeight = h/(float)height;     matrix.postScale(scaleWidth, scaleHeight);     Bitmap bitmap2 = Bitmap.createBitmap(bitmap, 0, 0, width, height, matrix, true);     return bitmap2;      }   // drawable to bitmap   public static Bitmap drawable2Bitmap(Drawable drawable){     int width = drawable.getIntrinsicHeight();     int height = drawable.getIntrinsicHeight();     Bitmap bitmap = Bitmap.createBitmap(width, height, drawable.getOpacity()        != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888 : Bitmap.Config.RGB_565);     Canvas canvas = new Canvas(bitmap);     drawable.setBounds(0, 0, width, height);     drawable.draw(canvas);     return bitmap;   }   // Round Corner Bitmap   public static Bitmap getRoundCornerBitmap(Bitmap bitmap, float roundPX){     int width = bitmap.getWidth();     int height = bitmap.getHeight();     Bitmap bitmap2 = Bitmap.createBitmap(width, height, Config.ARGB_8888);     Canvas canvas = new Canvas(bitmap2);     final int color = 0xff424242;     final Paint paint = new Paint();     final Rect rect = new Rect(0, 0, width, height);     final RectF rectF = new RectF(rect);     paint.setColor(color);     paint.setAntiAlias(true);     canvas.drawARGB(0, 0, 0, 0);     canvas.drawRoundRect(rectF, roundPX, roundPX, paint);     paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));     canvas.drawBitmap(bitmap, rect, rect, paint);     return bitmap2;   }   // Reflect Bitmap   public static Bitmap createReflectedBitmap(Bitmap bitmap){     final int reflectedGap = 4;     int width = bitmap.getWidth();     int height = bitmap.getHeight();     Matrix matrix = new Matrix();     matrix.preScale(1, -1);     Bitmap reflectedImage = Bitmap.createBitmap(bitmap, 0, height/2, width, height/2, matrix, false);     Bitmap reflectedBitmap = Bitmap.createBitmap(width, (height + height/2), Config.ARGB_8888);     Canvas canvas = new Canvas(reflectedBitmap);     canvas.drawBitmap(bitmap, 0, 0, null);     Paint defaultPaint = new Paint();     canvas.drawRect(0, height, width, height + reflectedGap, defaultPaint);    canvas.drawBitmap(reflectedImage, 0, height + reflectedGap, null);     Paint paint = new Paint();     LinearGradient shader = new LinearGradient(0, bitmap.getHeight(), 0,                 reflectedBitmap.getHeight() + reflectedGap, 0x70ffffff, 0x00ffffff, TileMode.CLAMP);     paint.setShader(shader);     paint.setXfermode(new PorterDuffXfermode(Mode.DST_IN));     canvas.drawRect(0, height, width, reflectedBitmap.getHeight() + reflectedGap, paint);     return reflectedBitmap;   } }

Java Code:

package com.learn.games; import android.app.Activity; import android.graphics.Bitmap; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.widget.ImageView; public class MyBitmapProcessActivity extends Activity {   private ImageView imgView1;   private ImageView imgView2;   private ImageView imgView3;   private ImageView imgView4;   /** Called when the activity is first created. */   @Override   public void onCreate(Bundle savedInstanceState) {     super.onCreate(savedInstanceState);     setContentView(R.layout.main);     drawBitmap();   }   private void drawBitmap(){     imgView1 = (ImageView)findViewById(R.id.imgView1);     imgView2 = (ImageView)findViewById(R.id.imgView2);     imgView3 = (ImageView)findViewById(R.id.imgView3);     imgView4 = (ImageView)findViewById(R.id.imgView4);     Drawable drawable = this.getWallpaper();     Bitmap bitmap = bitmapProcess.drawable2Bitmap(drawable);            // drawable to bitmap     Bitmap zoomBitmap = bitmapProcess.zoomBitmap(bitmap, 100, 100);         // zoom      Bitmap roundBitmap = bitmapProcess.getRoundCornerBitmap(zoomBitmap, 10.0f);   // round corner      Bitmap reflectedBitmap = bitmapProcess.createReflectedBitmap(zoomBitmap);    // reflect bitmap    // drawable to bitmap     imgView1.setImageBitmap(bitmap);     imgView2.setImageBitmap(zoomBitmap);     imgView3.setImageBitmap(roundBitmap);     imgView4.setImageBitmap(reflectedBitmap);     // bitmap to drawable     Drawable roundDrawable = new BitmapDrawable(roundBitmap);     Drawable reflectedDrawable = new BitmapDrawable(reflectedBitmap);     imgView1.setBackgroundDrawable(roundDrawable);     imgView2.setBackgroundDrawable(reflectedDrawable);   } }

XML:

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"   android:orientation="vertical"   android:layout_width="fill_parent"   android:layout_height="fill_parent"   >    <ImageView android:id="@+id/imgView1"     android:layout_width="wrap_content"      android:layout_height="wrap_content"/>   <ImageView android:id="@+id/imgView2"     android:layout_width="wrap_content"      android:layout_height="wrap_content"/>   <ImageView android:id="@+id/imgView3"     android:layout_width="wrap_content"      android:layout_height="wrap_content"/>   <ImageView android:id="@+id/imgView4"     android:layout_width="wrap_content"      android:layout_height="wrap_content"/> </LinearLayout>

效果圖:

drawable2bitmap

zoom

round corner

reflected bitmap

希望本文所述對大家Android程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 南丰县| 聂荣县| 吉林市| 千阳县| 盐源县| 涪陵区| 永年县| 通山县| 揭西县| 耒阳市| 沂源县| 三江| 吉安县| 玛多县| 万源市| 亚东县| 同江市| 缙云县| 时尚| 南昌市| 金昌市| 积石山| 读书| 天水市| 永德县| 贵港市| 翁源县| 芦溪县| 周口市| 石景山区| 肃南| 囊谦县| 南澳县| 齐河县| 砚山县| 秦皇岛市| 龙岩市| 宜都市| 雷波县| 阜平县| 襄汾县|