zoukankan      html  css  js  c++  java
  • Android应用《撕开美女衣服》的实现过程及源代码

    现在很多Android市场中都能找到关于美女的应用,比如 撕开美女衣服、吹裙子等。

    这些应用的下载量挺大的,作为Android的开发人员或者一名技术人员我们不能只局限在欣赏应用的层面,很多时候需要我们去揭开神秘背后的真相,下面我们来看一下如何来开发这样一个类似的撕开美女衣服的应用。

    先来看一下效果:



    其实这个应用的原理很简单,有两张图片,布局如下:

    <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" >
    	<ImageView 
    	    android:id="@+id/back_img"
    	    android:layout_width="wrap_content"
    	    android:layout_height="wrap_content"
    	    android:layout_gravity="center"
    	    android:src="@drawable/back"/>
    	<ImageView 
    	    android:id="@+id/up_img"
    	    android:layout_width="wrap_content"
    	    android:layout_height="wrap_content"
    	    android:layout_gravity="center"
    	    android:src="@drawable/up"/>
    </FrameLayout>

    上面一张图片是穿着衣服的图片,下面一张图片是撕开衣服的图片。

    在Activity中我们先创建一个可以编辑的Bitmap图片对象,然后对该图片中像素点的颜色(透明度)进行改变就实现我们所要的效果了。

    package com.example.sikaimeinvyifu;
    
    import android.app.Activity;
    import android.graphics.Bitmap;
    import android.graphics.BitmapFactory;
    import android.graphics.BitmapFactory.Options;
    import android.graphics.Canvas;
    import android.graphics.Color;
    import android.graphics.Matrix;
    import android.graphics.Paint;
    import android.os.Bundle;
    import android.view.MotionEvent;
    import android.view.View;
    import android.view.View.OnTouchListener;
    import android.widget.ImageView;
    
    public class MainActivity extends Activity {
    	private ImageView backImg;
    	private ImageView upImg;
    	private Bitmap alterBitmap;
    	private Canvas canvas;
    	private Paint paint;
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_main);
    		
    		//改变图片大小
    		BitmapFactory.Options opts = new Options();
    		opts.inSampleSize = 1;
    		
    		backImg = (ImageView) findViewById(R.id.back_img);
    		upImg = (ImageView) findViewById(R.id.up_img);
    		//只读的图片
    		Bitmap back = BitmapFactory.decodeResource(getResources(), R.drawable.back, opts);
    		Bitmap up = BitmapFactory.decodeResource(getResources(), R.drawable.up, opts);
    		//可以修改的空白的Bitmap
    		alterBitmap = Bitmap.createBitmap(up.getWidth(), up.getHeight(), up.getConfig());
    		
    		//将alterBitmap作为画布,然后将Bitmap up画到画布上。
    		canvas = new Canvas(alterBitmap); 
    		paint = new Paint();
    		paint.setStrokeWidth(5);
    		paint.setColor(Color.BLACK);
    		canvas.drawBitmap(up, new Matrix(), paint);
    		
    		
    		backImg.setImageBitmap(back);
    		upImg.setImageBitmap(alterBitmap);
    		
    		upImg.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();
    					System.out.println(x);
    					System.out.println(y);
    					for(int i=-5; i<5; i++){
    						for(int j=-5; j<5; j++){
    							//更改画布上该像素点的颜色
    							alterBitmap.setPixel(i + x, j + y, Color.TRANSPARENT);
    						}
    					}
    					//重新绘制到ImageView上面
    					upImg.setImageBitmap(alterBitmap);
    					break;
    
    				default:
    					break;
    				}
    				return true;
    			}
    		});
    	}
    }
    

    源代码下载地址:http://download.csdn.net/detail/lxq_xsyu/6744849

  • 相关阅读:
    excel导出的时候从程序后台写到excel里的是文本,所以无法在excel中计算怎么办?
    深度经验总结:快逸报表工具单数据集版本和多数据集版本的主要区别之一
    如何循序渐进有效学习 JavaScript?
    MariaDB和mySQL到底区别在哪,实验说明问题!
    实现点击页面报表头某个字段进行该字段的重新排序: 经过验证,此代码是工作的
    Oracle TDE的学习
    LOB类型的学习、总结
    使用GC 初始化DG(将备份集复制到目标端再初始化)
    oradebug 的学习 一
    角色 RESOURCE、CONNECT、DBA具有的权限
  • 原文地址:https://www.cnblogs.com/lanzhi/p/6469457.html
Copyright © 2011-2022 走看看