wake-up-neo.net

Wie rotiere ich eine Linie in Android XML?

Ich versuche, in einer Android-App mit XML eine diagonale Linie zu zeichnen, aber das funktioniert nicht. Es zeichnet einfach eine horizontale Linie.

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>
15
Don Rhummy

Sie brauchten wirklich nur eine Nummeränderung, um sie zu aktivieren. Ändern Sie einfach den fromDegrees in 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>

Das Drehen zeichnen http://developer.Android.com/reference/Android/graphics/drawable/RotateDrawable.html

verwendet eigentlich das Eigenschaftsanimationsformat http://developer.Android.com/guide/topics/resources/animation-resource.html

Während Sie eine nicht animierende diagonale Linie erstellen, soll sie bei 45 Grad beginnen und auch bei 45 Grad enden. Es ist also die Norm, beide auf 45 zu setzen.

39
HalR

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

<?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 Sie eine gezeichnete 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>
0
Maddy