模糊挖洞
2016-03-07 14:30
246 查看
public class MainActivity extends Activity { Context mContext; int count = 0; ImageView image; TextView blurview; View text; TextView clear; int x = 500; int y = 300; int length = 280; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mContext = this; setContentView(R.layout.activity_main); findViewById(R.id.button).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { count++; if (count % 2 == 1) { findViewById(R.id.button).setBackgroundColor(Color.parseColor("#9F3730")); } else { findViewById(R.id.button).setBackgroundColor(Color.parseColor("#303F9F")); } } }); findViewById(R.id.button2).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { findViewById(R.id.button2).setVisibility(View.GONE); } }); findViewById(R.id.button3).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // findViewById(R.id.button2).setVisibility(View.VISIBLE); Bitmap bitmap = getCircularBitmap( ((BitmapDrawable) image.getDrawable()).getBitmap()); clear.setBackground(new BitmapDrawable( getResources(), bitmap)); } }); image = (ImageView) findViewById(R.id.picture); blurview = (TextView) findViewById(R.id.blur); clear = (TextView) findViewById(R.id.clear); text = findViewById(R.id.text); applyBlur(); } private void applyBlur() { image.getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() { @Override public boolean onPreDraw() { image.getViewTreeObserver().removeOnPreDrawListener(this); image.buildDrawingCache(); Bitmap bmp = image.getDrawingCache(); blur(bmp, text); return true; } }); } @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1) private void blur(Bitmap bkg, View textview) { float radius = 25; Bitmap overlay = Bitmap.createBitmap((int) (image.getMeasuredWidth()), (int) (image.getMeasuredHeight()), Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(overlay); canvas.drawBitmap(bkg, 0, 0, null); RenderScript rs = RenderScript.create(mContext); Allocation overlayAlloc = Allocation.createFromBitmap( rs, overlay); ScriptIntrinsicBlur blur = ScriptIntrinsicBlur.create( rs, overlayAlloc.getElement()); blur.setInput(overlayAlloc); blur.setRadius(radius); blur.forEach(overlayAlloc); overlayAlloc.copyTo(overlay); blurview.setBackground(new BitmapDrawable( getResources(), overlay)); rs.destroy(); } public Bitmap getCircularBitmap(Bitmap bitmap) { FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(length, length); lp.leftMargin = x; lp.topMargin = y; clear.setLayoutParams(lp); Bitmap output; output = Bitmap.createBitmap(length, length, Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(output); final int color = 0xff424242; final Paint paint = new Paint(); final Rect rect1 = new Rect(0 + x, 0 + y, 280 + x, 280 + y); final Rect rect2 = new Rect(0, 0, 280, 280); float r = 140; paint.setAntiAlias(true); canvas.drawARGB(0, 0, 0, 0); paint.setColor(color); canvas.drawCircle(r, r, r, paint); paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_IN)); canvas.drawBitmap(bitmap, rect1, rect2, paint); return output; } }
相关文章推荐
- Eclipse下Android SDK无法安装或更新的解决方法
- pdf去除水印方法!【亲测可用】
- 聚类的评估
- 数据结构(21)--查找之静态查找表
- 我理解的信息论——自信息、熵、互信息
- 【Xamarin挖墙脚系列:IOS-关于手机支持的屏幕方向】
- 【Xamarin挖墙脚系列:现有IPhone/IPad 设备尺寸】
- 【Xamarin挖墙脚系列:Xamarin.IOS机制原理剖析】
- ubuntu 修改网卡名称 更改设备网卡名称 修改eno16777736为eth0 ubuntu 15.10网卡名称为eno16777736
- CSS3边框
- CSS伪类
- iOS开发有关Core Animation的介绍
- Dynamics CRM2013 6.1.1.1143版本插件注册器的一个bug
- Dynamics CRM2013 6.1.1.1143版本插件注册器的一个bug
- Dynamics CRM2013 6.1.1.1143版本插件注册器的一个bug
- Dynamics CRM2013 6.1.1.1143版本插件注册器的一个bug
- 调用setResult()方法时没有回调onActivityForResult()方法
- iOS-触摸事件
- Android EditText 设置圆角
- 【Xamarin挖墙脚系列:多窗口之间的导航】