大家好,这一节给大家分享的是Android中几种图像特效处理的小技巧,比如圆角,倒影,还有就是图片缩放,Drawable转化为Bitmap,Bitmap转化为Drawable等等.
废话少说了,直接讲解今天的实例,本例主要是先获取壁纸(getWallpaper()),然后对当前壁纸的一些特效处理.大家按步骤一步一步来:
第一步:新建一个Android工程命名为ImageDemo,工程结构如下:
第二步:新建一个.java文件,命名为ImageUtil.java,在里面定义一些图片处理方法,代码如下:
-
package
com.android.tutor;
-
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
ImageUtil{
-
-
-
public
static
BitmapzoomBitmap(Bitmapbitmap,
int
w,
int
h){
-
int
width=bitmap.getWidth();
-
int
height=bitmap.getHeight();
-
Matrixmatrix=new
Matrix();
-
float
scaleWidht=((
float
)w/width);
-
float
scaleHeight=((
float
)h/height);
-
matrix.postScale(scaleWidht,scaleHeight);
-
Bitmapnewbmp=Bitmap.createBitmap(bitmap,0
,
0
,width,height,matrix,
true
);
-
return
newbmp;
-
}
-
-
public
static
BitmapdrawableToBitmap(Drawabledrawable){
-
int
width=drawable.getIntrinsicWidth();
-
int
height=drawable.getIntrinsicHeight();
-
Bitmapbitmap=Bitmap.createBitmap(width,height,
-
drawable.getOpacity()!=PixelFormat.OPAQUE?Bitmap.Config.ARGB_8888
-
:Bitmap.Config.RGB_565);
-
Canvascanvas=new
Canvas(bitmap);
-
drawable.setBounds(0
,
0
,width,height);
-
drawable.draw(canvas);
-
return
bitmap;
-
-
}
-
-
-
public
static
BitmapgetRoundedCornerBitmap(Bitmapbitmap,
float
roundPx){
-
-
Bitmapoutput=Bitmap.createBitmap(bitmap.getWidth(),bitmap
-
.getHeight(),Config.ARGB_8888);
-
Canvascanvas=new
Canvas(output);
-
-
final
int
color=
0xff424242
;
-
final
Paintpaint=
new
Paint();
-
final
Rectrect=
new
Rect(
0
,
0
,bitmap.getWidth(),bitmap.getHeight());
-
final
RectFrectF=
new
RectF(rect);
-
-
paint.setAntiAlias(true
);
-
canvas.drawARGB(0
,
0
,
0
,
0
);
-
paint.setColor(color);
-
canvas.drawRoundRect(rectF,roundPx,roundPx,paint);
-
-
paint.setXfermode(new
PorterDuffXfermode(Mode.SRC_IN));
-
canvas.drawBitmap(bitmap,rect,rect,paint);
-
-
return
output;
-
}
-
-
public
static
BitmapcreateReflectionImageWithOrigin(Bitmapbitmap){
-
final
int
reflectionGap=
4
;
-
int
width=bitmap.getWidth();
-
int
height=bitmap.getHeight();
-
-
Matrixmatrix=new
Matrix();
-
matrix.preScale(1
,-
1
);
-
-
BitmapreflectionImage=Bitmap.createBitmap(bitmap,
-
0
,height/
2
,width,height/
2
,matrix,
false
);
-
-
BitmapbitmapWithReflection=Bitmap.createBitmap(width,(height+height/2
),Config.ARGB_8888);
-
-
Canvascanvas=new
Canvas(bitmapWithReflection);
-
canvas.drawBitmap(bitmap,0
,
0
,
null
);
-
PaintdeafalutPaint=new
Paint();
-
canvas.drawRect(0
,height,width,height+reflectionGap,
-
deafalutPaint);
-
-
canvas.drawBitmap(reflectionImage,0
,height+reflectionGap,
null
);
-
-
Paintpaint=new
Paint();
-
LinearGradientshader=new
LinearGradient(
0
,
-
bitmap.getHeight(),0
,bitmapWithReflection.getHeight()
-
+reflectionGap,0x70ffffff
,
0x00ffffff
,TileMode.CLAMP);
-
paint.setShader(shader);
-
-
paint.setXfermode(new
PorterDuffXfermode(Mode.DST_IN));
-
-
canvas.drawRect(0
,height,width,bitmapWithReflection.getHeight()
-
+reflectionGap,paint);
-
-
return
bitmapWithReflection;
-
}
-
-
}
第三步:修改main.xml布局文件,主要放了两个ImageView控件,代码如下:
-
<?xmlversion=
"1.0"
encoding=
"utf-8"
?>
-
<LinearLayoutxmlns: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/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
com.android.tutor;
-
import
android.app.Activity;
-
import
android.graphics.Bitmap;
-
import
android.graphics.drawable.Drawable;
-
import
android.os.Bundle;
-
import
android.widget.ImageView;
-
public
class
Imagedemo
extends
Activity{
-
private
ImageViewmImageView01,mImageView02;
-
-
public
void
onCreate(BundlesavedInstanceState){
-
super
.onCreate(savedInstanceState);
-
setContentView(R.layout.main);
-
setupViews();
-
}
-
-
private
void
setupViews(){
-
mImageView01=(ImageView)findViewById(R.id.image01);
-
mImageView02=(ImageView)findViewById(R.id.image02);
-
-
-
Drawabledrawable=getWallpaper();
-
-
Bitmapbitmap=ImageUtil.drawableToBitmap(drawable);
-
-
BitmapzoomBitmap=ImageUtil.zoomBitmap(bitmap,100
,
100
);
-
-
BitmaproundBitmap=ImageUtil.getRoundedCornerBitmap(zoomBitmap,10
.0f);
-
-
BitmapreflectBitmap=ImageUtil.createReflectionImageWithOrigin(zoomBitmap);
-
-
-
-
-
-
-
mImageView01.setImageBitmap(roundBitmap);
-
mImageView02.setImageBitmap(reflectBitmap);
-
}
-
-
-
}
第五步:运行上述工程,查看效果如下:
OK大功告成了!!
本文参考文献:http://wiki.impjq.net/doku.php?id=code:android-code:image-convert&rev=1275640889&mddo=print
分享到:
相关推荐
Android中几种图像特效处理方法,是Android中几种图像特效处理的小技巧,比如圆角,倒影,还有就是图片缩放,Drawable转化为Bitmap,Bitmap转化为Drawable等等.
Android绘图机制与处理技巧(三)——Android图像处理之图形特效处理
Android图像处理之图形特效处理
Android图像处理的画笔特效处理demo
大家好,这一节给大家分享的是Android中几种图像特效处理的小技巧,比如圆角,倒影,还有就是图片缩放,Drawable转化为Bitmap,Bitmap转化为Drawable等等. 废话少说了,直接讲解今天的实例,本例主要是先获取壁纸...
在Android编程中有时候需要对图片做特殊的...这些效果在Android中有很好的支持,通过颜色矩阵(ColorMatrix)和坐标变换矩阵(Matrix)可以完美的做出上面的所说的效果,下面将分别介绍这两个矩阵的用法和相关的函数。
集合了android对图片的各种特效处理 灰度,复古等风格的处理!
android几种图形特效,包括图片的圆角,图片的缩放,图片的倒影,图片的旋转等
android150种图片切换特效 演示 无源码
Android对于图片处理,最常使用到的数据结构是位图——Bitmap,它包含了一张图片所有的数据。整个图片都是由点阵和颜色值组成的,所谓点阵就是一个包含像素的矩阵,每一个元素对应着图片的一个像素。而颜色值——...
eoeAndroid特刊第二期:Android图像处理篇 pdf,eoeAndroid策划的第二篇专题,主要整理和翻译在Android中进行图像处理的一些资源和文章,通过本专题内容的学习,您可以掌握如何在Android上对图片编程,主要包括但不...
一款Android下的图像处理软件,功能强大,最重要的是支持手写,笔画
Android图像冰冻特效源码.zip
Android 常用图片特效处理源码.zip
主要介绍了 Android中几种图片特效的处理的实现方法的相关资料,这里有放大缩小图片,获得圆角图片,获得带倒影图片的几种方法,需要的朋友可以参考下
android常用图片特效处理,涵盖很多种类。比如灰度处理,颜色加深,自己看代码吧。有注释
Android 常用图片特效处理源码Android 常用图片特效处理源码
除了常用的画笔属性,比如普通的画笔(Paint),带边框、填充的style,颜色(Color),宽度(StrokeWidth),抗锯齿(ANTI_ALIAS_FLAG)等,Android还提供了各种各样专业的画笔工具,如记号笔、毛笔、蜡笔等,使用它们可以...
Android程序技术:图像图像处理实例.pptx