黑马程序员技术交流社区
标题:
Android自定义surfaceView显示多张图片
[打印本页]
作者:
y1787257661
时间:
2015-1-5 10:43
标题:
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);
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2