我自定义了一个surfaceview,我在上面绘制多张图片,让它能够上下方滚显示图片,但是onMeasure()方法在重写的时候遇到了问题,不知道如何设置它的高度,

  1. public class MySurfaceView extends SurfaceView implements Callback{
  2.  
  3. private SurfaceHolder sfh;
  4. private Paint paint;
  5. public MySurfaceView(Context context) {
  6. super(context);
  7. init(context);
  8. }
  9.  
  10. private void init(Context context) {
  11. sfh=this.getHolder();
  12. sfh.addCallback(this);
  13. paint=new Paint();
  14. paint.setColor(Color.WHITE);
  15.  
  16. }
  17.  
  18. public MySurfaceView(Context context, AttributeSet attrs, int defStyle) {
  19. super(context,attrs,defStyle);
  20. init(context);
  21. }
  22.  
  23. public MySurfaceView(Context context, AttributeSet attrs) {
  24. super(context,attrs);
  25. init(context);
  26.  
  27. }
  28.  
  29. @Override
  30. public void surfaceChanged(SurfaceHolder holder, int format, int width,int height) {
  31.  
  32. }
  33.  
  34. @Override
  35. public void surfaceCreated(SurfaceHolder holder) {
  36. myDraw();
  37. }
  38.  
  39. private void myDraw() {
  40. Canvas canvas=sfh.lockCanvas();
  41. canvas.drawRect(0, 0, this.getWidth(), this.getHeight(), new Paint());
  42. Bitmap bmp=readBitmap(getResources(), R.drawable.pic0);
  43. Matrix matrix=new Matrix();
  44.  
  45. matrix.setScale(0.15f, 0.15f);
  46. matrix.postTranslate(100, 0);
  47. canvas.drawBitmap(bmp, matrix, paint);
  48.  
  49. matrix.postTranslate(0, 450);
  50. bmp=readBitmap(getResources(), R.drawable.pic2);
  51. canvas.drawBitmap(bmp, matrix, paint);
  52.  
  53. matrix.postTranslate(0, 500);
  54. bmp=readBitmap(getResources(), R.drawable.pic5);
  55. canvas.drawBitmap(bmp, matrix, paint);
  56.  
  57. matrix.postTranslate(0, 550);
  58. bmp=readBitmap(getResources(), R.drawable.pic7);
  59. canvas.drawBitmap(bmp, matrix, paint);
  60.  
  61. sfh.unlockCanvasAndPost(canvas);
  62. if(bmp!=null)
  63. bmp.recycle();
  64. }
  65.  
  66. @Override
  67. public void surfaceDestroyed(SurfaceHolder holder) {
  68.  
  69. }
  70.  
  71. @Override
  72. public boolean onTouchEvent(MotionEvent event) {
  73. return super.onTouchEvent(event);
  74. }
  75.  
  76. @Override
  77. protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
  78. // TODO Auto-generated method stub
  79. super.onMeasure(widthMeasureSpec, heightMeasureSpec);
  80.  
  81. setMeasuredDimension(800, 2000);//2:5 2000 5000 1600 4000 2:5
  82. }
  83.  
  84. public static Bitmap readBitmap(Resources r, int resId) {
  85. BitmapFactory.Options opt = new BitmapFactory.Options();
  86. opt.inPreferredConfig = Bitmap.Config.RGB_565;
  87. opt.inPurgeable = true;
  88. opt.inInputShareable = true;
  89. InputStream is = r.openRawResource(resId);
  90. return BitmapFactory.decodeStream(is, null, opt);
  91. }
  92.  
  93. }

来自:安卓教程网

Android自定义surfaceView显示多张图片的更多相关文章

  1. android 自定义Toast显示风格

    1.创建一个自己想要显示Toast风格的XML如下代码(toast_xml.xml): <?xml version="1.0" encoding="utf-8&qu ...

  2. 天气渐热,来片雪花降降温——Android自定义SurfaceView实现雪花效果

    实现雪花的效果其实也可以通过自定义View的方式来实现的(SurfaceView也是继承自View的),而且操作上也相对简单一些,当然也有一些不足啦... 相对于View,SurfaceView有如下 ...

  3. Android 自定义 ListView 显示网络上 JSON 格式歌曲列表

    本文内容 环境 项目结构 演示自定义 ListView 显示网络上 JSON 歌曲列表 参考资料 本文最开始看的是一个国人翻译的文章,没有源代码可下载,根据文中提供的代码片段,自己新建的项目(比较可恶 ...

  4. Android自定义PopupWindow显示在控件上方或者下方

    记录学习之用 View view = mInflater.inflate(R.layout.layout_popupwindow, null); PopUpwindowLayout popUpwind ...

  5. Android自定义滑动显示隐藏布局

    方式一:上下左右滑动显示隐藏布局 总结代码地址: http://git.oschina.net/anan9303/customView参考例子: http://www.jianshu.com/p/fc ...

  6. Android自定义View (二) 进阶

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/24300125 继续自定义View之旅,前面已经介绍过一个自定义View的基础的例 ...

  7. Android自定义View

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/24252901 很多的Android入门程序猿来说对于Android自定义View ...

  8. Android 自定义View (二) 进阶

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/24300125 继续自定义View之旅,前面已经介绍过一个自定义View的基础的例 ...

  9. Android 自定义 ListView 上下拉动“刷新最新”和“加载更多”歌曲列表

    本文内容 环境 测试数据 项目结构 演示 参考资料 本文演示,上拉刷新最新的歌曲列表,和下拉加载更多的歌曲列表.所谓"刷新最新"和"加载更多"是指日期.演示代码 ...

随机推荐

  1. php版的redis操作库predis操作大全

    转载于:http://www.itxuexiwang.com/a/shujukujishu/redis/2016/0216/146.html predis是php连接redis的操作库,由于它完全使用 ...

  2. Redis学习笔记~Redis主从服务器,读写分离

    回到目录 Redis这个Nosql的存储系统一般会被部署到linux系统中,我们可以把它当成是一个数据服务器,对于并发理大时,我们会使用多台服务器充当Redis服务器,这时,各个Redis之间也是分布 ...

  3. JS中的宽高(基础知识很重要)

    IE中:document.body.clientWidth ==> BODY对象宽度document.body.clientHeight ==> BODY对象高度document.docu ...

  4. Android开发学习之路-SimpleAdapter源码分析学习

    今天在课堂上,老师用到了SimpleAdapter,然后女神在边上问我为什么这个SimpleAdapter不能做到我app那种带有进度条的效果,言语说不清,然后就开始看源代码,发现这个Adapter的 ...

  5. Atitit.java图片图像处理attilax总结

    Atitit.java图片图像处理attilax总结 BufferedImage extends java.awt.Image 获取图像像素点 image.getRGB(i, lineIndex); ...

  6. 使用XSD校验Mybatis的SqlMapper配置文件(2)

    编写好XSD文件,然后来看怎么使用XSD文件校验,并解析SqlMapper文件,也就是实现doParseSqlMapperResourceWithSchema()方法. 为了实现这个功能,有两个基本要 ...

  7. Netty学习五:Buffers

    1. Netty中的缓冲 在Netty中并没有使用Java自带的ByteBuffer,而是自己实现提供了一个缓存区来用于标识一个字节序列,并帮助用户操作原始字节或者自定义的POJO. Java NIO ...

  8. CCNA网络工程师学习进程(2)基本的网络设备

      在组网技术中用到的设备有中继器(Repeater).集线器(Hub).网桥(Bridge).交换机(Switch).路由器(Router).分别工作在OSI参考模型中的物理层.数据链路层和网络层. ...

  9. SSIS的DelayValidation属性

    一,DelayValidation Property true if validation of the package is delayed until run time. false if the ...

  10. WebForms UnobtrusiveValidationMode 需要“jquery”ScriptResourceMapping。请添加一个名为 jquery (区分大小写)的 ScriptResourceMapping。

    WebForms UnobtrusiveValidationMode 需要“jquery”ScriptResourceMapping.请添加一个名为 jquery (区分大小写)的 ScriptRes ...