13

Ich versuche, eine diagonale Linie in einer Android-App mit dem XML zu zeichnen, aber es funktioniert nicht. Es zeichnet einfach eine horizontale Linie.Wie rotieren Linie in Android XML?

main.xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context=".TestActivity" > 

    <RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentTop="true" 
     style="@style/diagonalStyle"> 
    </RelativeLayout> 

</RelativeLayout> 

styles.xml:

<resources xmlns:android="http://schemas.android.com/apk/res/android"> 

    <style name="diagonalStyle"> 
     <item name="android:background">@drawable/background</item> 
    </style> 

</resources> 

background.xml:

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" > 

    <item> 
     <rotate 
      android:fromDegrees="0" 
      android:toDegrees="45" 
      android:pivotX="50%" 
      android:pivotY="50%" > 
      <shape 
       android:shape="line" 
       android:top="1dip" > 
       <stroke 
        android:width="1dip" 
        android:color="#FF0000" /> 
      </shape> 
     </rotate> 
    </item> 

</layer-list> 

Antwort

31

Sie wirklich o Nötig nur eine Nummer ändern, um es zur Arbeit zu bringen. Ändern Sie einfach die fromDegrees bis 45:

<item> 
    <rotate 
      android:fromDegrees="45" 
      android:toDegrees="45" 
      android:pivotX="50%" 
      android:pivotY="50%" > 
     <shape 
       android:shape="line" 
       android:top="1dip" > 
      <stroke 
        android:width="1dip" 
        android:color="#FF0000" /> 
     </shape> 
    </rotate> 
</item> 

Die Dreh ziehbar http://developer.android.com/reference/android/graphics/drawable/RotateDrawable.html

tatsächlich verwendet den Property-Animationsformat http://developer.android.com/guide/topics/resources/animation-resource.html

Während Sie eine nicht-Animieren diagonale Linie machen, Sie wollen aus starten bei 45 Grad und am Ende bei 45 Grad auch. Also ist es normal, beide auf 45 zu setzen.

+0

Danke, ich dachte, die fromDegrees bedeutete bei Punkt 0 und toDegrees war für Punkt "n". Ich wusste nicht, dass es sich auf Animation bezieht. –

+0

Es ist nicht intuitiv. Ich bin froh, dass ich helfen kann. – HalR

+1

Hallo ich wollte das selbe und das wird es wie 'android wiederholen: tileMode =" repeat "' es ist möglich? –

0

Sie können dies versuchen: ein Layout "divider.xml" Create

<?xml version="1.0" encoding="utf-8"?> 
<View android:layout_width="match_parent" 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_height="@dimen/one_dp" 
    android:layout_weight=".1" 
    android:background="@drawable/transparent_divider" 
    android:padding="5dp" 
    android:rotation="180"/> 

erstellen ziehbar Form "transparent_divider.xml":

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle"> 
    <size android:height="1dp" /> 
    <solid android:color="#808080" /> 
</shape>