画图
//mainactivity
package com.example.my;
import android.app.Activity;
import android.content.ContentResolver;
import android.content.Intent;
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.graphics.PaintFlagsDrawFilter;
import android.net.Uri;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewTreeObserver;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.SeekBar;
import android.widget.Toast;
import java.io.FileNotFoundException;
import static android.graphics.Bitmap.Config.ARGB_8888;
public class MainActivity extends Activity implements View.OnClickListener {
private View red,green,blue;
private SeekBar seek;
private ImageView iv;
private Bitmap baseBitmap,copyBitmap;
private Canvas canvas;
private Paint paint;
private int startX,startY;
private int width,height;
private Button button;
private float b;
public void click(View view){
paint.setColor(Color.WHITE);
paint.setStrokeWidth(40);
}
public void clear(View view){
canvas.drawColor(Color.WHITE);
paint.setColor(Color.RED);
/*baseBitmap=BitmapFactory.decodeResource(getResources(), R.drawable.bg);
iv.setImageBitmap(baseBitmap);*/
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
red=(View)findViewById(R.id.red);
green=(View)findViewById(R.id.green);
blue=(View)findViewById(R.id.blue);
iv=(ImageView) findViewById(R.id.iv);
seek=(SeekBar) findViewById(R.id.seek);
button = findViewById(R.id.tianjia);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(intent, 1);
}
});
iv.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
iv.getViewTreeObserver().removeGlobalOnLayoutListener(this);
width = iv.getWidth();
height = iv.getHeight();
copyBitmap=Bitmap.createBitmap(width,height, ARGB_8888);
canvas=new Canvas(copyBitmap);
canvas.setDrawFilter(new PaintFlagsDrawFilter(0, Paint.ANTI_ALIAS_FLAG|Paint.FILTER_BITMAP_FLAG));
}
});
red.setOnClickListener(this);
blue.setOnClickListener(this);
green.setOnClickListener(this);
//画板的颜色
//canvas.drawColor(Color.BLACK);
paint=new Paint();
paint.setStrokeWidth((float)20);
//画笔的颜色
paint.setColor(Color.RED);
paint.setAntiAlias(true);
iv.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN://落下
startX=(int)event.getX();
startY=(int)event.getY();
break;
case MotionEvent.ACTION_MOVE://移动
int stopX=(int)event.getX();
int stopY=(int)event.getY();
canvas.drawLine(startX, startY, stopX, stopY, paint);
startX=(int)event.getX();
startY=(int)event.getY();
iv.setImageBitmap(copyBitmap);
break;
case MotionEvent.ACTION_UP://离开
default:
break;
}
return true;
}
});
seek.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
int progress=seekBar.getProgress();
//使拖动条的取值为0f-2f,满足我们的取值要求
float count=progress/50f;
paint.setStrokeWidth(progress);
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
}
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
// TODO Auto-generated method stub
}
});
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.red:
paint.setColor(Color.RED);
break;
case R.id.green:
paint.setColor(Color.GREEN);
break;
case R.id.blue:
paint.setColor(Color.BLUE);
break;
default:
break;
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_OK) {
Uri uri = data.getData();
ContentResolver cr = this.getContentResolver();
try {
Bitmap bitmap = BitmapFactory.decodeStream(cr.openInputStream(uri));
Bitmap newbitmap = zoomImg(bitmap,width,height);
canvas.drawBitmap(newbitmap,0,b,paint);
} catch (FileNotFoundException e) {
Toast.makeText(MainActivity.this, "找不到图片", Toast.LENGTH_SHORT).show();
}
}
super.onActivityResult(requestCode, resultCode, data);
}
public Bitmap zoomImg(Bitmap bm, int newWidth, int newHeight) {
// 获得图片的宽高
int width = bm.getWidth();
int height = bm.getHeight();
// 计算缩放比例
float scaleWidth = ((float) newWidth) / width;
float scaleHeight = ((float) newHeight) / height;
float scale;
if(scaleHeight >= scaleWidth){
scale = scaleWidth;
}else{
scale = scaleHeight;
}
// 取得想要缩放的matrix参数
Matrix matrix = new Matrix();
matrix.postScale(scale, scale);
float a = (float)height*scale;
b = newHeight/2-a/2+10;
// 得到新的图片
Bitmap newbm = Bitmap.createBitmap(bm, 0, 0, width, height, matrix, true);
return newbm;
}
}
//activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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:orientation="vertical">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<View
android:layout_width="50dp"
android:layout_height="50dp"
android:background="#ff0000"
android:id="@+id/red"/>
<View
android:layout_width="50dp"
android:layout_height="50dp"
android:background="#00ff00"
android:id="@+id/green"/>
<View
android:layout_width="50dp"
android:layout_height="50dp"
android:background="#0000ff"
android:id="@+id/blue"/>
<Button android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="橡皮擦"
android:onClick="click"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="清空"
android:onClick="clear"/>
<Button
android:id="@+id/tianjia"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="+" />
</LinearLayout>
<SeekBar
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/seek"/>
<ImageView
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:id="@+id/iv"
/>
</LinearLayout>

浙公网安备 33010602011771号