硬件加速造成的自定义控件显示问题
我也了一个控件,功能仅仅是在这个控件里画线,但是当开启硬件加速和关闭硬件加速的时候在屏幕上的显示效果很不一样。
自定义控件的代码如下:
public class CustomView extends View {
private Paint paint;
private Path path;
public CustomView(Context context) {
this(context, null);
}
public CustomView(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public CustomView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.CustomView);
if(ta.getBoolean(R.styleable.CustomView_noHardware, false)){
setLayerType(View.LAYER_TYPE_SOFTWARE, null);
}
ta.recycle();
path = new Path();
paint = new Paint(Paint.ANTI_ALIAS_FLAG);
paint.setStrokeWidth(0.2F);
paint.setColor(Color.BLACK);
paint.setStyle(Paint.Style.STROKE);
}
@Override
protected void onDraw(Canvas canvas) {
for(int index = 0; index < canvas.getHeight(); index += 20) {
path.reset();
path.moveTo(0, index);
path.lineTo(canvas.getWidth(), index);
canvas.drawPath(path, paint);
}
}
}
我在一个界面上放了两个这个控件,但是其现实效果不一样,如下显示:
大家可以看不到上面也有一个这样的控件,但是确实是有的,只是上面是默认的(硬件加速开的),而下面则是我把硬件加速关了的效果。
如果我把笔画的宽度该成0.3,那么又会有如下效果:
为什么硬件加速会造成这样的差别呢?
写自定义控件的时候需要如何处理硬件加速呢?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
你试下用surfaceview实现