Android之Canvas撕衣服
2016-07-06 14:53
246 查看
前几篇都涉及到了Canvas,Paint,Bitmap的结合使用,这里就不多说了~
现在我要写的是撕衣服的这个项目~
其实这个项目只是涉及到了一张图片到另一张图片的变换
先看效果图:
布局文件也是俩张图片,一张穿了衣服的图片在没穿衣服的图片上面~
布局代码:
源码下载
现在我要写的是撕衣服的这个项目~
其实这个项目只是涉及到了一张图片到另一张图片的变换
先看效果图:
布局文件也是俩张图片,一张穿了衣服的图片在没穿衣服的图片上面~
布局代码:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" > <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/after" android:layout_centerInParent="true"/> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:src="@drawable/pre" android:id="@+id/iv"/> </RelativeLayout>MainActivity:
public class MainActivity extends Activity { private ImageView iv; private Bitmap baseBitmap,copyBitmap; private Canvas canvas; private Paint paint; private Matrix matrix; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); iv=(ImageView) findViewById(R.id.iv); baseBitmap=BitmapFactory.decodeResource(getResources(), R.drawable.pre); copyBitmap=Bitmap.createBitmap(baseBitmap.getWidth(), baseBitmap.getHeight(), baseBitmap.getConfig()); canvas=new Canvas(copyBitmap); matrix=new Matrix(); paint=new Paint(); canvas.drawBitmap(baseBitmap, matrix, paint); iv.setImageBitmap(copyBitmap); //imageView所在区域被触摸的时候回调 iv.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { // TODO Auto-generated method stub switch (event.getAction()) { case MotionEvent.ACTION_DOWN: //按下 1次 break; case MotionEvent.ACTION_MOVE: //移动 0-N次 //getX和getY是以控件左上角为原点的 //getRawX和getRawY是以屏幕左上角为原点的 int moveX=(int)event.getX(); int moveY=(int)event.getY(); // event.getRawX(); // event.getRawY(); //针对单个像素点去说的 try { for(int i=-20;i<21;i++){ for(int j=-20;j<21;j++){ copyBitmap.setPixel(moveX+i, moveY+j, Color.TRANSPARENT); } } //TRANSPARENT是透明 //copyBitmap.setPixel(moveX, moveY, Color.TRANSPARENT); iv.setImageBitmap(copyBitmap); } catch (Exception e) { // TODO: handle exception } break; case MotionEvent.ACTION_UP: //抬起 1次 break; default: break; } return true;//方法被消费 } }); } }
源码下载
相关文章推荐
- Android打造带透明圆弧的ImageView
- HTML5调用摄像头实例
- Canvas 在高清屏下绘制图片变模糊的解决方法
- C#实现位图转换成图标的方法
- Android编程UI设计之GridView和ImageView的用法
- 基于Android实现随手指移动的ImageView
- Android使用ImageView 制作透明圆弧实例代码
- Android中ImageView用法实例分析
- C++实现位图排序实例
- C#中 paint()与Onpaint()的区别
- C#处理Paint事件的方法
- 使用canvas实现仿新浪微博头像截取上传功能
- js+HTML5实现canvas多种颜色渐变效果的方法
- javascript+HTML5的Canvas实现Lab单车动画效果
- js+canvas绘制矩形的方法
- JavaScript+html5 canvas制作的百花齐放效果完整实例
- jQuery+canvas实现的球体平抛及颜色动态变换效果
- Oracle索引(B*tree与Bitmap)的学习总结
- 如何使用Matrix对bitmap的旋转与镜像水平垂直翻转
- html5 canvas js(数字时钟)实例代码