使用位图着色器在画布上绘制圆形时的致命信号11

时间:2014-09-06 15:43:23

标签: android

我正在尝试使用存储在手机上的图像圈来绘制网格视图。相近 enter image description here

但我不想使用实体/渐变颜色来使用图像。相关代码是

查看绘制的内容     

<ImageView
    android:id="@+id/img_color_selected"
    android:layout_width="35dp"
    android:layout_height="35dp"
    android:src="@drawable/ic_colorpicker_swatch_selected"
    android:layout_centerInParent="true"
    android:visibility="gone" />

在画布上绘图

   @Override
    public void draw(Canvas canvas) {
        Bitmap bitmap = BitmapFactory.decodeResource(RaiseTheBarApplication.getInstance().getResources(), patternResource);
        BitmapShader shader = new BitmapShader(bitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP);
        Paint paint = new Paint();
        paint.setColorFilter(new LightingColorFilter(progressColor, 1));
        paint.setShader(shader);
        canvas.drawCircle(canvas.getWidth() / 2, canvas.getHeight() / 2, RaiseTheBarApplication.getInstance().getResources().getDimensionPixelSize(R.dimen.choose_color_radius), paint);
    }

choose_color_radius是20dp

的GridView

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/rtb_dialog"
android:orientation="vertical">

<GridView
    android:id="@+id/gv_color_choice"
    android:layout_width="wrap_content"
    android:layout_height="250dp"
    android:columnWidth="65dp"
    android:numColumns="auto_fit"/>

<com.lvl.xpbar.views.baseviews.AFGTextView
    android:id="@+id/submit"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:paddingTop="20dp"
    android:text="@string/button_submit"
    android:textSize="18dp"
    android:gravity="center_horizontal"
    android:background="@drawable/dialog_submit_background_selector"
    android:paddingBottom="20dp"
    android:layout_marginTop="5dp" />

如果我使用Canvas#drawBitmap它工作正常但我使用上面的逻辑我得到了

09-06 11:34:06.702 31659-31659 /? A / libc:致命信号11(SIGSEGV)位于0x797ba000(代码= 2),线程31659(com.lvl.xpbar)

感谢任何帮助

1 个答案:

答案 0 :(得分:1)

感谢@ greywolf82,我通过使用

禁用此视图的硬件加速解决了这个问题

setLayerType(LAYER_TYPE_SOFTWARE,null);