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);
    }

}

来自:安卓教程网

上一篇:使用ROW_NUMBER进行的快速分页


下一篇:maven, sesame, openrdf, eclipse 的初始学习