用户可视化自定义绘图

界面自定义绘图

实现效果如下:

输入圆的半径   选择圆的颜色


点击生成   

//以下是代码实现
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> 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值