【图片处理及特效】Android学习笔记进阶之在图片上涂鸦(能清屏)

【图片处理及特效】Android学习笔记进阶之在图片上涂鸦(能清屏)【图片处理及特效】Android学习笔记进阶之在图片上涂鸦(能清屏)

HandWritingActivity.java

package xiaosi.handWriting;  
  
import android.app.Activity;  
import android.app.AlertDialog;  
import android.content.DialogInterface;  
import android.os.Bundle;  
import android.view.View;  
import android.view.View.OnClickListener;  
import android.widget.Button;  
  
public class HandWritingActivity extends Activity  
{  
    /** Called when the activity is first created. */  
    private HandWrite handWrite = null;  
    private Button clear = null;  
    @Override  
    public void onCreate(Bundle savedInstanceState)  
    {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.main);  
          
        handWrite = (HandWrite)findViewById(R.id.handwriteview);  
        clear = (Button)findViewById(R.id.clear);  
        clear.setOnClickListener(new clearListener());  
    }  
       
      
    private class clearListener implements OnClickListener{  
  
        public void onClick(View v)  
        {  
            handWrite.clear();  
        }  
    }  
}  

 HandWrite.java

public class HandWrite extends View  
{  
    private Paint paint = null;  
    private Bitmap originalBitmap = null;  
    private Bitmap new1Bitmap = null;  
    private Bitmap new2Bitmap = null;  
    private float clickX = 0,clickY = 0;  
    private float startX = 0,startY = 0;  
    private boolean isMove = true;  
    private boolean isClear = false;  
    private int color = Color.GREEN;  
    private float strokeWidth = 2.0f;  
    public HandWrite(Context context, AttributeSet attrs)  
    {  
        super(context, attrs);  
        originalBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.girl_a);  
        new1Bitmap = Bitmap.createBitmap(originalBitmap);  
    }  
      
  
    public void clear(){  
        isClear = true;  
        new2Bitmap = Bitmap.createBitmap(originalBitmap);  
        invalidate();  
    }  
    public void setstyle(float strokeWidth){  
        this.strokeWidth = strokeWidth;  
    }  
    @Override  
    protected void onDraw(Canvas canvas)  
    {  
        super.onDraw(canvas);  
        canvas.drawBitmap(HandWriting(new1Bitmap), 0, 0,null);  
          
    }  
  
    public Bitmap HandWriting(Bitmap originalBitmap)  
    {  
        Canvas canvas = null;  
          
        if(isClear){  
            canvas = new Canvas(new2Bitmap);  
        }  
        else{  
            canvas = new Canvas(originalBitmap);  
        }  
        paint = new Paint();  
        paint.setStyle(Style.STROKE);  
        paint.setAntiAlias(true);  
        paint.setColor(color);  
        paint.setStrokeWidth(strokeWidth);  
        if(isMove){  
            canvas.drawLine(startX, startY, clickX, clickY, paint);  
        }  
          
        startX = clickX;  
        startY = clickY;  
          
        if(isClear){  
            return new2Bitmap;  
        }  
        return originalBitmap;  
    }  
  
    @Override  
    public boolean onTouchEvent(MotionEvent event)  
    {  
        clickX = event.getX();  
        clickY = event.getY();  
        if(event.getAction() == MotionEvent.ACTION_DOWN){  
              
            isMove = false;  
            invalidate();  
            return true;  
        }  
        else if(event.getAction() == MotionEvent.ACTION_MOVE){  
              
            isMove = true;  
            invalidate();  
            return true;  
        }  
          
        return super.onTouchEvent(event);  
    }  
     
}  

 main.xml

<?xml version="1.0" encoding="utf-8"?>  
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
    android:layout_width="fill_parent"  
    android:layout_height="fill_parent"  
    android:orientation="vertical" >  
  
    <xiaosi.handWriting.HandWrite  
        android:id="@+id/handwriteview"  
        android:layout_width="fill_parent"  
        android:layout_height="380dp" />  
  
    <LinearLayout  
        android:layout_width="fill_parent"  
        android:layout_height="fill_parent"  
        android:orientation="horizontal"  
        android:gravity="center_horizontal" >  
  
        <Button  
            android:id="@+id/clear"  
            android:layout_width="200dp"  
            android:layout_height="wrap_content"  
            android:text="清屏" />  
          
          
    </LinearLayout>  
</LinearLayout>  

 

你可能感兴趣的:(Android学习)