界面自定义绘图
实现效果如下:
输入圆的半径 选择圆的颜色
点击生成
//以下是代码实现
package com.example.guochen21;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.graphics.Color;
import android.os.Bundle;
import android.sax.StartElementListener;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity extends Activity {
private EditText mEditText;
private Button colors;
private Button ok;
private String banjing;
private int BLAK = 0;
private int WHIT = 0;
private int RED = 0;
private com.example.guochen21.MyView image;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mEditText = (EditText) findViewById(R.id.main_ed);
colors = (Button) findViewById(R.id.main_color);
ok = (Button) findViewById(R.id.main_ok);
image = (MyView) findViewById(R.id.main_image);
banjing = mEditText.getText().toString();
// 选择颜色
colors.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
//这个是 弹出对话框,定义了三个颜色
// AlertDialog.Builder builder=new Builder(MainActivity.this);
new AlertDialog.Builder(MainActivity.this).setItems(
new String[] { "黑色", "白色", "红色" },
//对他设置监听
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog,
int which) {
// TODO Auto-generated method stub
if (which == 0) {
BLAK = 1;
WHIT = 0;
RAND = 0;
} else if (which == 1) {
BLAK = 0;
WHIT = 1;
RAND = 0;
} else if (which == 2) {
BLAK = 0;
WHIT = 0;
RAND = 1;
}
}
}).show();
}
});
// 点击生成
ok.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if (BLAK == 1) {
//找到自定义图片的ID,同提供的自定义get/set方法进行赋值
image = (MyView) findViewById(R.id.main_image);
banjing = mEditText.getText().toString();
int r = Integer.parseInt(banjing);
Toast.makeText(MainActivity.this,
"颜色为黑色" + "++" + "半径为" + banjing, 0).show();
image.setR(r);
image.setW(r);
image.setH(Color.BLACK);
image.invalidate();
} else if (WHIT == 1) {
image = (MyView) findViewById(R.id.main_image);
banjing = mEditText.getText().toString();
int r = Integer.parseInt(banjing);
image.setR(r);
image.setW(r);
image.setH(Color.WHITE);
image.invalidate();
Toast.makeText(MainActivity.this,
"颜色为白色" + "++" + "半径为" + banjing, 0).show();
} else if (RAND == 1) {
image = (MyView) findViewById(R.id.main_image);
banjing = mEditText.getText().toString();
int r = Integer.parseInt(banjing);
image.setR(r);
image.setW(r);
image.setH(Color.RED);
//
invalidate这个方法很重要 这个是对图片进行数据跟新 绘图
image.invalidate();
Toast.makeText(MainActivity.this,
"颜色为红色" + "++" + "半径为" + banjing, 0).show();
}
}
});
}
}
//要把mainActivity的值传入自定义view
//提供get/set方法
//++++
//现在是自定义view
package com.example.guochen21;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.view.View;
public class MyView extends View {
private int r, w, h;
public int getR() {
return r;
}
public void setR(int r) {
this.r = r;
}
public int getW() {
return w;
}
public void setW(int w) {
this.w = w;
}
public int getH() {
return h;
}
public void setH(int h) {
this.h = h;
}
public MyView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
// TODO Auto-generated constructor stub
}
public MyView(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
}
public MyView(Context context) {
super(context);
// TODO Auto-generated constructor stub
}
@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
super.onDraw(canvas);
Paint pp = new Paint();
pp.setColor(h);
pp.setStrokeWidth(3);
canvas.drawCircle(r, r, w, pp);
}
}
//布局
<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:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:orientation="vertical"
tools:context=".MainActivity" >
<EditText
android:layout_width="200dp"
android:layout_height="50dp"
android:layout_marginLeft="50dp"
android:layout_marginTop="30dp"
android:id="@+id/main_ed"
android:hint="输入圆的半径"
/>
<Button
android:layout_width="200dp"
android:layout_height="50dp"
android:layout_marginLeft="50dp"
android:layout_marginTop="10dp"
android:id="@+id/main_color"
android:text="选择圆的填充颜色"
/>
<Button
android:layout_width="200dp"
android:layout_height="50dp"
android:layout_marginLeft="50dp"
android:layout_marginTop="30dp"
android:id="@+id/main_ok"
android:text="生成"
/>
<com.example.guochen21.MyView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/main_image"
android:layout_marginLeft="50dp"
></com.example.guochen21.MyView>
</LinearLayout>
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"
android:orientation="vertical"
tools:context=".MainActivity" >
<EditText
android:layout_width="200dp"
android:layout_height="50dp"
android:layout_marginLeft="50dp"
android:layout_marginTop="30dp"
android:id="@+id/main_ed"
android:hint="输入圆的半径"
/>
<Button
android:layout_width="200dp"
android:layout_height="50dp"
android:layout_marginLeft="50dp"
android:layout_marginTop="10dp"
android:id="@+id/main_color"
android:text="选择圆的填充颜色"
/>
<Button
android:layout_width="200dp"
android:layout_height="50dp"
android:layout_marginLeft="50dp"
android:layout_marginTop="30dp"
android:id="@+id/main_ok"
android:text="生成"
/>
<com.example.guochen21.MyView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/main_image"
android:layout_marginLeft="50dp"
></com.example.guochen21.MyView>
</LinearLayout>