Android 图片处理特效,不同层级的Android开发者的不同行为

  1. canvas.drawBitmap(bitmap, rect, rect, paint);

  2. return bitmap2;

  3. }

  4. // Reflect Bitmap

  5. public static Bitmap createReflectedBitmap(Bitmap bitmap){

  6. final int reflectedGap = 4;

  7. int width = bitmap.getWidth();

  8. int height = bitmap.getHeight();

  9. Matrix matrix = new Matrix();

  10. matrix.preScale(1, -1);

  11. Bitmap reflectedImage = Bitmap.createBitmap(bitmap, 0, height/2, width, height/2, matrix, false);

  12. Bitmap reflectedBitmap = Bitmap.createBitmap(width, (height + height/2), Config.ARGB_8888);

  13. Canvas canvas = new Canvas(reflectedBitmap);

  14. canvas.drawBitmap(bitmap, 0, 0, null);

  15. Paint defaultPaint = new Paint();

  16. canvas.drawRect(0, height, width, height + reflectedGap, defaultPaint);

  17. canvas.drawBitmap(reflectedImage, 0, height + reflectedGap, null);

  18. Paint paint = new Paint();

  19. L

inearGradient shader = new LinearGradient(0, bitmap.getHeight(), 0,

  1. reflectedBitmap.getHeight() + reflectedGap, 0x70ffffff, 0x00ffffff, TileMode.CLAMP);

  2. paint.setShader(shader);

  3. paint.setXfermode(new PorterDuffXfermode(Mode.DST_IN));

  4. canvas.drawRect(0, height, width, reflectedBitmap.getHeight() + reflectedGap, paint);

  5. return reflectedBitmap;

  6. }

  7. }

Java Code:

package com.learn.games;

  1. import android.app.Activity;

  2. import android.graphics.Bitmap;

  3. import android.graphics.drawable.BitmapDrawable;

  4. import android.graphics.drawable.Drawable;

  5. import android.os.Bundle;

  6. import android.widget.ImageView;

  7. public class MyBitmapProcessActivity extends Activity {

  8. private ImageView imgView1;

  9. private ImageView imgView2;

  10. private ImageView imgView3;

  11. private ImageView imgView4;

  12. /** Called when the activity is first created. */

  13. @Override

  14. public void onCreate(Bundle savedInstanceState) {

  15. super.onCreate(savedInstanceState);

  16. setContentView(R.layout.main);

  17. drawBitmap();

  18. }

  19. private void drawBitmap(){

  20. imgView1 = (ImageView)findViewById(R.id.imgView1);

  21. imgView2 = (ImageView)findViewById(R.id.imgView2);

  22. imgView3 = (ImageView)findViewById(R.id.imgView3);

  23. imgView4 = (ImageView)findViewById(R.id.imgView4);

  24. Drawable drawable = this.getWallpaper();

  25. Bitmap bitmap = bitmapProcess.drawable2Bitmap(drawable);                        // drawable to bitmap

  26. Bitmap zoomBitmap = bitmapProcess.zoomBitmap(bitmap, 100, 100);                 // zoom

  27. Bitmap roundBitmap = bitmapProcess.getRoundCornerBitmap(zoomBitmap, 10.0f);     // round corner

  28. Bitmap reflectedBitmap = bitmapProcess.createReflectedBitmap(zoomBitmap);       // reflect bitmap

  29. // drawable to bitmap

  30. imgView1.setImageBitmap(bitmap);

  31. imgView2.setImageBitmap(zoomBitmap);

  32. imgView3.setImageBitmap(roundBitmap);

  33. imgView4.setImageBitmap(reflectedBitmap);

  34. // bitmap to drawable

  35. Drawable roundDrawable = new BitmapDrawable(roundBitmap);

  36. Drawable reflectedDrawable = new BitmapDrawable(reflectedBitmap);

  37. imgView1.setBackgroundDrawable(roundDrawable);

  38. imgView2.setBackgroundDrawable(reflectedDrawable);

  39. }

  40. }

XML:

<?xml version\="1.0" encoding\="utf-8"?>  
  1. <LinearLayout xmlns:android=“http://schemas.android.com/apk/res/android”

  2. android:orientation=“vertical”

  3. android:layout_width=“fill_parent”

  4. android:layout_height=“fill_parent”

  5. >

  6. <ImageView android:id="@+id/imgView1"

  7. android:layout_width=“wrap_content”

  8. android:layout_height=“wrap_content”/>

  9. <ImageView android:id="@+id/imgView2"

  10. android:layout_width=“wrap_content”

  11. android:layout_height=“wrap_content”/>

  12. <ImageView android:id="@+id/imgView3"

  13. android:layout_width=“wrap_content”

  14. android:layout_height=“wrap_content”/>

  15. <ImageView android:id="@+id/imgView4"

  16. android:layout_width=“wrap_content”

  17. android:layout_height=“wrap_content”/>

  18. </LinearLayout>

效果图:

drawable2bitmap

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mryWQh0M-1647693411808)(http://hi.csdn.net/attachment/201108/23/0_1314109891OC46.gif)]

zoom

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dipwcGFH-1647693411808)(http://hi.csdn.net/attachment/201108/23/0_1314109902k1K4.gif)]

最后送福利了,现在关注我可以获取包含源码解析,自定义View,动画实现,架构分享等。
内容难度适中,篇幅精炼,每天只需花上十几分钟阅读即可。
大家可以跟我一起探讨,有flutter—底层开发—性能优化—移动架构—资深UI工程师 —NDK相关专业人员和视频教学资料,还有更多面试题等你来拿

录播视频图.png
1808)]

zoom

[外链图片转存中…(img-dipwcGFH-1647693411808)]

最后送福利了,现在关注我可以获取包含源码解析,自定义View,动画实现,架构分享等。
内容难度适中,篇幅精炼,每天只需花上十几分钟阅读即可。
大家可以跟我一起探讨,有flutter—底层开发—性能优化—移动架构—资深UI工程师 —NDK相关专业人员和视频教学资料,还有更多面试题等你来拿

[外链图片转存中…(img-YJfxPTuv-1647693411809)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值