Android学习笔记之Bitmap位图虽触摸点移动
- package xiaosi.bitmap;
- import android.app.Activity;
- import android.os.Bundle;
- public class mianActivity extends Activity
- {
- private surfaceView bitmapView = null;
- @Override
- protected void onCreate(Bundle savedInstanceState)
- {
- super.onCreate(savedInstanceState);
- bitmapView = new surfaceView(this);
- setContentView(bitmapView);
- }
- }
surfaceView surfaceView .Java
- package xiaosi.bitmap;
- import java.io.InputStream;
- import android.content.Context;
- import android.content.res.Resources;
- import android.graphics.Bitmap;
- import android.graphics.Canvas;
- import android.graphics.Color;
- import android.graphics.drawable.BitmapDrawable;
- import android.view.MotionEvent;
- import android.view.SurfaceHolder;
- import android.view.SurfaceView;
- public class surfaceView extends SurfaceView{
- // 控制surface的接口,提供了控制surface的大小、格式、像素
- private SurfaceHolder surfaceHolder;
- private Canvas canvas = null;
- // x y用户才触摸屏幕的坐标
- private float x=0,y=0;
- private Bitmap bitmap = null;
- public surfaceView(Context context) {
- super(context);
- // 获取SurfaceHolder接口
- surfaceHolder = this.getHolder();
- // 设置屏幕保持开启状态
- this.setKeepScreenOn(true);
- // 获取资源文件res
- Resources res=getResources();
- // 获取位图资源文件的输入流
- InputStream inputStream=res.openRawResource(R.drawable.h);
- // 创建可绘制的位图对象
- BitmapDrawable bitmapDrawable=new BitmapDrawable(inputStream);
- // 通过可绘制位图对象得到位图引用
- bitmap=bitmapDrawable.getBitmap();
- /*
- * // 获取资源文件的引用res
- Resources res = getResources();
- // 获取图形资源文件
- Bitmap bmp = BitmapFactory.decodeResource(res, R.drawable.h);
- */
- }
- //绘制位图
- private void onDraw() {
- try {
- // 锁定Canvas画布
- canvas = surfaceHolder.lockCanvas();
- // 设置canvas画布背景为黑色
- canvas.drawColor(Color.GREEN);
- // 在画布上绘制位图
- //让位图的中心正好在触摸点位置上
- canvas.drawBitmap(bitmap, x-bitmap.getWidth()/2, y-bitmap.getHeight()/2, null);
- } catch (Exception ex) {
- } finally {
- if (canvas != null)
- // 解锁画布,并显示绘制图片
- surfaceHolder.unlockCanvasAndPost(canvas);
- }
- }
- //触摸事件
- public boolean onTouchEvent(MotionEvent event){
- x = event.getX();
- y = event.getY();
- onDraw();
- return true;
- }
- }
Android学习笔记之Bitmap位图虽触摸点移动的更多相关文章
- Android 学习笔记之Bitmap位图虽触摸点移动
package xiaosi.bitmap; import android.app.Activity; import android.os.Bundle; public class mianActiv ...
- Android 学习笔记之Bitmap位图的旋转
位图的旋转也可以借助Matrix或者Canvas来实现. 通过postRotate方法设置旋转角度,然后用createBitmap方法创建一个经过旋转处理的Bitmap对象,最后用drawBitmap ...
- Android 学习笔记之Bitmap位图的缩放
位图的缩放也可以借助Matrix或者Canvas来实现. 通过postScale(0.5f, 0.3f)方法设置旋转角度,然后用createBitmap方法创建一个经过缩放处理的Bitmap对象,最后 ...
- Android学习笔记之Bitmap位图的旋转
位图的旋转也可以借助Matrix或者Canvas来实现. 通过postRotate方法设置旋转角度,然后用createBitmap方法创建一个经过旋转处理的Bitmap对象,最后用drawBitmap ...
- Android学习笔记之Bitmap位图的缩放
位图的缩放也可以借助Matrix或者Canvas来实现. 通过postScale(0.5f, 0.3f)方法设置旋转角度,然后用createBitmap方法创建一个经过缩放处理的Bitmap对象,最后 ...
- Android学习笔记点击事件和触摸事件的区别
当我们点击手机屏幕的时候Android系统不仅会触发单击事件,还会触发触摸事件.在Android中它会先触发触摸事件,如果这个触摸事件没有被消费掉再去触发单击事件 代码示例: MainActivty. ...
- Android学习笔记进阶18 之画图并保存图片到本地
1.首先创建一个Bitmap图片,并指定大小: 2.在该图片上创建一个新的画布Canvas,然后在画布上绘制,并保存即可: 3.需要保存的目录File,注意如果写的目录如“/sdcard/so ...
- Android学习笔记进阶18之画图并保存图片到本地
1.首先创建一个Bitmap图片,并指定大小: 2.在该图片上创建一个新的画布Canvas,然后在画布上绘制,并保存即可: 3.需要保存的目录File,注意如果写的目录如“/sdcard/so ...
- Android学习笔记进阶16之BitmapShader
<1>简介 具体的看一下博文:Android学习笔记进阶15之Shader渲染 public BitmapShader(Bitmap bitmap,Shader.TileMode ti ...
随机推荐
- 关于checkbox的一些jquery操作
表单在前端开发中是经常会遇到的,其中自然也少不了checkbox复选框,对于复选框的操作无外乎有以下三种:全选,全不选,反选.下面零度逍遥就给大家分析分析. 一.checkbox全选 大家都知道选择c ...
- kafka offset的存储问题
注意:从kafka-0.9版本及以后,kafka的消费者组和offset信息就不存zookeeper了,而是存到broker服务器上,所以,如果你为某个消费者指定了一个消费者组名称(group.id) ...
- 解决Visual Studio-IIS Express 支持局域网访问
- Microsoft office2016(专业增强版) 安装错误,报CRT(KB2999226)
对着这个错误的出现,网上有解释,这里不多说(实际是我没有找到比较靠谱的说法..),跟Window Update这个服务有关. 首先打开”Windows人为管理器”->"服务" ...
- javaScript学习之正则表达式初探
正则表达式 正则表达式,又称规则表达式.(英语:Regular Expression,在代码中常简写为regex.regexp或RE),计算机科学的一个概念.正则表达式通常被用来检索.替换那些符 ...
- Django transaction 误用之后遇到的一个问题与解决方法
今天在调试项目开发好的一个模块的时候,发现了一个很诡异的现象,最后追踪发现是因为在项目中事务处理有误所致.这个问题坑了我好一会,所以记录一下,以免再踩坑.下面开始详述. 我们都知道 Django 框架 ...
- route---设置Linux内核中的网络路由表
route命令用来显示并设置Linux内核中的网络路由表,route命令设置的路由主要是静态路由.要实现两个不同的子网之间的通信,需要一台连接两个网络的路由器,或者同时位于两个网络的网关来实现. 在L ...
- Linux下yum安装ffmpeg和使用
本文属于转载文章:转载地址是http://www.cnblogs.com/dennisit/archive/2012/12/27/2835089.html 使用Yum安装ffmpeg 打开 vi /e ...
- .netcore2.1开发部署及在centos7.x下的部署
.netcore2.1的优势毋容置疑,具体的性能建议去实际test对比,相对于之前的.netfx不知道快了多少.选择C#作为后端开发语言,主要基于以下三点: 1)代码优雅 : 2)快速搭建一套小型企业 ...
- 用Vue.js来实现城市三级联动
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8&quo ...