`

小小画布的实现

 
阅读更多

一个简单的画板

 

博客将分为以下几个方面来写:

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前面的对勾去掉,这样问题就解决了。

 

 画板还有很多功能未添加,日后慢慢实现,希望不会拖太久。

 

 

 

 

  • 大小: 14.1 KB
  • 大小: 116.3 KB
  • 大小: 9.8 KB
  • 大小: 56.3 KB
  • 大小: 20.8 KB
  • 大小: 24 KB
  • 大小: 30.5 KB
  • 大小: 29 KB
  • draw.zip (367.4 KB)
  • 描述: 代码实现
  • 下载次数: 0
分享到:
评论

相关推荐

    小小画图板的开发,java课程设计源代码

    本次我们关注的项目是“小小画图板”的开发,这是一个利用Java编程语言实现的简单图形编辑器。下面,我们将深入探讨这个项目的各个知识点,并分析其背后的编程原理和技术应用。 首先,我们要理解Java作为一种面向...

    java实现的一个小小画图板的开发

    4. **背景设置**:允许用户更改画布的背景颜色。 最后,测试和优化是必不可少的步骤。确保程序在各种情况下都能正常工作,如处理边缘情况、优化性能以提高绘图流畅度等。 总之,这个Java实现的简单画图工具涵盖了...

    小小画图板的开发 java

    这可以通过实现自己的栈数据结构来完成,每当有新的绘图操作时,就将当前画布的状态压入栈中。当用户请求撤销时,弹出栈顶的状态;请求重做时,再将弹出的状态压回。 6. **坐标系统**:在Java GUI中,坐标系统的...

    小小画图板 JAVA课程设计

    这个程序可能包含基本的绘图功能,如选择颜色、画笔粗细,以及在画布上自由绘制线条、图形等元素,但不支持文件保存功能,意味着用户无法将创作的作品存储下来供日后查看或编辑。 【描述】提到这个画图板是“简单”...

    微信小程序开发-画布:时钟案例源码.zip

    在这个"微信小程序开发-画布:时钟案例源码.zip"压缩包中,我们看到的重点是利用微信小程序的画布(canvas)组件来实现一个动态的时钟应用。下面将详细介绍相关的知识点。 1. **微信小程序环境搭建**: 在进行微信...

    Android触摸事件小小画板

    本节将探讨如何在Android应用中处理触摸事件,并通过一个简单的“小小画板”实例来阐述其基本原理。 首先,Android的触摸事件是通过MotionEvent类来表示的,它包含了触摸屏幕时的所有信息,如动作类型(ACTION_DOWN...

    小小画图板开发——JAVA课程设计报告.doc

    【小小画图板开发——JAVA课程设计报告】 本报告详细阐述了一款基于Java开发的简易画图板程序,旨在提供类似Windows操作系统自带的画图工具的功能。通过参与这个项目,学生能够将已学的Java编程知识付诸实践,增强...

    ios-小小的绘图.zip

    在iOS开发中,绘图是一项基础且重要的技能,它允许开发者自定义UI元素,实现复杂的视觉效果。"ios-小小的绘图.zip"这个压缩包很可能包含了一组关于iOS平台图形编程的示例代码或者教程,可能涉及的核心技术是Core ...

    pcl+opencv 实现点云截图

    即之前关于点云三个视角进行截图的讲解,这个通过一个小小的程序来进行实现。采用的pcl来进行点云的读取并且进行相关处理,往某个轴向进行投影,这样处理后,某个轴的坐标会全有0,然后将处理完成,使用opencv来进行...

    微信答题小小游戏h5源码

    H5(HTML5)是超文本标记语言的最新版本,它引入了许多新功能和API,如Canvas画布、WebSocket实时通信、Web Storage本地存储等,极大地扩展了网页的交互性和多媒体能力。微信答题小游戏H5就是利用这些特性,构建出...

    web前端的一些小小的笔记

    4. **Canvas绘图**:提供了一个可编程的画布,允许开发者用JavaScript绘制图形和动画。 5. **SVG图形**:支持 Scalable Vector Graphics,使得网页可以包含高质量的矢量图像。 6. **表单控件增强**:新表单控件如...

    一个小小的监控页面,主要是html文件,适合一些网页开发,以及毕业设计,有需要的可以下载

    HTML5是其最新的版本,增加了许多新特性,如离线存储、媒体元素、 canvas 画布、svg矢量图、geolocation 定位等,使得网页开发者能够创建更丰富、更具交互性的用户体验。在描述中提到的“监控页面”,很可能是指这个...

    c#贪吃蛇实现完整流程.pdf

    在`Paint`事件中,根据坐标和大小计算实际绘图的位置,并使用矩形绘制出蛇块,为了视觉效果,绘制的大小会比实际大小小1个像素,形成蛇块间的间隙。 `Palette`类则承载了游戏的逻辑处理,包括游戏画布的尺寸、背景...

    scratch编程项目源代码文件案例素材-[小小画笔].zip

    打开这个".sb2"文件,我们可以看到该项目是如何通过积木式的编程语言来实现"小小画笔"的功能的。 "小小画笔"可能是一个简单的绘画应用或者游戏,允许用户通过控制角色移动在舞台上留下颜色轨迹,就像用鼠标在屏幕上...

    安卓绘图 canvas 绘图 平移缩放

    这个例子中,矩形会被先平移到(100, 100),然后在(100,100)这个点处进行50%的缩放,最后恢复到初始状态,显示出来的矩体会比原始大小小一半,并且位置在(100, 100)。 总之,掌握Canvas的translate()和scale()方法是...

    DrawingBoard_swing_

    《Swing实现的小小画板——DrawingBoard_swing_》 在Java的GUI库中,Swing是一个重要的组件,它提供了丰富的用户界面元素,用于构建桌面应用程序。本项目"DrawingBoard_swing_"就是一个利用Swing实现的简单画板程序...

    小小神秘俱乐部:自上而下的交互式像素图

    《小小神秘俱乐部:自上而下的交互式像素图》是一个基于JavaScript实现的项目,它提供了一个独特的用户体验,让用户能够参与到一个自顶向下的交互式像素图的探索之中。在这个项目中,JavaScript作为主要的编程语言,...

    html5和svg实现太空人404错误页面动画模板特效源码.zip

    例如,新的语义元素如、、和帮助构建结构化的网页内容,而离线存储(离线Web应用程序)、媒体元素(和)以及Canvas画布则让开发者能够创建丰富的多媒体体验和图形。 SVG,全称为Scalable Vector Graphics,是一种...

    java语言编写的画图板

    在Java中,`javax.swing.JFrame`类用于创建应用程序的主要窗口,而`JPanel`或`JComponent`子类则用来承载画布,即画图的区域。开发者通常会创建一个自定义的`JPanel`类,重写`paintComponent(Graphics g)`方法,在...

Global site tag (gtag.js) - Google Analytics