一个简单的画板
博客将分为以下几个方面来写:
1.仅实现一个可操作的画板
2.给画板上添加四个按钮
3.给按钮增加监听事件
4.给按钮添加弹窗操作
5.错误解决
1.仅实现一个可操作的画板
xml文件
<ImageView android:id="@+id/image" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" />
java代码
public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); final ImageView imageView = (ImageView) findViewById(R.id.image); DisplayMetrics dm = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(dm); int m = dm.widthPixels, n = dm.heightPixels; final Bitmap bitmap = Bitmap.createBitmap(m, n, Bitmap.Config.ARGB_8888); final Canvas canvas = new Canvas(bitmap); canvas.drawColor(Color.WHITE); final Paint paint = new Paint(); paint.setColor(Color.RED); paint.setStrokeWidth(4); paint.setAntiAlias(true); imageView.setImageBitmap(bitmap); imageView.setOnTouchListener(new OnTouchListener() { float x, y; @Override public boolean onTouch(View arg0, MotionEvent arg1) { // TODO Auto-generated method stub switch (arg1.getAction()) { case MotionEvent.ACTION_DOWN: x = arg1.getX(); y = arg1.getY(); break; default: canvas.drawLine(x, y, arg1.getX(), arg1.getY(), paint); imageView.setImageBitmap(bitmap); x = arg1.getX(); y = arg1.getY(); break; } return true; } }); }
这样我们就可以在画板上随便作画了
2.给画板上添加四个按钮
下面给画板添加四个按钮
那么如何在一行整齐的排列四个按钮呢?
下面是我的解决办法。
<LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <Button android:id="@+id/pen" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1" android:text="pen"/> <Button android:id="@+id/shape" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1" android:text="shape"/> <Button android:id="@+id/color" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1" android:text="color"/> <Button android:id="@+id/clear" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1" android:text="clear"/> </LinearLayout>
在手机上运行之后就出现了如下的界面
3.给按钮增加监听事件
xml代码:
<LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <Button android:id="@+id/pen" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1" android:onClick="onClick1" android:text="pen"/> <Button android:id="@+id/shape" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1" android:onClick="onClick2" android:text="shape"/> <Button android:id="@+id/color" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1" android:onClick="onClick3" android:text="color"/> <Button android:id="@+id/clear" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1" android:onClick="onClick4" android:text="clear"/> </LinearLayout>
java代码:
//指定onClick属性方式 //传入的View对象,就是用户按下的那个按钮对象 public void click(View v){ int id=v.getId(); switch(id){ case R.id.pen: Log.i("指定onClick属性方式","请选择您喜欢的画笔"); break; case R.id.shape: Log.i("指定onClick属性方式","请选择您喜欢的形状"); break; case R.id.color: Log.i("指定onClick属性方式","请选择您喜欢的颜色"); break; case R.id.clear: Log.i("指定onClick属性方式","清除您的画"); break; default: break; } }
4.给按钮添加弹窗操作
下面给按钮添加弹窗操作
下面是点击pen按钮的代码:
// 单选提示框 private AlertDialog alertDialog2; public void onClick1(View view){ final String[] items = {"粗","中","细"}; AlertDialog.Builder alertBuilder = new AlertDialog.Builder(this); alertBuilder.setTitle("请选择您需要的笔"); alertBuilder.setSingleChoiceItems(items, 0, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface arg0, int index) { Toast.makeText(MainActivity.this, items[index], Toast.LENGTH_SHORT).show(); } }); alertBuilder.setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface arg0, int arg1) { //TODO 业务逻辑代码 // 关闭提示框 alertDialog2.dismiss(); } }); alertBuilder.setNegativeButton("取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface arg0, int arg1) { // TODO 业务逻辑代码 // 关闭提示框 alertDialog2.dismiss(); } }); alertDialog2 = alertBuilder.create(); alertDialog2.show(); }
接下来我们来看一下运行效果:
shape和color的代码同上,所以直接展示效果了。
5.错误解决
第一个错误
新建项目运行时,就出现了如下的错误:
解决方法:
百度大神大多说是jdk的问题,解决:
右键项目-Properties后按下图操作:
我的原来是1.8,换成1.7点击ok解决。
第二个错误
解决方法:
右键项目-Properties后按下图操作:
将图中Is Library前面的对勾去掉,这样问题就解决了。
画板还有很多功能未添加,日后慢慢实现,希望不会拖太久。
相关推荐
本次我们关注的项目是“小小画图板”的开发,这是一个利用Java编程语言实现的简单图形编辑器。下面,我们将深入探讨这个项目的各个知识点,并分析其背后的编程原理和技术应用。 首先,我们要理解Java作为一种面向...
4. **背景设置**:允许用户更改画布的背景颜色。 最后,测试和优化是必不可少的步骤。确保程序在各种情况下都能正常工作,如处理边缘情况、优化性能以提高绘图流畅度等。 总之,这个Java实现的简单画图工具涵盖了...
这可以通过实现自己的栈数据结构来完成,每当有新的绘图操作时,就将当前画布的状态压入栈中。当用户请求撤销时,弹出栈顶的状态;请求重做时,再将弹出的状态压回。 6. **坐标系统**:在Java GUI中,坐标系统的...
这个程序可能包含基本的绘图功能,如选择颜色、画笔粗细,以及在画布上自由绘制线条、图形等元素,但不支持文件保存功能,意味着用户无法将创作的作品存储下来供日后查看或编辑。 【描述】提到这个画图板是“简单”...
在这个"微信小程序开发-画布:时钟案例源码.zip"压缩包中,我们看到的重点是利用微信小程序的画布(canvas)组件来实现一个动态的时钟应用。下面将详细介绍相关的知识点。 1. **微信小程序环境搭建**: 在进行微信...
本节将探讨如何在Android应用中处理触摸事件,并通过一个简单的“小小画板”实例来阐述其基本原理。 首先,Android的触摸事件是通过MotionEvent类来表示的,它包含了触摸屏幕时的所有信息,如动作类型(ACTION_DOWN...
【小小画图板开发——JAVA课程设计报告】 本报告详细阐述了一款基于Java开发的简易画图板程序,旨在提供类似Windows操作系统自带的画图工具的功能。通过参与这个项目,学生能够将已学的Java编程知识付诸实践,增强...
在iOS开发中,绘图是一项基础且重要的技能,它允许开发者自定义UI元素,实现复杂的视觉效果。"ios-小小的绘图.zip"这个压缩包很可能包含了一组关于iOS平台图形编程的示例代码或者教程,可能涉及的核心技术是Core ...
即之前关于点云三个视角进行截图的讲解,这个通过一个小小的程序来进行实现。采用的pcl来进行点云的读取并且进行相关处理,往某个轴向进行投影,这样处理后,某个轴的坐标会全有0,然后将处理完成,使用opencv来进行...
H5(HTML5)是超文本标记语言的最新版本,它引入了许多新功能和API,如Canvas画布、WebSocket实时通信、Web Storage本地存储等,极大地扩展了网页的交互性和多媒体能力。微信答题小游戏H5就是利用这些特性,构建出...
4. **Canvas绘图**:提供了一个可编程的画布,允许开发者用JavaScript绘制图形和动画。 5. **SVG图形**:支持 Scalable Vector Graphics,使得网页可以包含高质量的矢量图像。 6. **表单控件增强**:新表单控件如...
HTML5是其最新的版本,增加了许多新特性,如离线存储、媒体元素、 canvas 画布、svg矢量图、geolocation 定位等,使得网页开发者能够创建更丰富、更具交互性的用户体验。在描述中提到的“监控页面”,很可能是指这个...
在`Paint`事件中,根据坐标和大小计算实际绘图的位置,并使用矩形绘制出蛇块,为了视觉效果,绘制的大小会比实际大小小1个像素,形成蛇块间的间隙。 `Palette`类则承载了游戏的逻辑处理,包括游戏画布的尺寸、背景...
打开这个".sb2"文件,我们可以看到该项目是如何通过积木式的编程语言来实现"小小画笔"的功能的。 "小小画笔"可能是一个简单的绘画应用或者游戏,允许用户通过控制角色移动在舞台上留下颜色轨迹,就像用鼠标在屏幕上...
这个例子中,矩形会被先平移到(100, 100),然后在(100,100)这个点处进行50%的缩放,最后恢复到初始状态,显示出来的矩体会比原始大小小一半,并且位置在(100, 100)。 总之,掌握Canvas的translate()和scale()方法是...
《Swing实现的小小画板——DrawingBoard_swing_》 在Java的GUI库中,Swing是一个重要的组件,它提供了丰富的用户界面元素,用于构建桌面应用程序。本项目"DrawingBoard_swing_"就是一个利用Swing实现的简单画板程序...
《小小神秘俱乐部:自上而下的交互式像素图》是一个基于JavaScript实现的项目,它提供了一个独特的用户体验,让用户能够参与到一个自顶向下的交互式像素图的探索之中。在这个项目中,JavaScript作为主要的编程语言,...
例如,新的语义元素如、、和帮助构建结构化的网页内容,而离线存储(离线Web应用程序)、媒体元素(和)以及Canvas画布则让开发者能够创建丰富的多媒体体验和图形。 SVG,全称为Scalable Vector Graphics,是一种...
在Java中,`javax.swing.JFrame`类用于创建应用程序的主要窗口,而`JPanel`或`JComponent`子类则用来承载画布,即画图的区域。开发者通常会创建一个自定义的`JPanel`类,重写`paintComponent(Graphics g)`方法,在...