2011.10.19(2)——— android 圆角与倒影
我只是把代码下了,忘了在呢看到了,对不住作者了
主要包含了 放大缩小 圆角图片 和 倒影
package com.lp.imageUI;
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 Bitmap zoomBitmap(Bitmap bitmap,int w,int h){
int width = bitmap.getWidth();
int height = bitmap.getHeight();
Matrix matrix = new Matrix();
float scaleWidht = ((float)w / width);
float scaleHeight = ((float)h / height);
matrix.postScale(scaleWidht, scaleHeight);
Bitmap newbmp = Bitmap.createBitmap(bitmap, 0, 0, width, height, matrix, true);
return newbmp;
}
//将Drawable转化为Bitmap
public static Bitmap drawableToBitmap(Drawable drawable){
int width = drawable.getIntrinsicWidth();
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;
}
//获得圆角图片的方法
public static Bitmap getRoundedCornerBitmap(Bitmap bitmap,float roundPx){
Bitmap output = Bitmap.createBitmap(bitmap.getWidth(), bitmap
.getHeight(), Config.ARGB_8888);
Canvas canvas = new Canvas(output);
final int color = 0xff424242;
final Paint paint = new Paint();
final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());
final RectF rectF = new RectF(rect);
paint.setAntiAlias(true);
canvas.drawARGB(0, 0, 0, 0);
paint.setColor(color);
/**
* 画一个圆角矩形
* rectF: 矩形
* roundPx 圆角在x轴上或y轴上的半径
*/
canvas.drawRoundRect(rectF, roundPx, roundPx+10, paint);
//设置两张图片相交时的模式
//setXfermode前的是 dst 之后的是src
//在正常的情况下,在已有的图像上绘图将会在其上面添加一层新的形状。
//如果新的Paint是完全不透明的,那么它将完全遮挡住下面的Paint;
//PorterDuffXfermode就可以来解决这个问题
//canvas原有的图片 可以理解为背景 就是dst
//新画上去的图片 可以理解为前景 就是src
// paint.setXfermode(new PorterDuffXfermode(Mode.SRC_OUT));
paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
canvas.drawBitmap(bitmap, rect, rect, paint);
return output;
}
//获得带倒影的图片方法
public static Bitmap createReflectionImageWithOrigin(Bitmap bitmap){
// 图片与倒影间隔距离
final int reflectionGap = 4;
// 图片的宽度
int width = bitmap.getWidth();
// 图片的高度
int height = bitmap.getHeight();
Matrix matrix = new Matrix();
// 图片缩放,x轴变为原来的1倍,y轴为-1倍,实现图片的反转
matrix.preScale(1, -1);
// 创建反转后的图片Bitmap对象,图片高是原图的一半。
Bitmap reflectionImage = Bitmap.createBitmap(bitmap,
0, height/2, width, height/2, matrix, false);
// 创建标准的Bitmap对象,宽和原图一致,高是原图的1.5倍。 可以理解为这张图将会在屏幕上显示 是原图和倒影的合体
Bitmap bitmapWithReflection = Bitmap.createBitmap(width, (height + height/2), Config.ARGB_8888);
// 构造函数传入Bitmap对象,为了在图片上画图
Canvas canvas = new Canvas(bitmapWithReflection);
// 画原始图片
canvas.drawBitmap(bitmap, 0, 0, null);
// 画间隔矩形
Paint deafalutPaint = new Paint();
canvas.drawRect(0, height,width,height + reflectionGap,
deafalutPaint);
// 画倒影图片
canvas.drawBitmap(reflectionImage, 0, height + reflectionGap, null);
// 实现倒影渐变效果
Paint paint = new Paint();
LinearGradient shader = new LinearGradient(0,
bitmap.getHeight(), 0, bitmapWithReflection.getHeight()
+ reflectionGap, 0x70ffffff, 0x00ffffff, TileMode.CLAMP);
paint.setShader(shader);
// Set the Transfer mode to be porter duff and destination in
// 覆盖效果
paint.setXfermode(new PorterDuffXfermode(Mode.DST_IN));
// Draw a rectangle using the paint with our linear gradient
canvas.drawRect(0, height, width, bitmapWithReflection.getHeight()
+ reflectionGap, paint);
return bitmapWithReflection;
}
}
圆角和倒影的效果如图:

- 大小: 45.1 KB
分享到:
相关推荐
计算机视觉大作业——三维重建.zip计算机视觉大作业——三维重建.zip计算机视觉大作业——三维重建.zip计算机视觉大作业——三维重建.zip计算机视觉大作业——三维重建.zip计算机视觉大作业——三维重建.zip计算机...
基于因子分析的我国A股上市...争力评价——以医药企业为例_张澳.caj
▕ ▕ ▕—————————————————————————————————————— ▕ ▕——[13.27MB] 【NPSWF32调试版本_11.1.102.55_debug】 ▕ ▕ ▕——[856 B] flashplayer.xpt ▕ ▕ ▕——[3.90MB...
2,jdk-170.tar.gz ——————————JDK1.7deb包 3,switch_java.sh -------------------------java其它版本切换 4,check_java.sh———————————版本核对 注意:使用命令接口切换时,需要将自己配置的...
python项目——Word助手.zip python项目——Word助手.zip python项目——Word助手.zip python项目——Word助手.zip python项目——Word助手.zip python项目——Word助手.zip python项目——Word助手.zip python项目...
微信小程序——新闻客户端(截图+源码).zip 微信小程序——新闻客户端(截图+源码).zip 微信小程序——新闻客户端(截图+源码).zip 微信小程序——新闻客户端(截图+源码).zip 微信小程序——新闻客户端(截图+...
python项目——RCQ读者书库.zip python项目——RCQ读者书库.zip python项目——RCQ读者书库.zip python项目——RCQ读者书库.zip python项目——RCQ读者书库.zip python项目——RCQ读者书库.zip python项目——RCQ...
19. 出——入 20. 东——西 21. 有——无 22. 多——少 23. 古——今 24. 入——出 25. 穷——富 26. 轻——重 27. 细——粗 28. 快——慢 29. 爱——恨 30. 哭——笑 31. 这——那 32. 分——合 33. 圆——方 34. ...
java毕业设计——基于java的动力节点系统的设计与实现(源码+数据库).zip java毕业设计——基于java的动力节点系统的设计与实现(源码+数据库).zip java毕业设计——基于java的动力节点系统的设计与实现(源码+数据库)....
,最近一直和医疗打交道,做些蓝牙有关的...2.深入了解Android蓝牙Bluetooth——《进级篇》 2.深入了解Android蓝牙Bluetooth——《总结篇》 欢迎入群 QQ交流群 :232203809 微信公众号:终端研发部。加入我们一起学习
Android support.v7包
Android中文翻译组——Android中文API合集(4).chm
2、当鼠标移动到省份选项后,城市下拉列表会自动更新,仅显示与该省份相关的城市; 3、进一步当鼠标移动到城市后,区县下拉列表会更新为仅显示所选城市的区县; 预览:https://fdsg8u.axshare.com ——————...
【标题】与【描述】提及的是关于小学语文学习中的一个重要组成部分——歇后语。歇后语是中国传统文化中的一种独特语言现象,它结合了形象生动的比喻和巧妙的谐音,通常用于表达幽默、讽刺或者寓意深刻的观点。这些歇...
应用层包过滤防火墙 一个简单的应用层包过滤防火墙实现 Qt/SQLite/NetFilter 编译过程可使用QtCreator编译,也可使用命令行 sudo qmake && make 来编译。 运行则执行 sudo ./firewall 即可。
第4 章 Linux——App 后台应用最广泛的系统 .. 107 第5 章 Nginx——App 后台HTTP 服务的利器 . 126 第6 章 MySQL——App 后台最常用的数据库 .. 140 第7 章 Redis——App 后台高性能的缓存系统 . 160 第8 章 ...
基于IntraWeb的数据表格的多选实现 既可以单条操作,也可以多选操作。 delphi源代码。 BS开发Web网站开发,不需要安装服务器,Apache和IIS都不需要,自带企业级服务器。...————————————————
直流-直流变换器的matlab仿真模块,实现了直流降压的功能。
java毕业设计——基于java的模拟写字板的设计与实现(论文+答辩PPT+源代码+数据库).zip java毕业设计——基于java的模拟写字板的设计与实现(论文+答辩PPT+源代码+数据库).zip java毕业设计——基于java的模拟写字板的...
ADS2011.10下载地址和破解文件 win_fix,压缩包里含license.lic,下载地址.txt,fix_document.txt,bin文件夹和fem文件夹。