欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Android学习2-简单的实现画图功能(改变颜色和粗细)

程序员文章站 2022-03-17 19:18:29
...

      学习android第2天~~~

      实现了一个简单的画图功能(很简陋的那种....)主要用到的控件有imageview、dialog

     1、activity_main.xml

        每次第一步先做都是将页面的布局设置好,这次的页面布局很简单;

       包括3个imageview作为按钮,button的区别在于,我们可以使用自定义的图片来作为按钮,我们可以点击其中一个来设置画笔颜色、粗细或者选择画固定的图形

      


Android学习2-简单的实现画图功能(改变颜色和粗细)
            
    
    博客分类: Android初步学习 android画图 
 

<ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_marginLeft="18dp"
        android:layout_marginStart="18dp"
        android:layout_marginTop="17dp"
        android:id="@+id/pen"
        android:background="@drawable/pen"/>

    <ImageView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignTop="@+id/pen"
    android:layout_alignParentRight="true"
    android:layout_alignParentEnd="true"
    android:layout_marginRight="10dp"
    android:layout_marginEnd="10dp"
    android:id="@+id/colors"
    android:background="@drawable/color"/>

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/shape"
        android:layout_below="@+id/colors"
        android:background="@drawable/shape"//加载背景图片
        android:layout_alignTop="@+id/colors"
        android:layout_centerHorizontal="true" />

//一下表示定义了一个画板(paintview是一个自定义的实现画图的类)
    <com.example.lainka.paint1.paintview
        android:id="@+id/paintview"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/pen"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_marginTop="13dp" />

 2、MainActivity.java

 

   该activity主要实现了对页面控件点击事件的获取,通俗一点就是,实现了我们怎么知道我在页面上点了哪个按钮,pen 按钮(选择画笔粗细)还是color(选择颜色) 按钮或者shape(选择形状)。以及点了这三个按钮又应该做些什么;

       以color为例,点击color之后弹出对话框,显示我们所有的颜色,如下:


Android学习2-简单的实现画图功能(改变颜色和粗细)
            
    
    博客分类: Android初步学习 android画图 
 获取页面上的控件

public class MainActivity extends AppCompatActivity {
    public static final String[] C1={"红色","绿色","蓝色","黑色"};//用来表示页面上的颜色显示
    public static final int[] C2={Color.RED,Color.GREEN,Color.BLUE,Color.BLACK};
    public static final String[] P={"5","10","15","20"};//页面显示的画笔可以选择的粗细
    public static final String[] S={"圆形","正方形","长方形"};//可以选择的图形
    ImageView pen;
    ImageView shape;
    ImageView colors;
    paintview block;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        pen=(ImageView)findViewById(R.id.pen);
        colors=(ImageView)findViewById(R.id.colors);
        shape=(ImageView)findViewById(R.id.shape);
        block=(paintview) findViewById(R.id.paintview);

 

监听color按钮,并弹出对话框,改变画笔的粗细和改变形状和这个异曲同工

 

colors.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
        AlertDialog.Builder dialog = new AlertDialog.Builder(MainActivity.this);
        dialog.setTitle("选择一个颜色");
        dialog.setItems(C1, new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int which) {
                block.changecolor(C2[which]);//将页面上获取的到颜色传给paintview类,改变画笔的颜色
                Toast.makeText(MainActivity.this,
                        "你点击了" + C1[which],
                        Toast.LENGTH_SHORT).show();
            }
        });
        dialog.show();
    }
});

3、paintview.java   画图的实现

    (1)改变颜色

 

public void changecolor(int str)//str对应activity中C2数组,相当于把c2数组中内容传递过来
    {
        p.setColor(str);//改变颜色
    }

 (2)改变画笔粗细

 public void changepen(int str)
    {
        p.setStrokeWidth(str);
    }

 (3)改变形状

public void changeshape(String str)
    {
        if(str.equals("圆形"))
            s=1;
        else if(str.equals("正方形"))
            s=2;
        else if(str.equals("长方形"))
            s=3;
    }

 因为我们不能在画固定形状的同时又自己绘制图形,所以设定一个s的值来判断当前画图的方式

(4)ontouch函数,定义鼠标提起落下时进行的动作

 public boolean onTouch(View v, MotionEvent e) {
            // TODO Auto-generated method stub
            Point p=new Point((int)e.getX(),(int)e.getY());
            if(e.getAction()==e.ACTION_DOWN){    //当按下
                pointall=new ArrayList<Point>();
                pointall.add(p);
            }
            else if(e.getAction()==e.ACTION_UP){//当抬起
                pointall.add(p);
                paintview.this.postInvalidate();   //重绘
            }
            else if(e.getAction()==e.ACTION_MOVE){
                pointall.add(p);                   //移动时候
                paintview.this.postInvalidate();   //重绘
            }
            return true;
        }

 (5)ondraw函数,开始画图啦啦啦啦

protected void onDraw(Canvas canvas){
        //Paint p=new Paint();        //定义画笔
        //p.setColor(Color.RED);      //定义颜色
      //  p.setStrokeWidth(5);
        if(pointall.size()>1){
            Iterator<Point> iter=pointall.iterator();// 现在有坐标点保存的时候可以开始进行绘图
            Point first=null;
            Point last=null;
            while(iter.hasNext()){
                if(first==null){
                    first=(Point)iter.next();
                }
                else{
                    if(last!=null){
                        first=last;    //将下一个坐标点赋给上面的
                    }
                    last=(Point)iter.next();	//不停下指
                   if(s==0)//*画图
                    canvas.drawLine(first.x, first.y, last.x, last.y,p);
                    else if(s==1)//画圆
                       canvas.drawCircle(100f, 50f, 50f, p);
                   else if(s==2)//画正方形
                       canvas.drawRect(185, 70, 130, 120, p);
                   else if(s==3)//画长方形
                       canvas.drawRect(200, 130, 130, 180, p);

                }
            }
        }

 4、have a try~~~


Android学习2-简单的实现画图功能(改变颜色和粗细)
            
    
    博客分类: Android初步学习 android画图 
 本来想画一个萌萌哒的啥...但是我的绘画功底.....嗯,随意好啦

 

  • Android学习2-简单的实现画图功能(改变颜色和粗细)
            
    
    博客分类: Android初步学习 android画图 
  • 大小: 4.3 KB
  • Android学习2-简单的实现画图功能(改变颜色和粗细)
            
    
    博客分类: Android初步学习 android画图 
  • 大小: 9.4 KB
  • Android学习2-简单的实现画图功能(改变颜色和粗细)
            
    
    博客分类: Android初步学习 android画图 
  • 大小: 49.7 KB
相关标签: android 画图