- 博客(0)
- 资源 (2)
空空如也
带有倒影的Gallery
带有倒影的图片滑动效果,注释非常详细。
部分代码如下:
for (int imageId : mImageIds) {
Bitmap originalImage = BitmapFactory.decodeResource(mContext
.getResources(), imageId);
int width = originalImage.getWidth();
int height = originalImage.getHeight();
//设置图片反转
Matrix matrix = new Matrix();
// matrix.setRotate(30);
//缩放图片的动作。矩阵前乘
// 1表示放大比例,不放大也不缩小。
// -1表示在y轴上相反,即旋转180度。
matrix.preScale(1, -1);
//reflectionImage就是下面那个透明的倒影,宽为图片本来的宽度,高是图片高度的一半
//从height/2的高度开始到高度为(height/2)+(height/4)
Bitmap reflectionImage = Bitmap.createBitmap(originalImage, 0,
height / 2, width, height / 4, matrix, false);
//创建一个新的Bitmap高度为原来的1.5倍
Bitmap bitmapWithReflection = Bitmap.createBitmap(width,
(height + height / 2), Config.ARGB_8888);
//先画原始的图片
Canvas canvas = new Canvas(bitmapWithReflection);
canvas.drawBitmap(originalImage, 0, 0, null);
Paint deafaultPaint = new Paint();
// 抗锯齿的方法
// deafaultPaint.setAntiAlias(true);
//画图片与倒影之间的间距
canvas.drawRect(0, height, width, height + reflectionGap,
deafaultPaint);
//画倒影
canvas.drawBitmap(reflectionImage, 0, height + reflectionGap, null);
Paint paint = new Paint();
// 抗锯齿的方法
// paint.setAntiAlias(true);
//创建一个渐变的模板放在下面被反转的图片上面
LinearGradient shader = new LinearGradient(0,
originalImage.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);
ImageView imageView = new ImageView(mContext);
imageView.setImageBitmap(bitmapWithReflection);
imageView.setLayoutParams(new GalleryFlow.LayoutParams(180, 240));
// imageView.setScaleType(ScaleType.MATRIX);
mImages[index++] = imageView;
}
return true;
}
2013-04-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人