3
A
回答
9
您可以将'羽毛效果'视为渐变梯度,其中的alpha从100%降至0%。
Android为此提供了RadialGradient类。您需要使用构造函数,您可以在其中指定radient的控制点,因为您希望渐变在边缘附近开始,而不是在中间。
Android的RadialGradient类的一个问题是它只支持完美圆,而不是椭圆。为了弥补这一点,我们将绘制一个完美的圆圈并在之后进行缩放。
示例代码:
private Bitmap makeFeatheredOval(int width, int height) {
// Determine largest dimension, use for rectangle.
int size = Math.max(width, height);
RadialGradient gradient = new RadialGradient(size/2, size/2, size/2,
new int[] {0xFFFFFFFF, 0xFFFFFFFF, 0x00FFFFFF},
new float[] {0.0f, 0.8f, 1.0f},
android.graphics.Shader.TileMode.CLAMP);
Paint paint = new Paint();
paint.setShader(gradient);
Bitmap bitmap = Bitmap.createBitmap(size, size, Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
canvas.drawCircle(size/2, size/2, size/2, paint);
// Scale the bitmap, creating an oval
bitmap = Bitmap.createScaledBitmap(bitmap, width, height, true);
return bitmap;
}
示例图像(它是椭圆形的 “月亮”,在左上角):
为大家加分谁承认,背景图像。
相关问题
- 1. Kineticjs路径羽化效果
- 2. 如何在Android上实现物理效果,透视效果
- 3. android VIewpager如何实现约束效果
- 4. 我如何在cocos2d中实现效果?
- 5. 如何在Android中实现效果如下所述
- 6. 如何在Android中实现Spotify App效果(图片淡化和滚动模糊)?
- 7. 如何在android中实现图像视图的缩放效果?
- 8. 如何在android中实现这种折叠效果?
- 9. 如何在Android中使用缩放来实现视差效果?
- 10. 如何在android中实现低音效果?
- 11. 如何在Android中实现这个图像堆栈效果?
- 12. 如何在android中实现以下显示效果textview
- 13. 如何在Android中实现图像失真效果
- 14. 在ImageMagick中分层非羽化图像的羽化图像以隐藏羽化
- 15. 如何在iPhone上实现slurp效果?
- 16. 如何在Android上实现边缘深度效果
- 17. 如何在andengine上实现“慢动作”效果android
- 18. 如何在android视图的边缘实现阴影效果?
- 19. 如何在Android和iPhone上实现相同的投掷效果
- 20. 如何在Android上实现音圈效果?
- 21. 哈希码对hashSet的实现效果如何变化
- 22. 如何使用Core Graphics实现淡化效果?
- 23. THREE.js - 如何实现这种效果?
- 24. iOS/GLES2:如何实现发光效果
- 25. 如何实现旧的电影效果?
- 26. 如何实现摄像头效果?
- 27. 这种弹性效果如何实现?
- 28. 如何实现这种模糊效果?
- 29. 如何实现子菜单效果?
- 30. 如何实现闪光/频闪效果?
[Lifeforce](http://www.pouet.net/prod.php?which=31571) – Jens 2012-03-31 11:21:19
非常感谢您的帮助,但我需要围绕已创建的位图创建羽毛(A裁剪位图)。这是我使用:位图croppedImage = Bitmap.createBitmap(宽度,高度,Bitmap.Config.ARGB_8888);画布画布=新帆布(裁剪图像); Rect dstRect = new Rect(0,0,width,height); canvas.drawBitmap(initialBitmap,r,dstRect,null); finnaly for cropping:Path p = mCrop.getCropPath(); Canvas c = new Canvas(croppedImage); c.clipPath(p,Region.Op.DIFFERENCE); c.drawColor(0x00000000,PorterDuff.Mode.CLEAR); – cataHHH 2012-03-31 15:01:28
对不起,我不知道它是多么清晰......我试图为CroppedImage添加各种Paint效果,但我从未注意到它的任何边缘。 – cataHHH 2012-03-31 15:02:53