- 浏览: 61675 次
- 性别:
- 来自: 湖南
最新评论
-
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 946一个乐动力的刷新动画 package com.example. ... -
Android自定义控件--1(TextView跑马灯效果)
2014-02-26 10:57 1554N久没有跟新了,最近 ... -
Android 将一张CMYK模式的图片转换成RGB模式的图片
2013-06-25 17:32 2213Android系统是不能够显示打印模式(CMYK)的图片的。所 ... -
Android TextToSpeech语音播放文本
2013-06-25 17:17 1850步骤一、初始化 package com.example.spe ... -
Android连接电脑eclipse无法识别=解决办法
2013-05-23 09:25 21401、方法一:“我的电脑”-->“属性”-->“设备 ... -
Android BaseAdapter如何获得每一项并添加按钮事件
2013-05-21 15:11 3734package com.hangcheng; impor ... -
Android的VideoView如何循环播放
2013-05-15 14:01 4831package com.hangcheng; impor ... -
Android如何获取asset目录下所有文件的路径
2013-05-15 09:48 7690package com.hangcheng.util; ... -
Android--WebView+HTML+Javascript
2013-04-09 17:17 1708知识点:android的WebView控件加载HTML并通过j ... -
VideoView重绘
2013-04-01 23:39 1328知识点:Android中的VideoView控件默认情况下是不 ... -
Android从零开始—多媒体(二十二)
2013-03-06 21:43 1030知识点:音乐播放、录音、播放视频、录像、拍照 步骤一、主界面 ... -
Android从零开始—监听广播BroadcastReceiver(二十一)
2013-03-05 10:17 2081知识点:电话拒接+短息 ... -
Android从零开始—电话+短信(二十)
2013-03-05 10:03 1138知识点:系统电话号码和短信的获取(最好用真机,模拟器上木有电话 ... -
Android从零开始(十九)
2013-02-27 10:35 960知识点:back键的处理(有时候我们可能会不小心按了回退键,但 ... -
Android从零开始(十八)
2013-02-27 10:24 837知识点:菜单(menu) 步骤一、创建菜单项(核心代码如下) ... -
Android从零开始(十七)
2013-02-27 10:09 942知识点:抽屉(SlidingDrawer) 先看一下抽屉打开 ... -
Android从零开始(十六)
2013-02-26 19:43 840知识点:闪屏(通常在 ... -
Android从零开始(十五)
2013-02-26 18:32 1085知识点:异步任务AsyncTa ... -
Android从零开始(十四)
2013-02-26 17:16 833知识点:TabHost选项卡之 ... -
Android从零开始(十三)
2013-02-23 22:57 813知识点:TabHost 效果图: 工程目录结构: ...
相关推荐
Android 签名 控件 手写 自定义的控件.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
Android自定义View之签名板,在控件上用触控写出名字,提取jpg格式文件并保存
第2章 工欲善其事 必先利其器——搭建Android开发环境 2.1 开发Android应用前的准备 2.1.1 Android开发系统要求 2.1.2 Android软件开发包 2.1.3 其他注意事项 2.2 Windows开发环境搭建 2.2.1 JDK、Eclipse、Android...
自定义View——支持设置画笔颜色,画笔宽度,画板颜色,清除画板,检查是否有签名,保存画板图片(复制粘贴可直接使用) /** * Created by YyyyQ on 2020/3/5. * 电子签名 */ public class SignatureView ...
自定义控件时要注意的问题。 obtainMessage 的作用: FrameLayout 需要注意的地方: EditText 禁止弹出按键盘: 获取控件屏幕位置和窗口位置: 为什么MyAdapater的getView没有被调用 XmlSerializer使用总结: ...
12.2.2 理解数字签名:场景2 12.2.3 一种理解数字签名的模式 12.2.4 数字签名执行方式 12.2.5 签名过程的影响 12.3 在包之间共享数据 12.3.1 共享用户ID的性质 12.3.2 共享数据的代码模式 12.4...
12.2.2 理解数字签名:场景2 12.2.3 一种理解数字签名的模式 12.2.4 数字签名执行方式 12.2.5 签名过程的影响 12.3 在包之间共享数据 12.3.1 共享用户ID的性质 12.3.2 共享数据的代码模式 12.4...
2、ANDROID应用程序结构 11 2.1、ACTIVITY 12 2.1.1、概述 12 2.1.2、Activity的生命周期 15 2.1.3、Activity 的创建 16 2.1.4、Activity 的跳转(含Bundle传值) 17 2.1.5.Actvity 堆栈 18 2.1.6、Intent对象调用...
1.整体项目采用MVC框架,是对android知识点的综合应用,用到的技术有 (activity,service,broadcast,content provider,Notification , 数据库,自定义title,自定义控件,自定义toast,widget,aidl进程间通讯, javascript和...
书名:《Android编程入门很简单》(清华大学出版社.王勇)。 压缩打包成2部分,这是第2部分。 本书是一本与众不同的Android学习读物,是一本化繁为简,把抽象问题具体化,把复杂问题简单化的书。本书避免出现...
用途:可用于pdf签名的操作控件 安装 Gradle allprojects { repositories { ... maven { url ' https://jitpack.io ' } } } implementation ' com.github.LightSun:Android-StickerView:<see> ' 自定义...
书名:《Android编程入门很简单》(清华大学出版社.王勇)。 压缩打包成2部分,这是第1部分。 本书是一本与众不同的Android学习读物,是一本化繁为简,把抽象问题具体化,把复杂问题简单化的书。本书避免出现...
11.1 android 的自定义视图 232 11.2 android 的原生组件 238 11.3 android 的安全机制 241 11.4 android 的进程间通信 242 11.5 android 的备份管理器 247 11.5.1 秘诀95:备份运行时数据 247 11.5.2 秘诀96:...
实例040: 使用自定义控件在屏幕中绘 制一条虚线 104 实例041: 在屏幕中实现手风琴效果 106 第3章 自动化服务实例集锦 109 实例042: 自动获取手机屏幕的分辨率 109 实例043: 自动获取手机电池的剩余电量 112 ...
数据库,自定义title,自定义控件,自定义toast、widget等。 1.1.1 主界面 手机卫士项目有很多界面,当用户通过点击应用图标打开应用时,通常第一个呈现给我们的是一个启动界面,我们这里称为Splash界面(该界面的...
黑马程序员Android版金山卫士学习第一天源代码,可以参考代码学习一些小功能的实现。知识点:1、项目的代码组织结构 2、PackageManager 获取应用程序的版本号;...14、自定义组合控件 实现关闭自动更新;
2、ANDROID应用程序结构 11 2.1、ACTIVITY 12 2.1.1、概述 12 2.1.2、Activity的生命周期 15 2.1.3、Activity 的创建 16 2.1.4、Activity 的跳转(含Bundle传值) 17 2.1.5.Actvity 堆栈 18 2.1.6、Intent对象调用...
作者AndroidHJS,源码AndroidProject,简单说几句 敲这个项目也是一时兴起,但是在敲这个项目过程,发现越敲越有劲。可以把自己在CSDN,掘金,干货集中营看到酷炫的效果运用到这个项目,有时候我也可以通过这个项目去...