自定义了一个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);
- }
-
- }
复制代码 |
|