1. package xiaosi.bitmap;
  2. import android.app.Activity;
  3. import android.os.Bundle;
  4. public class mianActivity extends Activity
  5. {
  6. private surfaceView bitmapView = null;
  7. @Override
  8. protected void onCreate(Bundle savedInstanceState)
  9. {
  10. super.onCreate(savedInstanceState);
  11. bitmapView = new surfaceView(this);
  12. setContentView(bitmapView);
  13. }
  14. }

surfaceView surfaceView .Java

    1. package xiaosi.bitmap;
    2. import java.io.InputStream;
    3. import android.content.Context;
    4. import android.content.res.Resources;
    5. import android.graphics.Bitmap;
    6. import android.graphics.Canvas;
    7. import android.graphics.Color;
    8. import android.graphics.drawable.BitmapDrawable;
    9. import android.view.MotionEvent;
    10. import android.view.SurfaceHolder;
    11. import android.view.SurfaceView;
    12. public class surfaceView extends SurfaceView{
    13. // 控制surface的接口,提供了控制surface的大小、格式、像素
    14. private SurfaceHolder surfaceHolder;
    15. private Canvas canvas = null;
    16. // x y用户才触摸屏幕的坐标
    17. private float x=0,y=0;
    18. private Bitmap bitmap = null;
    19. public surfaceView(Context context) {
    20. super(context);
    21. // 获取SurfaceHolder接口
    22. surfaceHolder = this.getHolder();
    23. // 设置屏幕保持开启状态
    24. this.setKeepScreenOn(true);
    25. // 获取资源文件res
    26. Resources res=getResources();
    27. // 获取位图资源文件的输入流
    28. InputStream inputStream=res.openRawResource(R.drawable.h);
    29. // 创建可绘制的位图对象
    30. BitmapDrawable bitmapDrawable=new BitmapDrawable(inputStream);
    31. // 通过可绘制位图对象得到位图引用
    32. bitmap=bitmapDrawable.getBitmap();
    33. /*
    34. * // 获取资源文件的引用res
    35. Resources res = getResources();
    36. // 获取图形资源文件
    37. Bitmap bmp = BitmapFactory.decodeResource(res, R.drawable.h);
    38. */
    39. }
    40. //绘制位图
    41. private void onDraw() {
    42. try {
    43. // 锁定Canvas画布
    44. canvas = surfaceHolder.lockCanvas();
    45. // 设置canvas画布背景为黑色
    46. canvas.drawColor(Color.GREEN);
    47. // 在画布上绘制位图
    48. //让位图的中心正好在触摸点位置上
    49. canvas.drawBitmap(bitmap, x-bitmap.getWidth()/2, y-bitmap.getHeight()/2, null);
    50. } catch (Exception ex) {
    51. } finally {
    52. if (canvas != null)
    53. // 解锁画布,并显示绘制图片
    54. surfaceHolder.unlockCanvasAndPost(canvas);
    55. }
    56. }
    57. //触摸事件
    58. public boolean onTouchEvent(MotionEvent event){
    59. x = event.getX();
    60. y = event.getY();
    61. onDraw();
    62. return true;
    63. }
    64. }

Android 学习笔记之Bitmap位图虽触摸点移动的更多相关文章

  1. Android学习笔记之Bitmap位图虽触摸点移动

    package xiaosi.bitmap; import android.app.Activity; import android.os.Bundle; public class mianActiv ...

  2. Android 学习笔记之Bitmap位图的旋转

    位图的旋转也可以借助Matrix或者Canvas来实现. 通过postRotate方法设置旋转角度,然后用createBitmap方法创建一个经过旋转处理的Bitmap对象,最后用drawBitmap ...

  3. Android 学习笔记之Bitmap位图的缩放

    位图的缩放也可以借助Matrix或者Canvas来实现. 通过postScale(0.5f, 0.3f)方法设置旋转角度,然后用createBitmap方法创建一个经过缩放处理的Bitmap对象,最后 ...

  4. Android学习笔记之Bitmap位图的旋转

    位图的旋转也可以借助Matrix或者Canvas来实现. 通过postRotate方法设置旋转角度,然后用createBitmap方法创建一个经过旋转处理的Bitmap对象,最后用drawBitmap ...

  5. Android学习笔记之Bitmap位图的缩放

    位图的缩放也可以借助Matrix或者Canvas来实现. 通过postScale(0.5f, 0.3f)方法设置旋转角度,然后用createBitmap方法创建一个经过缩放处理的Bitmap对象,最后 ...

  6. Android学习笔记点击事件和触摸事件的区别

    当我们点击手机屏幕的时候Android系统不仅会触发单击事件,还会触发触摸事件.在Android中它会先触发触摸事件,如果这个触摸事件没有被消费掉再去触发单击事件 代码示例: MainActivty. ...

  7. Android学习笔记进阶18 之画图并保存图片到本地

    1.首先创建一个Bitmap图片,并指定大小:   2.在该图片上创建一个新的画布Canvas,然后在画布上绘制,并保存即可:   3.需要保存的目录File,注意如果写的目录如“/sdcard/so ...

  8. Android学习笔记进阶18之画图并保存图片到本地

    1.首先创建一个Bitmap图片,并指定大小:   2.在该图片上创建一个新的画布Canvas,然后在画布上绘制,并保存即可:   3.需要保存的目录File,注意如果写的目录如“/sdcard/so ...

  9. Android学习笔记进阶16之BitmapShader

    <1>简介 具体的看一下博文:Android学习笔记进阶15之Shader渲染 public   BitmapShader(Bitmap bitmap,Shader.TileMode ti ...

随机推荐

  1. react --- 路由传参的几种方式

    1.params 优势 : 刷新地址栏,参数依然存在缺点:只能传字符串,并且,如果传的值太多的话,url会变得长而丑陋. 2.query 优势:传参优雅,传递参数可传对象:缺点:刷新地址栏,参数丢失 ...

  2. 什么是MySQL?(一)

    课程大纲 第一章:初识MySQL 1.1什么是MySQL?  1.2如何安装MySQL?  1.3如何配置MySQL?  1.4如何启动和关闭MySQL?  1.5MySQL的登录和退出  1.6如何 ...

  3. 升级JDK9后eclipse无法启动的解决方法

    解决方法-打开: D:\Program Files\eclipse\eclipse.ini 在文件末尾添加一行: --add-modules=ALL-SYSTEM 再次启动eclipse即可 感谢ht ...

  4. WebView的坑[持续更新]

    返回错误的 innerHeight,如 240(WebView returns bad window.innerHeight) http://stackoverflow.com/questions/1 ...

  5. canvas为什么你指定一个比较小的宽高,但它实际占位却很多?

    ccanvas默认的宽高占位是:300*150  px  所以当你画一个普通的举行,你指定的宽高小于默认宽高的时候,通过审查元素发现周围都是空白的.

  6. Python3基础笔记--函数

    一.函数 定义: 函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数名即可     特性: 1)代码重用 2)保持一致性 3)可扩展性 参考博客: Py西游攻关之 ...

  7. 初学者指南:ZFS 是什么,为什么要使用 ZFS?

    作者: John Paul 译者: LCTT Lv Feng 今天,我们来谈论一下 ZFS,一个先进的文件系统.我们将讨论 ZFS 从何而来,它是什么,以及为什么它在科技界和企业界如此受欢迎. 虽然我 ...

  8. CentOS6.9下ssh密钥登录配置步骤(免密码登录)和ssh-keygen 命令常用参数

    密钥登录步骤(免密码登录)ssh登录提供两种认证方式:口令(密码)认证方式和密钥认证方式.其中口令(密码)认证方式是我们最常用的一种,出于安全方面的考虑,介绍密钥认证方式登录到linux/unix的方 ...

  9. Debian9.5 系统配置FTP

    FTP 是File Transfer Protocol(文件传输协议)的英文简称,而中文简称为“文传协议”.用于Internet上的控制文件的双向传输.同时,它也是一个应用程序(Application ...

  10. Linux Shell脚本编程-基础2

    命令退出状态码  bash每个命令,执行状态都有返回值 0表示成功 非0表示失败(1-255) $?特殊变量可以打印出上一条命令的状态返回值 脚本的状态返回值是脚本执行的最后一条命令 自定义脚本状态返 ...