Android自定义surfaceView显示多张图片
我自定义了一个surfaceview,我在上面绘制多张图片,让它能够上下方滚显示图片,但是onMeasure()方法在重写的时候遇到了问题,不知道如何设置它的高度,
public class MySurfaceView extends SurfaceView implements Callback{
        private SurfaceHolder sfh;
        private Paint paint;
        public MySurfaceView(Context context) {
                super(context);
                init(context);
        }
        private void init(Context context) {
                sfh=this.getHolder();
                sfh.addCallback(this);
                paint=new Paint();
                paint.setColor(Color.WHITE);
        }
        public MySurfaceView(Context context, AttributeSet attrs, int defStyle) {
                super(context,attrs,defStyle);
                init(context);
        }
        public MySurfaceView(Context context, AttributeSet attrs) {
                super(context,attrs);
                init(context);
        }
        @Override
        public void surfaceChanged(SurfaceHolder holder, int format, int width,int height) {
        }
        @Override
        public void surfaceCreated(SurfaceHolder holder) {
                myDraw();
        }
        private void myDraw() {
                Canvas canvas=sfh.lockCanvas();
                canvas.drawRect(0, 0, this.getWidth(), this.getHeight(), new Paint());
                Bitmap bmp=readBitmap(getResources(), R.drawable.pic0);
                Matrix matrix=new Matrix();
                matrix.setScale(0.15f, 0.15f);
                matrix.postTranslate(100, 0);
                canvas.drawBitmap(bmp, matrix, paint);
                matrix.postTranslate(0, 450);
                bmp=readBitmap(getResources(), R.drawable.pic2);
                canvas.drawBitmap(bmp, matrix, paint);
                matrix.postTranslate(0, 500);
                bmp=readBitmap(getResources(), R.drawable.pic5);
                canvas.drawBitmap(bmp, matrix, paint);
                matrix.postTranslate(0, 550);
                bmp=readBitmap(getResources(), R.drawable.pic7);
                canvas.drawBitmap(bmp, matrix, paint);
                sfh.unlockCanvasAndPost(canvas);
                if(bmp!=null)
                bmp.recycle();
        }
        @Override
        public void surfaceDestroyed(SurfaceHolder holder) {
        }
        @Override
        public boolean onTouchEvent(MotionEvent event) {
                return super.onTouchEvent(event);
        }
    @Override
        protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
                // TODO Auto-generated method stub
                super.onMeasure(widthMeasureSpec, heightMeasureSpec);
                setMeasuredDimension(800, 2000);//2:5   2000 5000   1600 4000  2:5
        }
    public static Bitmap readBitmap(Resources r, int resId) {
        BitmapFactory.Options opt = new BitmapFactory.Options();
        opt.inPreferredConfig = Bitmap.Config.RGB_565;
        opt.inPurgeable = true;
        opt.inInputShareable = true;
        InputStream is = r.openRawResource(resId);
        return BitmapFactory.decodeStream(is, null, opt);
    }
}
来自:安卓教程网
Android自定义surfaceView显示多张图片的更多相关文章
- android 自定义Toast显示风格
		
1.创建一个自己想要显示Toast风格的XML如下代码(toast_xml.xml): <?xml version="1.0" encoding="utf-8&qu ...
 - 天气渐热,来片雪花降降温——Android自定义SurfaceView实现雪花效果
		
实现雪花的效果其实也可以通过自定义View的方式来实现的(SurfaceView也是继承自View的),而且操作上也相对简单一些,当然也有一些不足啦... 相对于View,SurfaceView有如下 ...
 - Android 自定义 ListView 显示网络上 JSON 格式歌曲列表
		
本文内容 环境 项目结构 演示自定义 ListView 显示网络上 JSON 歌曲列表 参考资料 本文最开始看的是一个国人翻译的文章,没有源代码可下载,根据文中提供的代码片段,自己新建的项目(比较可恶 ...
 - Android自定义PopupWindow显示在控件上方或者下方
		
记录学习之用 View view = mInflater.inflate(R.layout.layout_popupwindow, null); PopUpwindowLayout popUpwind ...
 - Android自定义滑动显示隐藏布局
		
方式一:上下左右滑动显示隐藏布局 总结代码地址: http://git.oschina.net/anan9303/customView参考例子: http://www.jianshu.com/p/fc ...
 - Android自定义View (二) 进阶
		
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/24300125 继续自定义View之旅,前面已经介绍过一个自定义View的基础的例 ...
 - Android自定义View
		
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/24252901 很多的Android入门程序猿来说对于Android自定义View ...
 - Android 自定义View (二) 进阶
		
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/24300125 继续自定义View之旅,前面已经介绍过一个自定义View的基础的例 ...
 - Android 自定义 ListView 上下拉动“刷新最新”和“加载更多”歌曲列表
		
本文内容 环境 测试数据 项目结构 演示 参考资料 本文演示,上拉刷新最新的歌曲列表,和下拉加载更多的歌曲列表.所谓"刷新最新"和"加载更多"是指日期.演示代码 ...
 
随机推荐
- ios UIView autoresizingSubview 属性
			
自动尺寸调整行为 当您改变视图的边框矩形时,其内嵌子视图的位置和尺寸往往也需要改变,以适应原始视图的新尺寸.如果视图的autoresizesSubviews属性声明被设置为YES,则其子视图会根据au ...
 - JS动态设置css的几种方式
			
1. 直接设置style的属性 某些情况用这个设置 !important值无效 如果属性有'-'号,就写成驼峰的形式(如textAlign) 如果想保留 - 号,就中括号的形式 element. ...
 - python多线程网络编程
			
背景 使用过flask框架后,我对request这个全局实例非常感兴趣.它在客户端发起请求后会保存着所有的客户端数据,例如用户上传的表单或者文件等.那么在很多客户端发起请求时,服务器是怎么去区分不同的 ...
 - Atitit 多继承实现解决方案 java c#
			
Atitit 多继承实现解决方案 java c# Java c#都没有提供多继承的解决方案..默认从语言级别以及没办法多继承了. 只可以崽类库的级别实现拉.. 继承的原理就是,使用一个内部super指 ...
 - SlickUpload Upload to disk
			
The file upload stream provider is a built-in SlickUpload provider that uses the filesystem for uplo ...
 - TSQL 去除重复值
			
数据去重主要分为两种情况:第一种是保证Select的全部列无重复:第二种是select的部分字段无重复,而其他字段取特定值. 1,对select的全部字段去重,直接使用distinct 函数 2,对s ...
 - Windows 系统下Git安装图解
			
简单来说Git是一个免费的.开源的版本控制软件,从功能上讲,跟我们比较熟悉的Subversion(SVN)这类版本控制软件没什么两样.由于工作的需求,需要在WinXP下安装git配合团队完成相应的工作 ...
 - 【原创】.NET读写Excel工具Spire.Xls使用(5)重量级的Excel图表功能
			
本博客所有文章分类的总目录:http://www.cnblogs.com/asxinyu/p/4288836.html .NET读写Excel工具Spire.Xls使用文章 ...
 - spring 源码分析之BeanPostProcessor
			
1.官方解答: Factory hook that allows for custom modification of new bean instances, e.g. checking for ma ...
 - [转载]TFS测试管理
			
微软2010年发布的Visual Studio 2010或Visual Studio Test Professional 2010包含一个称为 Microsoft 测试管理器的新应用程序,用于帮助您使 ...