【Android bug】GLES20Canvas

博客内容涉及到一个Android应用的bug,具体表现为在Android 5.1系统上正常运行,但在4.4系统中出现错误。问题源于GLES20Canvas的使用,报错日志显示需要对特定XML配置进行修改以解决兼容性问题。
摘要由CSDN通过智能技术生成

一个5.1运行没问题,而4.4运行报错的bug

报错日志如下:

 Process: com.dzq.lxq.manager.debug, PID: 1454
 java.lang.NullPointerException
	 at android.view.GLES20Canvas.setupModifiers(GLES20Canvas.java:1439)
	 at android.view.GLES20Canvas.drawLines(GLES20Canvas.java:1019)
	 at android.view.GLES20Canvas.drawLine(GLES20Canvas.java:1009)
	 at android.graphics.drawable.GradientDrawable.draw(GradientDrawable.java:538)
	 at android.widget.LinearLayout.drawVerticalDivider(LinearLayout.java:396)
	 at android.widget.LinearLayout.drawDividersHorizontal(LinearLayout.java:361)
	 at android.widget.LinearLayout.onDraw(LinearLayout.java:315)
	 at android.view.View.draw(View.java:14465)
	 at android.view.View.getDisplayList(View.java:13362)
	 at android.view.View.getDisplayList(View.java:13404)
	 at android.view.View.draw(View.java:14182)
	 at android.view.ViewGroup.drawChild(ViewGroup.java:3103)
	 at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2940)
	 at android.view.View.getDisplayList(View.java:13357)
	 at android.view.View.getDisplayList(View.java:13404)
	 at android.view.View.draw(View.java:14182)
	 at android.view.ViewGroup.drawChild(ViewGroup.java:3103)
	 at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2940)
	 at android.view.View.getDisplayList(View.java:13357)
	 at android.view.View.getDisplayList(View.java:13404)
	 at android.view.View.draw(View.java:14182)
	 at android.view.ViewGroup.drawChild(ViewGroup.java:3103)
	 at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2940)
	 at android.view.View.getDisplayList(View.java:13357)
	 at android.view.View.getDisplayList(View.java:13404)
	 at android.view.View.draw(View.java:14182)
	 at android.view.ViewGroup.drawChild(ViewGroup.java:3103)
	 at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2940)
	 at android.view.View.getDisplayList(View.java:13357)
	 at android.view.View.getDisplayList(View.java:13404)
	 at android.view.View.draw(View.java:14182)
	 at android.view.ViewGroup.drawChild(ViewGroup.java:3103)
	 at android.view.ViewGroup.dispatchDraw(ViewGroup.java:2940)
	 at android.view.View.draw(View.java:14468)
	 at android.widget.FrameLayout.draw(FrameLayout.java:472)
	 at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:2326)
	 at android.view.View.getDisplayList(View.java:13362)
	 at android.view.View.getDisplayList(View.java:13404)
	 at android.view.HardwareRenderer$GlRenderer.buildDisplayList(HardwareRenderer.java:1570)
	 at android.view.HardwareRenderer$GlRenderer.draw(HardwareRenderer.java:1449)
	 at android.view.ViewRootImpl.draw(ViewRootImpl.java:2377)
	 at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2249)
	 at android.view.ViewRootImpl.performTraversals(ViewRootImpl.j
gles20.glviewport是OpenGL ES 2.0中的一个函数,其作用是设置视口的位置和大小。视口指的是我们看到的屏幕范围,也就是我们在屏幕上看到的画面部分。OpenGL ES 2.0中默认的视口大小是和屏幕大小相同的,但我们可以使用这个函数来改变它的大小或者位置。 使用这个函数需要传递4个参数,它们分别是起点x、起点y、宽度和高度。这些参数的单位是像素,且所有的屏幕坐标都是以左下角为原点。我们可以通过改变这些参数来设置视口的大小和位置。比如说,如果我们想让视口在屏幕的中心,我们可以将起点x设为屏幕宽度的一半,起点y设为屏幕高度的一半,宽度和高度则根据需要来进行调整。 在OpenGL ES 2.0中,视口大小和位置的变化会影响到我们所绘制的图形的显示。如果我们不修改视口,那么OpenGL ES 2.0会默认将视口设置成与屏幕大小相同的大小,并在从投影空间向屏幕空间转换的时候,对顶点坐标进行缩放和映射,以便让它们显示在正确的位置。而如果我们修改了视口的大小和位置,OpenGL ES 2.0则会根据新的设置对顶点坐标进行缩放和映射,以便让它们在新的视口中正确地显示。 总的来说,gles20.glviewport是OpenGL ES 2.0中一个非常重要的函数,它可以让我们根据需要对视口进行设置,以便让我们的绘制内容正确地显示在屏幕上。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

leafseelight

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值