Android 多媒体开发学习之撕衣服
来源:互联网 发布:现货交易骗局新疆矩阵 编辑:程序博客网 时间:2024/04/25 11:50
今天我们学习撕衣服。我先说一下撕衣服的原理: 撕衣服有2张图片,一张是美女穿外衣的图片,一张是美女穿内衣的图片。当我们手指滑动后,然后将美女穿外衣衣服的图片设置为透明色,这样下面的图片就显示出来了。
直接上代码:
public class MainActivity extends Activity {private Bitmap bmpCopy;private Paint paint;private Canvas canvas;private ImageView imageView;@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //1: 因为我修改外衣的图片,所以要给外衣设置副本 Bitmap bmpSrc = BitmapFactory.decodeResource(getResources(), R.drawable.awaiyi); bmpCopy = Bitmap.createBitmap(bmpSrc.getWidth(), bmpSrc.getHeight(), bmpSrc.getConfig()); paint = new Paint(); canvas = new Canvas(bmpCopy); canvas.drawBitmap(bmpSrc, new Matrix(), paint); imageView = (ImageView) findViewById(R.id.lv2); imageView.setImageBitmap(bmpCopy); //2:监听触摸事件 imageView.setOnTouchListener(new OnTouchListener() {@Overridepublic boolean onTouch(View v, MotionEvent event) {//我们只关心滑动事件switch (event.getAction()) {case MotionEvent.ACTION_MOVE://手指滑动的轨迹设置为透明色int x = (int) event.getX();int y = (int) event.getY();cleanImage(x, y);break;default:break;}return true;}}); }//因为每次只设置1个像素,这样很慢public void cleanImage(int x, int y){for(int i = -10; i < 10; i++){for(int j = -10; j < 10; j++){//绘制以x,y为圆心半径为10的圆if(Math.sqrt(i*i + j*j) <= 10){//判断手指是否越界, 如果越界不处理if(x+i < bmpCopy.getWidth() && y+j < bmpCopy.getHeight() && x+i >=0 && y+j >=0){//设置透明色bmpCopy.setPixel(x+i, y+j, Color.TRANSPARENT);//设置图像imageView.setImageBitmap(bmpCopy);}}}}}}
效果图:
0 0
- Android 多媒体开发学习之撕衣服
- Android之Canvas撕衣服
- 上海Android培训学习之Android多媒体开发
- Android 多媒体开发学习之加载大图片
- Android 多媒体开发学习之创建图片的副本
- Android 多媒体开发学习之制作一个简单的画板
- Android 多媒体开发学习之简单的音乐播放器
- Android多媒体开发之MediaPlayer
- Android学习之运用多媒体
- Android之——多媒体开发视频格式
- Android学习笔记_26_多媒体之拍照
- android 多媒体之 MediaStore 学习记录
- android撕衣服应用介绍
- Android撕衣服小案例
- Android多媒体开发之旅(Android Camera 开发 1)
- 记android学习之路----android多媒体使用之Notification
- Android开发——多媒体开发之MediaPlayer
- android开发之全能多媒体开发框架Vitamio
- 熵(entropy)
- 黑马程序员——交通灯系统
- IOS 图片上传处理 图片压缩 图片处理
- J114 7/30
- Labview使用DAQ数据采集的一些注意问题
- Android 多媒体开发学习之撕衣服
- Lucene学习与总结——开篇
- iOS后台播放网络音乐
- vim学习笔记3
- Android中Activity切换时共享视图元素的切换动画(4.x兼容方案)
- C++继承
- Execute failed: java.io.IOException: Cannot run program "sdk-linux/build-tools/22.0.0/aapt": error=2
- Hibernate-note02
- C++ 判断是大端存储还是小端存储