- 浏览: 64204 次
- 性别:
- 来自: 湖南
最新评论
-
Neacy_Zz:
有些Android也可以显示的出来。
Android 将一张CMYK模式的图片转换成RGB模式的图片 -
hold_on:
AsyncTask 2.3 和 4.0稍有不同
Android从零开始(十五)
客户信息交互用到的一个数字签名,保存的是bmp图片(我那会在PAD端保存成图片比较容易,关键是上传到PC端问题大了 用USB-HID方式传总是出错,因为每个包我发送255字节,最后一个包发错了,就在PC上保存不成完整的图片,尝试过用串口传输,但是速度较慢,容易丢包)以下是源码:
源码下载请戳这里:
/** * */ package com.hacheng.view; import java.util.ArrayList; import java.util.List; import android.content.Context; import android.content.res.TypedArray; import android.graphics.Bitmap; import android.graphics.Bitmap.Config; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Path; import android.util.AttributeSet; import android.view.MotionEvent; import android.view.View; import com.hacheng.ttsdemo.R; /** * @author:xj * @version:v1.0 * @company: */ public class PaintView extends View { private static final float DEFAULT_BLOD_WIDTH = 4.0f; private static final int DEFAULT_COLOR = Color.BLACK; private List<Float> points = new ArrayList<Float>(); private Paint paint; // 画笔 private Canvas cacheCanvas;// 画布 private Bitmap cachebBitmap; private Path path;// 轨迹 private float curX; private float curY; private float blodWidth = DEFAULT_BLOD_WIDTH; private int color = DEFAULT_COLOR; public Bitmap getCachebBitmap() { return cachebBitmap; } public PaintView(Context context, AttributeSet attrs) { super(context, attrs); TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.paintView); blodWidth = typedArray.getFloat(R.styleable.paintView_blodWidth, DEFAULT_BLOD_WIDTH); color = typedArray.getColor(R.styleable.paintView_color, DEFAULT_COLOR); init(); } private void init() { paint = new Paint(); paint.setAntiAlias(true); paint.setStrokeWidth(blodWidth); paint.setColor(color); paint.setStyle(Paint.Style.STROKE); path = new Path(); } public void clear() { if (cacheCanvas != null) { paint.setColor(Color.BLUE); cacheCanvas.drawPaint(paint); paint.setColor(Color.BLACK); cacheCanvas.drawColor(Color.WHITE); invalidate(); } } @Override protected void onDraw(Canvas canvas) { if (cachebBitmap == null || cacheCanvas == null) { cachebBitmap = Bitmap.createBitmap(this.getWidth(), this.getHeight(), Config.ARGB_8888); cacheCanvas = new Canvas(cachebBitmap); cacheCanvas.drawColor(Color.WHITE); } canvas.drawBitmap(cachebBitmap, 0, 0, null); canvas.drawPath(path, paint); } @Override protected void onSizeChanged(int w, int h, int oldw, int oldh) { int curW = cachebBitmap != null ? cachebBitmap.getWidth() : 0; int curH = cachebBitmap != null ? cachebBitmap.getHeight() : 0; if (curW >= w && curH >= h) { return; } if (curW < w) { curW = w; } if (curH < h) { curH = h; } Bitmap newBitmap = Bitmap.createBitmap(curW, curH, Bitmap.Config.ARGB_8888); Canvas newCanvas = new Canvas(); newCanvas.setBitmap(newBitmap); if (cachebBitmap != null) { newCanvas.drawBitmap(cachebBitmap, 0, 0, null); } cachebBitmap = newBitmap; cacheCanvas = newCanvas; } @Override public boolean onTouchEvent(MotionEvent event) { float x = event.getX(); float y = event.getY(); switch (event.getAction()) { case MotionEvent.ACTION_DOWN: curX = x; curY = y; points.add(x); points.add(y); path.moveTo(curX, curY); break; case MotionEvent.ACTION_MOVE: path.quadTo(curX, curY, x, y); curX = x; curY = y; points.add(x); points.add(y); break; case MotionEvent.ACTION_UP: cacheCanvas.drawPath(path, paint); path.reset(); break; default: break; } invalidate(); return true; } public List<Float> getPoints() { return points; } }
源码下载请戳这里:
- PaintView.zip (1.4 KB)
- 下载次数: 0
发表评论
-
Android自定义控件--3(刷新动画)
2014-02-26 11:14 990一个乐动力的刷新动画 package com.example. ... -
Android自定义控件--1(TextView跑马灯效果)
2014-02-26 10:57 1597N久没有跟新了,最近 ... -
Android 将一张CMYK模式的图片转换成RGB模式的图片
2013-06-25 17:32 2322Android系统是不能够显示打印模式(CMYK)的图片的。所 ... -
Android TextToSpeech语音播放文本
2013-06-25 17:17 1917步骤一、初始化 package com.example.spe ... -
Android连接电脑eclipse无法识别=解决办法
2013-05-23 09:25 22431、方法一:“我的电脑”-->“属性”-->“设备 ... -
Android BaseAdapter如何获得每一项并添加按钮事件
2013-05-21 15:11 3778package com.hangcheng; impor ... -
Android的VideoView如何循环播放
2013-05-15 14:01 4866package com.hangcheng; impor ... -
Android如何获取asset目录下所有文件的路径
2013-05-15 09:48 7805package com.hangcheng.util; ... -
Android--WebView+HTML+Javascript
2013-04-09 17:17 1787知识点:android的WebView控件加载HTML并通过j ... -
VideoView重绘
2013-04-01 23:39 1397知识点:Android中的VideoView控件默认情况下是不 ... -
Android从零开始—多媒体(二十二)
2013-03-06 21:43 1070知识点:音乐播放、录音、播放视频、录像、拍照 步骤一、主界面 ... -
Android从零开始—监听广播BroadcastReceiver(二十一)
2013-03-05 10:17 2134知识点:电话拒接+短息 ... -
Android从零开始—电话+短信(二十)
2013-03-05 10:03 1171知识点:系统电话号码和短信的获取(最好用真机,模拟器上木有电话 ... -
Android从零开始(十九)
2013-02-27 10:35 1029知识点:back键的处理(有时候我们可能会不小心按了回退键,但 ... -
Android从零开始(十八)
2013-02-27 10:24 905知识点:菜单(menu) 步骤一、创建菜单项(核心代码如下) ... -
Android从零开始(十七)
2013-02-27 10:09 1036知识点:抽屉(SlidingDrawer) 先看一下抽屉打开 ... -
Android从零开始(十六)
2013-02-26 19:43 915知识点:闪屏(通常在 ... -
Android从零开始(十五)
2013-02-26 18:32 1165知识点:异步任务AsyncTa ... -
Android从零开始(十四)
2013-02-26 17:16 890知识点:TabHost选项卡之 ... -
Android从零开始(十三)
2013-02-23 22:57 872知识点:TabHost 效果图: 工程目录结构: ...
相关推荐
"Android自定义控件-温度控制旋转按钮.zip"是一个专为实现温度调节功能而设计的自定义控件示例。这个控件模拟了一个可以旋转的按钮,用户通过旋转来调整温度值,常见于空调或加热系统的用户界面中。 首先,`...
在Android开发中,自定义控件是提升应用界面独特性和用户体验的重要手段。本文将深入探讨如何在自定义控件中进行文本绘制,包括对文字基线的理解、文字绘制的范围和区域设定,以及如何通过`drawText()`方法实现这一...
本资源"安卓手绘图片处理画板相关-Android签名控件手写自定义的控件.rar"提供了一个针对这一需求的自定义控件实现。下面我们将深入探讨这个主题,讲解如何在Android中实现手绘图片处理和签名控件。 首先,自定义...
首先,自定义控件通常涉及到继承已有的Android View或ViewGroup类,并重写其关键方法,如onDraw()用于绘制视图,以及onMeasure()和onLayout()来处理测量和布局。开发者可能会覆盖这些方法来实现自己的逻辑,以达到...
本教程将深入探讨如何在Android应用中实现一个自定义签名Dialog。 首先,我们需要理解Dialog的基本概念。在Android中,Dialog是Activity的一个子类,用于显示一些临时信息或者需要用户进行简单交互的操作。自定义...
在Android开发中,"android 签名控件"是一个常见的需求,特别是在移动应用中需要用户进行电子签名的场景,例如合同签署、订单确认等。这个控件允许用户通过触屏在屏幕上绘制签名,然后保存或展示这个签名。在描述中...
在项目【F1ReKing-SignatureView-1f0ddc2】中,我们可以找到这个自定义控件的具体源码实现。通过阅读和分析源码,开发者可以了解其内部的工作原理,例如如何处理触摸事件、如何绘制线条以及如何保存图片等。此外,...
在IT行业中,自定义控件是提升应用用户体验和满足特定需求的重要手段。"SignView自定义签到控件"就是这样一个实例,它专为实现个性化签到功能而设计。通过这个控件,开发者可以轻松地在应用程序中集成签到功能,并...
Android使用XML来定义用户界面,包括控件和布局。你会学到线性布局、相对布局、网格布局等,以及如何使用ConstraintLayout实现响应式设计。 四、活动(Activity)与任务(Task) 活动是Android应用的基本单元,负责...
画板View控件在Android中通常基于`View`或`SurfaceView`进行扩展,通过重写`onDraw()`方法来实现自定义绘图功能。在这个特定的Android签名画板module中,开发者可能已经封装了一些核心功能,如笔触颜色选择、粗细...
在数字化世界中,Android操作系统占据着移动设备市场的主导地位,因此学习Android开发成为许多技术爱好者和职业开发者的重要技能。本课程专为初学者设计,旨在帮助学员快速掌握Android应用开发的基本概念和技术,...
2. **用户界面设计**:应用中的拖控件设计涉及到Android的布局管理器,如LinearLayout、RelativeLayout、ConstraintLayout等,通过这些布局可以实现组件的排列和对齐。此外,可能还运用了自定义View或者Draggable ...
2. 自定义UI:使用Android的布局和控件,开发者可以自由设计拨号界面的外观和交互,例如改变数字键盘的样式,添加自定义功能按钮。 3. 功能扩展:利用Android的权限系统,开发者可以增加额外的功能,如集成语音识别...
3. **UI设计与布局**:通过C#讲解如何创建和管理Android用户界面,包括XML布局文件、控件使用、事件处理,以及如何实现动态布局和自定义视图。 4. **数据存储与网络通信**:介绍如何在Android应用中使用SQLite...
Android应用的用户界面(UI)通常通过XML文件定义,这些文件描述了控件的排列方式和属性。Android提供了一系列的视图组件,如TextView、Button、ImageView等,开发者可以组合这些组件创建丰富的交互式界面。此外,还...
在Android平台上,手写签名功能通常用于电子合同、表单填写等场景,为用户提供便捷的签名体验。这个名为"DrawDemo"的项目就是一个简单的实现这一功能的示例。接下来,我们将详细探讨Android手写签名的相关知识点。 ...
Android开发教程中文版是针对想要学习或提升Android应用开发技能的开发者所准备的一份详尽指南。这份教程是由官网的原始英文版本翻译而来,确保了内容的权威性和准确性。使用Android Studio作为主要的集成开发环境...
- 自定义控件:为了实现独特的功能或界面效果,可能需要自定义Android控件。 6. **安全性**: - 数据加密:保护用户数据安全,如使用SSL/TLS进行网络通信加密。 - 权限管理:根据需求申请Android权限,如访问...
自定义View——支持设置画笔颜色,画笔宽度,画板颜色,清除画板,检查是否有签名,保存画板图片(复制粘贴可直接使用) /** * Created by YyyyQ on 2020/3/5. * 电子签名 */ public class SignatureView ...