您的位置:首页 > 移动开发 > Android开发

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;
}
});
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: