欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

自定义控件中创建对象

程序员文章站 2022-06-08 14:54:14
...

Lint警告:Avoid object allocations during draw/layout operations (preallocate and reuse instead)

不要在自定义View的onMeasure、onLayout、onDraw等方法里面做new对象的操作。

因为实例化对象是会耗性能的,而这几个方法会被多次调用,所以需要将对象作为属性,在初始化的时候就实例化好对象,在这些方法里面直接用就行了!

1.若一些参数必须在onMeasure/onLayout/onDraw中获取,则可以先在构造函数中创建对象,在onMeasure/onLayout/onDraw中赋值:

private void init(){  //在构造函数中进行初始化    
    // 获取屏幕大小:通过Resources获取
    DisplayMetrics dm2 = getResources().getDisplayMetrics();
    mBitmap = Bitmap.createBitmap(dm2.widthPixels, dm2.heightPixels, Bitmap.Config.RGB_565);//ARGB_8888
}
public void onLayout(){//在onLayout方法中赋值:
	screenW = fX = getWidth();
	screenH = fY = getHeight();
	mBitmap.setHeight((int) screenH);
	mBitmap.setWidth((int) screenW);
}

  ps:

    1). Android 获取屏幕大小以及尺寸

    2). getWindowManager()是Activity的方法

2.把只能调用一次的代码使用个布尔内置变量进行判断,让其只调用一次。

相关标签: 自定义控件