关闭

android动画中位置Animation.ABSOLUTE,Animation.RELATIVE_TO_SELF,Animation.RELATIVE_TO_PARENT区别

1562人阅读 评论(0) 收藏 举报
分类:

主文件的布局如下:

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

    <LinearLayout
        android:background="#ff0000"
        android:layout_width="match_parent"
        android:layout_height="300dp" >

        <Button
            android:id="@+id/btn"
            android:background="#999999"
            android:layout_width="wrap_content"
            android:layout_height="20dp"
            android:textSize="8sp"
            android:layout_marginTop="30dp"
            android:layout_marginLeft="30dp"
            android:text="btn" >
        </Button>
    </LinearLayout>

</RelativeLayout>





(1)100%,表示相对自己的位置的一倍,坐标原点为自己的左上角

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

    <translate
        android:duration="300"
        android:fromYDelta="0"
        android:toYDelta="100%" />

</set>




(2)100,坐标原点为自己的左上角,移动100px

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

    <translate
        android:duration="300"
        android:fromYDelta="0"
        android:toYDelta="100" />

</set>



(2)80%p,父坐标的80%,坐标原点为自己的左上角

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

    <translate
        android:duration="300"
        android:fromYDelta="0"
        android:toYDelta="80%p" />

</set>



(4)由于这三种位置的坐标原点都是View自己的左上角,所以0、0%、0%p都是一样的。

注意以下几点:a、坐标原点都是View的左上角开始计算;

    b、不要认为只有写成了android:toYDelta="100%p"才会从ParentView不显示,下面的例子计算一下,

  parent view 高:300dp、View 20dp,margin Top 30dp。想要实现view到parent的底部。

  300 - 30 - 20的距离就是从原始位置到parentview底部的距离,那么换算一下,250 / 300 *100%约等于 83.3%。

  也就是大于此值就已经超过view已经开始超出parentview范围了。

                                    c、还有就是当超出了parentview的时候,是不会在parentview的父view显示的。

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

    <translate
        android:duration="300"
        android:fromYDelta="0%p"
        android:toYDelta="83%p" />

</set>



总结:(1)坐标原点;

    (2)%p是如何计算的。

0
1

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:666683次
    • 积分:10316
    • 等级:
    • 排名:第1739名
    • 原创:313篇
    • 转载:765篇
    • 译文:1篇
    • 评论:48条