31

私のアプリでは、XML で定義された縦の点線を使用しています。

<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromDegrees="90"
    android:toDegrees="90">
<shape

    android:shape="line">
    <stroke

        android:width="1dp"
        android:color="@color/light_gray"
        android:dashWidth="2dp"
        android:dashGap="4dp"
        />
</shape>

Android Studio でレイアウトをいじっていると、線は適切に点線でレンダリングされますが、実際のデバイスでアプリを実行すると問題が発生します。線は隙間なくしっかりしています.どこに問題があるのか​​ わかりますか? 最新の 4.3 Android を実行するデバイスを含め、さまざまなデバイスを試してみました。どこでも同じように見えます:/

4

3 に答える 3

74

これはおそらくハードウェア アクセラレーションに関連している可能性があります。破線は GL モードではサポートされていません。

ここに文書化されています: https://code.google.com/p/android/issues/detail?id=29944

次のように、AndroidManifest.xml で HW アクセラレーションをオフにします。

android:hardwareAccelerated="false"

また:

myView.setLayerType(View.LAYER_TYPE_SOFTWARE, null) 

最初のソリューションの使用方法の詳細については、http: //developer.android.com/guide/topics/graphics/hardware-accel.htmlを参照してください。

于 2013-09-21T10:52:31.760 に答える
24

ハードウェア アクセラレーションの制御

次のレベルでハードウェア アクセラレーションを制御できます。

  • 応用

  • アクティビティ

  • 意見

アプリケーション レベル

<application android:hardwareAccelerated="true" ...>

活動レベル

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

ウィンドウレベル

getWindow().setFlags(
    WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED,
    WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);

ビューレベル

myView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);

参照

于 2014-10-10T09:32:17.397 に答える
15

私は同じ解決策を見つけましたが、View attributes (xml):

        <View
        android:layout_width="wrap_content"
        android:layout_height="4dp"
        ...
        android:layerType="software"/>

上記のようにビューレベルだと思います。属性の他のバリアント (「なし」、そしてもちろん「ハードウェア」) は機能しませんでした。

于 2018-10-23T20:33:20.703 に答える