在HorizontalScrollView里添加自定义View的效率问题

来源:互联网 发布:读图知天下 编辑:程序博客网 时间:2024/06/05 09:56

一开始添加VIew.画5千个正方形.在HorizontalScrollView里面拖动非常的不流畅.


解决方法.


1,开辟一个新的Bitmap.

2,开辟一个新的canvas往Bitmap里面画东西.

3.最后在onDraw里面重新使用这个画好的Bitmap.


结果5000个正方形的拖动非常流畅


代码留给来看的人

public class StaffView extends View {private drawInterface drawGraphics;private Bitmap bmp;private Canvas c;private Paint myPaint = new Paint();//新建一个笔触private Matrix m = new Matrix();          public StaffView(Context context) {super(context);bmp = Bitmap.createBitmap(10000, 500, Config.ARGB_8888);c = new Canvas(bmp);//在用C在bmp上面画东西c.save();drawGraphics = new DrawStaff();for (int j = 0, i = 0; j < 15; j++) {for (i = 0; i < 1000; i++) {// 横向画1000c.translate(51, 0);drawGraphics.draw(c);}c.translate(-i*51, 51);}c.restore();myPaint.setColor(Color.RED);//myPaint.setAntiAlias(true);}public void onDraw(Canvas canvas) {super.onDraw(canvas);canvas.drawBitmap(bmp, m, myPaint);}/* * 重写这里可以设置View的大小,使拖动条产生作用 *  *  * @1、什么时候调用onMeasure方法? * 当控件的父元素正要放置该控件时调用.父元素会问子控件一个问题,“你想要用多大地方啊?”,然后传入两个参数 * ——widthMeasureSpec和heightMeasureSpec. 这两个参数指明控件可获得的空间以及关于这个空间描述的元数据. * 更好的方法是你传递View的高度和宽度到setMeasuredDimension方法里,这样可以直接告诉父控件,需要多大地方放置子控件. *  * * */@Overrideprotected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {// TODO Auto-generated method stubsuper.onMeasure(widthMeasureSpec, heightMeasureSpec);setMeasuredDimension(15000, 500);}}


原创粉丝点击