专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > 多媒体设计

Android 多媒体开发学习之撕衣物

发布时间:2011-06-27 19:04:37 文章来源:www.iduyao.cn 采编人员:星星草
Android 多媒体开发学习之撕衣服

今天我们学习撕衣服。我先说一下撕衣服的原理: 撕衣服有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() {
			
			@Override
			public 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);	
					}
				}
			}
		}
	}
}

效果图:



版权声明:本文为博主原创文章,未经博主允许不得转载。

友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

  • 3DMAX建模,该如何解决

    3DMAX建模 有哪问朋友可以做一个3DMAX的建模? 要求:熟悉3DMAX建模、可以到现场封闭1个月左右 地点:北京 费用:面谈 有意请与我联系:qyn...

  • 小弟我是新手,怎么做建筑动漫

    我是新手,如何做建筑动漫 请问一下动漫高手,我是动漫方面的新手,从那儿着手开始做建筑动漫,得学习哪些工具 ------解决方案---------...

  • 初学AE遇到的一个小疑点

    初学AE遇到的一个小问题! 图中的两个斜线怎么让它消失?就算是预览的时候都在!!!上面的字是Demo mode:Press "Options" to register....

  • 请教一下,纯3D的FLASH,需要什么软件做的

    请问一下,纯3D的FLASH,需要什么软件做的? 满有兴趣的,不知道需要哪些软件才能做, 有人讲直接在三D里面做,再用flash 来接起来的.?听说3D...

  • 问问opengl 和 3Dmax 还有maya的关系,该如何处理

    问问opengl 和 3Dmax 还有maya的关系 想问问 是不是 3D max 和maya 会取代opengl? 因为画三维图形, maya和 3dmax比 opengl 方便...

  • 能从.X文件中读取场景中物体信息么,该怎么处理

    能从.X文件中读取场景中物体信息么 比如说物体的名字,高度,类型,每个物体的贴图名字等等 ------解决方案-------------------- 物...

  • 动画制作,该怎么解决

    动画制作 要制作一个固体物理中的晶体形成的动画,求教,简单的动画 ------解决方案-------------------- 你是要教程还是要实例?...

  • 请问:3D人物动画有关问题

    请教:3D人物动画问题 我用poser7.0做了模型和几个动作比如微笑,摆手,点头等,我要在程序中使用这个模型和动作,模型保存的是3ds格式,动作...

  • 求名词解释 DirectX OpenGL 3Dmax Maya,该如何处理

    求名词解释 DirectX OpenGL 3Dmax Maya DirectX OpenGL 3Dmax Maya 求名词解释 这些软件之间有什么联系?什么区别? ------解决方...

  • 请问 怎么学好3ds max

    请教 如何学好3ds max 我是大二的学生,因为要做三维地图,要学习3ds max, 学习的主要是3ds max在建筑物建模的方面,求问有什么 好的方...

热门推荐: