效果:
清单:
布局:
<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"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.sg31.girldressup.MainActivity" >
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/aneiyi"
/>
<ImageView
android:id="@+id/iv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/awaiyi"
/>
</RelativeLayout>
代码:
package com.sg31.girldressup;
import android.support.v7.app.ActionBarActivity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Matrix;
import android.graphics.Paint;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.ImageView;
public class MainActivity extends ActionBarActivity {
private Bitmap bmCopy;
private ImageView iv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
dressup();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
public void dressup() {
Bitmap bmSrc = BitmapFactory.decodeResource(getResources(),
R.drawable.awaiyi);
bmCopy = Bitmap.createBitmap(bmSrc.getWidth(), bmSrc.getHeight(),
bmSrc.getConfig());
Paint paint = new Paint();
Canvas canvas = new Canvas(bmCopy);
canvas.drawBitmap(bmSrc, new Matrix(), paint);
iv = (ImageView) findViewById(R.id.iv);
iv.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();
for (int i = -5; i <= 5; i++) {
for (int j = -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;
}
return true;
}
});
}
}