androidBitmap圆角与倒影实现

/**
	 * 画一个圆角图
	 *
	 * @param bitmap
	 * @param roundPx
	 * @return
	 */
	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);
		canvas.drawRoundRect(rectF, roundPx, roundPx, paint);
		paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
		canvas.drawBitmap(bitmap, rect, rect, paint);
		return output;
	}

	/**
	 * 创建倒影效果
	 *
	 * @return
	 */
	public boolean createReflectedImages() {
		// 倒影图和原图之间的距离
		final int reflectionGap = 4;
		int index = 0;
		for (GalleryWith3DData imageId : mImageIds) {
			// 返回原图解码之后的bitmap对象
			Bitmap originalImage = BitmapFactory.decodeResource(
					mContext.getResources(), imageId.getInteger());
			int width = originalImage.getWidth();
			int height = originalImage.getHeight();
			// 创建矩阵对象
			Matrix matrix = new Matrix();
			// 指定矩阵(x轴不变,y轴相反)
			matrix.preScale(1, -1);
			// 将矩阵应用到该原图之中,返回一个宽度不变,高度为原图1/2的倒影位图
			Bitmap reflectionImage = Bitmap.createBitmap(originalImage, 0,
					height / 2, width, height / 2, matrix, false);
			// 创建一个宽度不变,高度为原图+倒影图高度的位图
			Bitmap bitmapWithReflection = Bitmap.createBitmap(width,
					(height + height / 2), Config.ARGB_8888);
			// 将上面创建的位图初始化到画布
			Canvas canvas = new Canvas(bitmapWithReflection);
			canvas.drawBitmap(getRoundedCornerBitmap(originalImage, 20), 0, 0,
					null);
			int len = imageId.getstr().length();
			double lenWeght = len * 50 * 0.9;
			int ban = width / 2;
			int ban1 = (int) (lenWeght / 2);
			int hua = ban - ban1;
			if (imageId.getFlagRecommend()) {
				canvas.rotate(30);
				canvas.drawText(mStrRecommend, hua - 20, 150,
						createPaint(Color.RED));
				canvas.rotate(-30);
			}
			Paint deafaultPaint = new Paint();
			deafaultPaint.setAntiAlias(false);
			canvas.drawBitmap(getRoundedCornerBitmap(reflectionImage, 20), 0,
					height + reflectionGap, null);
			Paint paint = new Paint();
			paint.setAntiAlias(false);
	/**
	 * 参数一:为渐变起初点坐标x位置, 参数二:为y轴位置, 参数三和四:分辨对应渐变终点, 最后参数为平铺方式,
	 * 这里设置为镜像Gradient是基于Shader类,所以我们通过Paint的setShader方法来设置这个渐变
	*/
			LinearGradient shader = new LinearGradient(0,
					originalImage.getHeight(), 0,
					bitmapWithReflection.getHeight() + reflectionGap,
					0x70ffffff, 0x00ffffff, TileMode.MIRROR);
			// 设置阴影
			paint.setShader(shader);
			paint.setXfermode(new PorterDuffXfermode(
					android.graphics.PorterDuff.Mode.DST_IN));
			// 用已经定义好的画笔构建一个矩形阴影渐变效果
			canvas.drawRect(0, height, width,
                           bitmapWithReflection.getHeight() + reflectionGap, paint);
			canvas.drawText(imageId.getstr(), hua, 430,
					createPaint(Color.WHITE));
			// 创建一个ImageView用来显示已经画好的bitmapWithReflection
			ImageView imageView = new ImageView(mContext);
			imageView.setImageBitmap(bitmapWithReflection);
			// 设置imageView大小 ,也就是最终显示的图片大小
			imageView.setLayoutParams(new GalleryWith3D.LayoutParams(150, 250));
			// imageView.setScaleType(ScaleType.MATRIX);
			mImages[index++] = imageView;
		}
		return true;
	}

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索imageview
, bitmap
, canvas
, new
, drawtext
, paint
, 倒影
, matrix图片倒影
, matrix倒影
, android圆角imageview
, imageview圆角
imageview圆角
android bitmap 圆角、android 代码实现圆角、bitmap圆角、bitmapshader 圆角、bitmap切圆角,以便于您获取更多的相关知识。

时间: 2024-09-08 13:59:32

androidBitmap圆角与倒影实现的相关文章

android Bitmap圆角与倒影的具体实现代码_Android

[html] 复制代码 代码如下: /**      * 画一个圆角图      *       * @param bitmap      * @param roundPx      * @return      */     public static Bitmap getRoundedCornerBitmap(Bitmap bitmap, float roundPx) {         Bitmap output = Bitmap.createBitmap(bitmap.getWidth(

android Bitmap圆角与倒影的具体实现代码

[html]复制代码 代码如下:/**      * 画一个圆角图      *       * @param bitmap      * @param roundPx      * @return      */     public static Bitmap getRoundedCornerBitmap(Bitmap bitmap, float roundPx) {         Bitmap output = Bitmap.createBitmap(bitmap.getWidth(),

Android 图像处理(类型转换,比例缩放,倒影,圆角)的小例子_Android

1.放大缩小图片 复制代码 代码如下: 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 / w

Android 图像处理(类型转换,比例缩放,倒影,圆角)的小例子

1.放大缩小图片 复制代码 代码如下: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 / wi

[Android] 给图像添加相框、圆形圆角显示图片、图像合成知识

    前一篇文章讲述了Android触屏setOnTouchListener实现突破缩放.移动.绘制和添加水印,继续我的"随手拍"项目完成给图片添加相框.圆形圆角显示图片和图像合成的功能介绍.希望文章对大家有所帮助. 一. 打开图片和显示assets文件中图片     首先,对XML中activity_main.xml进行布局,通过使用RelativeLayout相对布局完成(XML代码后面附).然后,在Mainctivity.java中public class MainActivi

Android给图像添加相框、圆形圆角显示图片、图像合成知识

前一篇文章讲述了Android触屏setOnTouchListener实现突破缩放.移动.绘制和添加水印,继续我的"随手拍"项目完成给图片添加相框.圆形圆角显示图片和图像合成的功能介绍.希望文章对大家有所帮助. 一. 打开图片和显示assets文件中图片     首先,对XML中activity_main.xml进行布局,通过使用RelativeLayout相对布局完成(XML代码后面附).然后,在Mainctivity.java中public class MainActivity e

android-如何给GridView创建一个圆角矩形边界?

问题描述 如何给GridView创建一个圆角矩形边界? 我想给GridView创建一个圆角矩形边界,就像以下的图像显示一样:如何实现这个功能呢? 解决方案 创建一个 drawable shape ,在 view 中设置为背景 <?xml version=""1.0"" encoding=""utf-8""?><shape xmlns:android=""http://schemas.and

Android BitmapShader 实战 实现圆形、圆角图片

转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/41967509,本文出自:[张鸿洋的博客] 1.概述 记得初学那会写过一篇博客Android 完美实现图片圆角和圆形(对实现进行分析),主要是个自定View加上使用Xfermode实现的.其实实现圆角图片的方法应该很多,常见的就是利用Xfermode,Shader.本篇博客会直接继承直接继承ImageView,使用BitmapShader实现圆角的绘制,大家如果耐着性子看完,我估

Android 自定义ImageView实现圆角/圆形 附加OnTouchListener详细注释以及Button圆角

转载请注明出处:王亟亟的大牛之路 平时要用一些非方方正正的按钮之类的小伙伴们是如何实现的?RadioButton?ImageButton?还是其他? 今天亟亟上的是ImageView来实现的 先上下效果图(目录结构) 分析: shape.xml用于Button的"倒角"(做过机械类的都懂,哈哈) attr.xml用于自定义ImageView的标签的定义 ids.xml用于控件findbyid用,为什么补+id 等会我会来解释 效果图: 分析:一个Button 2个自定义ImageVie