第一步:新建一个Android工程命名为ImageDemo,工程结构如下:

第二步.java文件ImageUtil.java,在里面定义一些图片处理方法<span color:#333333;"="" style="font-size: 10.5pt; ">,代码如下:

001 packagecom.android.tutor;
002 importandroid.graphics.Bitmap;
003 importandroid.graphics.Canvas;
004 importandroid.graphics.LinearGradient;
005 importandroid.graphics.Matrix;
006 importandroid.graphics.Paint;
007 importandroid.graphics.PixelFormat;
008 importandroid.graphics.PorterDuffXfermode;
009 importandroid.graphics.Rect;
010 importandroid.graphics.RectF;
011 importandroid.graphics.Bitmap.Config;
012 importandroid.graphics.PorterDuff.Mode;
013 importandroid.graphics.Shader.TileMode;
014 importandroid.graphics.drawable.Drawable;
015 publicclassImageUtil {
016
017 //放大缩小图片
018 publicstaticBitmap zoomBitmap(Bitmap bitmap,intw,inth){
019 intwidth = bitmap.getWidth();
020 intheight = bitmap.getHeight();
021 Matrix matrix = newMatrix();
022 floatscaleWidht = ((float)w / width);
023 floatscaleHeight = ((float)h / height);
024 matrix.postScale(scaleWidht, scaleHeight);
025 Bitmap newbmp = Bitmap.createBitmap(bitmap, 0, 0, width, height, matrix, true);
026 returnnewbmp;
027 }
028 //将Drawable转化为Bitmap
029 publicstaticBitmap drawableToBitmap(Drawable drawable){
030 intwidth = drawable.getIntrinsicWidth();
031 intheight = drawable.getIntrinsicHeight();
032 Bitmap bitmap = Bitmap.createBitmap(width, height,
033 drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888
034 : Bitmap.Config.RGB_565);
035 Canvas canvas = newCanvas(bitmap);
036 drawable.setBounds(0,0,width,height);
037 drawable.draw(canvas);
038 returnbitmap;
039
040 }
041
042 //获得圆角图片的方法
043 publicstaticBitmap getRoundedCornerBitmap(Bitmap bitmap,floatroundPx){
044
045 Bitmap output = Bitmap.createBitmap(bitmap.getWidth(), bitmap
046 .getHeight(), Config.ARGB_8888);
047 Canvas canvas = newCanvas(output);
048
049 finalintcolor = 0xff424242;
050 finalPaint paint = newPaint();
051 finalRect rect = newRect(0, 0, bitmap.getWidth(), bitmap.getHeight());
052 finalRectF rectF = newRectF(rect);
053
054 paint.setAntiAlias(true);
055 canvas.drawARGB(0, 0, 0, 0);
056 paint.setColor(color);
057 canvas.drawRoundRect(rectF, roundPx, roundPx, paint);
058
059 paint.setXfermode(newPorterDuffXfermode(Mode.SRC_IN));
060 canvas.drawBitmap(bitmap, rect, rect, paint);
061
062 returnoutput;
063 }
064 //获得带倒影的图片方法
065 publicstaticBitmap createReflectionImageWithOrigin(Bitmap bitmap){
066 finalintreflectionGap = 4;
067 intwidth = bitmap.getWidth();
068 intheight = bitmap.getHeight();
069
070 Matrix matrix = newMatrix();
071 matrix.preScale(1, -1);
072
073 Bitmap reflectionImage = Bitmap.createBitmap(bitmap,
074 0, height/2, width, height/2, matrix, false);
075
076 Bitmap bitmapWithReflection = Bitmap.createBitmap(width, (height + height/2), Config.ARGB_8888);
077
078 Canvas canvas = newCanvas(bitmapWithReflection);
079 canvas.drawBitmap(bitmap, 0, 0, null);
080 Paint deafalutPaint = newPaint();
081 canvas.drawRect(0, height,width,height + reflectionGap,
082 deafalutPaint);
083
084 canvas.drawBitmap(reflectionImage, 0, height + reflectionGap, null);
085
086 Paint paint = newPaint();
087 LinearGradient shader = newLinearGradient(0,
088 bitmap.getHeight(), 0, bitmapWithReflection.getHeight()
089 + reflectionGap, 0x70ffffff, 0x00ffffff, TileMode.CLAMP);
090 paint.setShader(shader);
091 // Set the Transfer mode to be porter duff and destination in
092 paint.setXfermode(newPorterDuffXfermode(Mode.DST_IN));
093 // Draw a rectangle using the paint with our linear gradient
094 canvas.drawRect(0, height, width, bitmapWithReflection.getHeight()
095 + reflectionGap, paint);
096
097 returnbitmapWithReflection;
098 }
099
100 }
第三步:修改main.xml布局文件,主要放了两个ImageView控件,代码如下:
1 <!--?xml version="1.0" encoding="utf-8"?-->

更多相关文章

  1. Android开机启动动画
  2. android 读取 attr 资源
  3. Android(安卓)选择文件并加载数据到界面
  4. Android(安卓)studio简易计算机
  5. Android中几种图片特效的处理的实现方法
  6. Android实现自动轮播图效果
  7. Android中实现输入图片地址浏览图片操作
  8. Android通过Movie展示Gif格式图片
  9. 【Android小经验】 ListView列中的一个ITEM值

随机推荐

  1. MySQL数据表合并去重的简单实现方法
  2. mysql 循环批量插入的实例代码详解
  3. 详解MYSQL中重命名procedure的一种方法
  4. Oracle开启和关闭的四种模式
  5. MySQL并发更新数据时的处理方法
  6. 新手学习MySQL索引
  7. 由不同的索引更新解决MySQL死锁套路
  8. 通过唯一索引S锁与X锁来了解MySQL死锁套
  9. 初学者从源码理解MySQL死锁问题
  10. 细谈Mysql的存储过程和存储函数