Android编程中图片特效处理方法小结

本文实例总结了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程序设计有所帮助。

时间: 2024-10-23 14:23:24

Android编程中图片特效处理方法小结的相关文章

Android编程中图片特效处理方法小结_Android

本文实例总结了Android编程中图片特效处理方法.分享给大家供大家参考,具体如下: 这里介绍的Android图片处理方法包括: 转换 -  drawable To  bitmap 缩放 -  Zoom 圆角 -  Round Corner 倒影 -  Reflected bitmapPrcess  code: package com.learn.games; import android.graphics.Bitmap; import android.graphics.Canvas; impo

Android编程获取图片数据的方法详解

本文实例讲述了Android编程获取图片数据的方法.分享给大家供大家参考,具体如下: 网络的访问在我们日常生活中太重要了,如果没有网络我们的生活将会是什么样子呢?Android手机和浏览器也是一样的,也可以通过网络通讯获取数据,如调用webservice,EJB等.下面就通过一个小例子从网络获取一幅图片并显示在手机上,开发中将会使用到一个新的组件ImageView. 1. 写一个用来处理字节流的工具类 package org.lxh.util; import java.io.ByteArrayO

Android编程中黑名单的实现方法_Android

本文实例讲述了Android编程中黑名单的实现方法.分享给大家供大家参考,具体如下: 说明:由于挂断电话android   api不是对外开放的,所以需要使用反射的方法得到拨打电话的服务. 1.将android源代码中的"aidl"文件拷贝到项目中 这样项目中会生成两个包:android.telephony:此包中文件为:NeighboringCellInfo.aidl com.android.internal.telephony;此包中文件为:ITelephony.aidl 2.通过

Android编程之图片颜色处理方法_Android

本文实例讲述了Android编程之图片颜色处理方法.分享给大家供大家参考,具体如下: 你想做到跟美图秀秀一样可以处理自己的照片,美化自己的照片吗?其实你也可以自己做一个这样的软件,废话不多说了,直接上图,上代码了! 效果图如下: 没处理前: 处理之后: MainActivity.java的代码如下: package net.loonggg.test; import android.app.Activity; import android.graphics.Bitmap; import andro

Android编程实现图片透明的方法

本文实例讲述了Android编程实现图片透明的方法.分享给大家供大家参考,具体如下: 今天弄了一个图片的透明方法. 效果图: 目录结构 main.xml <?xml version="1.0" encoding="utf-8" ?> <LinearLayout xmlns:Android="http://schemas.android.com/apk/res/android" android:orientation="

Android编程中黑名单的实现方法

本文实例讲述了Android编程中黑名单的实现方法.分享给大家供大家参考,具体如下: 说明:由于挂断电话android   api不是对外开放的,所以需要使用反射的方法得到拨打电话的服务. 1.将android源代码中的"aidl"文件拷贝到项目中 这样项目中会生成两个包:android.telephony:此包中文件为:NeighboringCellInfo.aidl com.android.internal.telephony;此包中文件为:ITelephony.aidl 2.通过

Android编程中光线传感器的调用方法详解

本文实例讲述了Android编程中光线传感器的调用方法.分享给大家供大家参考,具体如下: 1.activity如果要使用传感器,就必须实现SensorEventListener接口 2.得到传感器管理对象(sensormanager) 3.使用sensormanager.registerlistener 方法注册指定的传感器 4.在sensoreventlistener 接口中的onsensorchanged和onaccuracychanged方法中完成其他具体工作 public class T

shell编程中的字符串截取方法小结_linux shell

一.Gnu Linux shell 截取字符变量的前8位,有方法如下: 1.expr substr "$a" 1 8 2.echo $a|awk '{print substr(,1,8)}' 3.echo $a|cut -c1-8 4.echo $ 5.expr $a : '\(.\\).*' 6.echo $a|dd bs=1 count=8 2>/dev/null  二.按指定的字符串截取 1.第一种方法: ${varible##*string} 从左向右截取最后一个stri

Android编程中聊天页面背景图片、标题栏由于键盘引起问题的解决方法_Android

本文实例讲述了Android编程中聊天页面背景图片.标题栏由于键盘引起问题的解决方法.分享给大家供大家参考,具体如下: 在一个群里面有人问到 聊天页面由于键盘弹出来,导致自定义的标题栏不见和背景图片都变形了,然后自己也折腾了一下,在stackOverFlow上面找到了一个解决方法. 解决方法很简单: 1.在AndroidManifest.xml文件里面的Activity配置: 复制代码 代码如下: android:windowSoftInputMode="adjustResize|stateAl