if (r.right < GalleryViewActivity.screenWidth) {
super.onScroll(e1, e2, distanceX, distanceY);
} else if (left > 0) {
super.onScroll(e1, e2, distanceX, distanceY);
} else {
imageView.postTranslate(-distanceX, -distanceY);
} }
效果图:
图 4 图片拖动前和拖动后
3.7.3 3D图片浏览设计
(1) 设置倒影
利用Matrix实现图片的反转。
Bitmap reflectionImage = Bitmap.createBitmap(originalImage, 0, height / 2, width, height / 2, matrix, false);
创建反转后的图片Bitmap对象,图片高是原图的一半。
Bitmap bitmapWithReflection = Bitmap.createBitmap(width, (height + height / 2), Config.ARGB_8888);
创建标准的Bitmap对象,宽和原图一致,高是原图的1.5倍。
Canvas canvas = new Canvas(bitmapWithReflection);
canvas.drawBitmap(originalImage, 0, 0, null);
创建画布对象,将原图画于画布,起点是原点位置。
Paint defaultPaint = new Paint();
canvas.drawRect(0, height, width, height + reflectionGap, defaultPaint);
canvas.drawBitmap(reflectionImage, 0, height + reflectionGap,null);
将反转后的图片画到画布中。
LinearGradient shader = new LinearGradient(0, originalImage.getHeight(), 0, bitmapWithReflection.getHeight() + reflectionGap, 0×70ffffff, 0×00ffffff, TileMode.MIRROR);
创建线性渐变LinearGradient 对象。
canvas.drawRect(0, height, width, bitmapWithReflection.getHeight() + reflectionGap, paint);
画布画出反转图片大小区域,然后把渐变效果加到其中,就出现了图片的倒影效果。
实现代码:
// The reflection bitmap, width is same with original's, height is half of original's.
Bitmap reflectionBitmap = Bitmap.createBitmap(
srcBitmap,
0,
srcHeight / 2,
srcWidth,
srcHeight / 2,
matrix,
false);
if (null == reflectionBitmap)
return null; Android平台手机图片浏览软件的开发实现(15):http://www.youerw.com/jisuanji/lunwen_2019.html