2013-09-21 14 views
19

w mojej aplikacji używam zdefiniowanej przez XML pionowej linii przerywanej.Linia przerywana w rzeczywistości nie jest przerywana, gdy aplikacja działa na prawdziwym urządzeniu z systemem Android

<?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> 

Kiedy jestem nitpicking mój układ w Android Studio, linia przerywana jest wyświetlany prawidłowo, tak jak powinno, ale problem jest, gdy uruchomić aplikację na rzeczywistym urządzeniu. Linia jest po prostu solidna, bez przerw. Czy wiesz, gdzie może być problem? Próbowałem wielu różnych urządzeń, w tym tych z najnowszym systemem Android 4.3. Wyglądam wszędzie tak samo:/

+0

Nie potrzebne do kontrolowania akcelerację sprzętową [Pozwoli to rozwiązać problem z linią przerywaną] (http://stackoverflow.com/questions/24536617/android- l-nie można rysować-przerywana-linia-jak-rysować-tło) –

Odpowiedz

45

Jest to najprawdopodobniej związane z akceleracją sprzętową: Linie przerywane nie są obsługiwane w trybie GL.

Jego udokumentowane tutaj: https://code.google.com/p/android/issues/detail?id=29944

Wyłącz HW-przyspieszenia w swoim AndroidManifest.xml tak:

android:hardwareAccelerated="false" 

czyli

myView.setLayerType(View.LAYER_TYPE_SOFTWARE, null) 

Aby uzyskać więcej informacji jak używać pierwsze rozwiązanie: http://developer.android.com/guide/topics/graphics/hardware-accel.html

+1

Jesteś czarodziejem ..A może jesteś lepszy od Google? Dzięki – simekadam

+1

natknęliśmy się na ten sam problem - miesiące temu;) – stoefln

+0

Nie działa ... :( – MohsinSyd

15

Sterowanie Przyspieszanie sprzętowe

Można kontrolować sprzętowej akceleracji na następujących poziomach:

  • Application

  • aktywny

  • Okno

  • Zobacz

poziom Zastosowanie

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

poziom aktywności

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

poziom Okno

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

View poziom

myView.setLayerType(View.LAYER_TYPE_SOFTWARE, null); 

Reference

Powiązane problemy