1. 程式人生 > >canvas.drawPath 沒起作用

canvas.drawPath 沒起作用

前兩天遇見一個問題,在很多測試機都試過,低版本的話會出現這個方法不起作用。但是在高版本的機型上不存在問題的。

  mPath.reset();
        dstPath.reset();
        mPath.moveTo(viewProgress.getLeft(), viewProgress.getBottom() - viewProgress.getMeasuredHeight() / 2);
        mPath.lineTo(viewProgress.getRight(), viewProgress.getBottom() - viewProgress.getMeasuredHeight
() / 2); mPathMeasure = new PathMeasure(mPath, true); // pathLeft = dpTpPx(15)+pathLeft; // pathRight = pathRight - dpTpPx(15); mPathMeasure.getSegment(dpTpPx(15) - 5 + pathLeft, pathRight + 5 - dpTpPx(15), dstPath, true); // Log.d("sss","呼叫"+segment); dstPath.rLineTo
(0, 0); canvas.drawPath(dstPath, mPaint);

如果在安卓4.4或者之前的版本,開啟硬體加速的情況下,更改dstpath 的內容後可能繪製會出現問題。
這裡我就遇到問題經查閱資料後給出解決方案:
1,關閉當前介面的硬體加速

Application

<application 
    android:hardwareAccelerated="false" 
...>
</application>

Activity

<application 
    android:hardwareAccelerated="true"
> <activity ... /> <activity android:hardwareAccelerated="false" /> </application> Window getWindow().setFlags( WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED, WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED); View myView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
2,或者給dstpath.rLineTo(0, 0);

好了,重在解決問題希望幫到你!