Androidx学习笔记(76)--- 撕衣服
2016-02-24 20:07
453 查看
撕衣服
原理:把穿内衣和穿外衣的照片重叠显示,内衣照在下面,用户滑动屏幕时,触摸的是外衣照,把手指经过的像素都置为透明,内衣照就显示出来了iv.setOnTouchListener(newOnTouchListener(){ @Override publicbooleanonTouch(Viewv,MotionEventevent){ switch(event.getAction()){ caseMotionEvent.ACTION_MOVE: intnewX=(int)event.getX(); intnewY=(int)event.getY(); //把指定的像素变成透明 copyBm.setPixel(newX,newY,Color.TRANSPARENT); iv.setImageBitmap(copyBm); break; } returntrue; } });
每次只设置一个像素点太慢,以触摸的像素为圆心,半径为5画圆,圆内的像素全部置为透明
for(inti=-5;i<6;i++){ for(intj=-5;j<6;j++){ if(Math.sqrt(i*i+j*j)<=5) copyBm.setPixel(newX+i,newY+j,Color.TRANSPARENT); } }
publicclassMainActivityextendsActivity{
privateBitmapbmCopy;
privateImageViewiv;
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
BitmapbmSrc=BitmapFactory.decodeResource(getResources(),R.drawable.awaiyi);
bmCopy=Bitmap.createBitmap(bmSrc.getWidth(),bmSrc.getHeight(),bmSrc.getConfig());
Paintpaint=newPaint();
Canvascanvas=newCanvas(bmCopy);
canvas.drawBitmap(bmSrc,newMatrix(),paint);
iv=(ImageView)findViewById(R.id.iv);
iv.setOnTouchListener(newOnTouchListener(){
@Override
publicbooleanonTouch(Viewv,MotionEventevent){
switch(event.getAction()){
caseMotionEvent.ACTION_MOVE:
intx=(int)event.getX();
inty=(int)event.getY();
for(inti=-5;i<=5;i++){
for(intj=-5;j<=5;j++){
//把用户划过的坐标置为透明色
//改变指定的像素颜色
if(Math.sqrt(i*i+j*j)<=5){
if(x+i<bmCopy.getWidth()&&y+j<bmCopy.getHeight()&&x+i>=0&&y+j>=0){
bmCopy.setPixel(x+i,y+j,Color.TRANSPARENT);
iv.setImageBitmap(bmCopy);
}
}
}
}
break;
}
returntrue;
}
});
}
}
相关文章推荐
- Androidx学习笔记(75)--- 画画板
- Androidx学习笔记(74)--- 对图片进行特效处理
- Android卡片式布局的简单实现方法
- 使用Toolbar + DrawerLayout快速实现菜单侧滑
- Androidx学习笔记(73)--- 在内存中创建图片的副本
- Android的IPC机制(三)——Binder连接池
- TooBar的使用
- Androidx学习笔记(72)--- 加载大图片
- Androidx学习笔记(71)--- 需要支付的应用(调用远程的服务)
- android的进阶findViewById
- 如何解决Android 5.0中出现的警告: Service Intent must be explicit:
- startActivity构成的Activity链中间断掉会如何?
- Android的消息循环机制 Looper Handler类分析
- Android样式的开发:Style篇
- Androidx学习笔记(70)--- 进程优先级
- Androidx学习笔记(69)--- AIDL
- Androidx学习笔记(68)--- 服务分类
- Android技术积累:开发规范
- Androidx学习笔记(67)--- 使用代码注册广播接收者(实现屏幕锁屏和解锁)
- Androidx学习笔记(66)--- 简单音乐播放器原理