学习android第2天~~~
实现了一个简单的画图功能(很简陋的那种....)主要用到的控件有imageview、dialog
1、activity_main.xml
每次第一步先做都是将页面的布局设置好,这次的页面布局很简单;
包括3个imageview作为按钮,button的区别在于,我们可以使用自定义的图片来作为按钮,我们可以点击其中一个来设置画笔颜色、粗细或者选择画固定的图形
<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之后弹出对话框,显示我们所有的颜色,如下:
获取页面上的控件
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程序源码--画图,画图Android程序源码--
这是一款android的画图板实现代码,基本功能齐全,适合初学者开发的例子程序。
简易的画图小工具,支持改变颜色,大小,前进,后退,后期希望加入画方画圆等功能
使用Android开发的画图着色程序, 源码适用于Android学习用, 生成的apk适用于小孩学习着色用.
32--[画图软件 (不完整版)].zip源码scratch2.0 3.0编程项目源文件源码案例素材源代码32--[画图软件 (不完整版)].zip源码scratch2.0 3.0编程项目源文件源码案例素材源代码32--[画图软件 (不完整版)].zip源码...
用C代码调用surface实现画图功能。开机就调用,先创一个线程!自己看吧!!
在Androidstudio上实现的简单画图软件,功能包括画笔颜色的改变,笔刷大小自定义,几何图形的绘制,实虚线的切换以及橡皮檫功能,保存图像功能还未实现
JUDE中文汉化版---XML画图工具
Matlab学习笔记--Matlab画图15页word.docxMatlab学习笔记--Matlab画图15页word.docx
实现画图各个功能~~ 是用c#写的画图工具 有颜色选择等
用C++实现基于openGL的画图板,实现简单画图功能
一个普通的绘画板,最基本的功能是实现简单的...为了实现图形的美观,最好还要能够改变线的颜色,粗细,是实线,还是虚线;在图形里边还可以向里边添加填充色;为了能够修错,还应该有橡皮擦,最后还得清屏,保存文件;
Android画图学习.pdf Android画图学习 • Android画图学习总结(一)——类的简介 • Android画图学习总结(二)——Bitmap • Android画图学习总结(三)——Drawable • Android画图学习总结(四)——...
VC实现简单画图功能, 用VC 实现 examp画图功能
Python学习笔记0002 - 海龟画图 - 初画图形 Python学习笔记0003 - 海龟画图 - 变量 Python学习笔记0004 - 海龟画图 - for循环 Python学习笔记0005 - 海龟画图 - 运算符、列表 Python学习笔记0006 - 海龟画图 - 嵌套...
里面第二个项目是,包括基本的画图工具,提供打开、新建、存储功能,采用啥忘了,项目凑合,挺完整的画图板,附视频
系统开发实例精粹>的源码 appendix020-简单的画图软件程序
Matlab画图-MatLab2画图.doc Matlab画图教程,很实用
使用MFC, 画图的一些基本功能的实现,直线斜线、圆圈、矩形、折线、多边形等等等等。