在Android中,维度%p是什么意思?

时间:2010-12-10 18:35:38

标签: android android-layout

我一直在浏览开发者网站(http://developer.android.com/resources/samples/SoftKeyboard/res/xml/qwerty.html)上的一些Android示例,我看到%p被用作维度。

我已完成Google搜索,但无法找到有关其含义的任何信息。有谁知道吗?

3 个答案:

答案 0 :(得分:15)

查看keyWidth文档以获取解释。

  

可选的%p后缀提供大小   相对于某个父容器

答案 1 :(得分:4)

  1. 50%是动画视图的中心(相对于视图)。
  2. 50%p是视图父级的中心(相对于父级)。
  3. 50是动画视图顶部/左侧50像素(绝对值)。

答案 2 :(得分:2)

@Cheryl Simon和@zero_cool的答案是正确的。
并且我添加了演示以便于理解

enter image description here

布局代码

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    >

    <Button
        android:id="@+id/button_animate"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Animate"
        />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="// A gray view with 400dp height"
        android:layout_marginTop="20dp"
        />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="200dp"
        android:background="#aaa"
        android:orientation="horizontal"
        >

        <TextView
            android:layout_width="60dp"
            android:layout_height="50dp"
            android:background="#f00"
            android:text="50dp height View"
            android:layout_marginStart="10dp"
            />

        <TextView
            android:id="@+id/image_1"
            android:layout_width="60dp"
            android:layout_height="50dp"
            android:layout_marginStart="20dp"
            android:background="#f00"
            android:src="@mipmap/ic_launcher"
            android:text="animate with %"
            />

        <TextView
            android:id="@+id/image_2"
            android:layout_width="60dp"
            android:layout_height="50dp"
            android:layout_marginStart="20dp"
            android:background="#f00"
            android:text="animate with %p"
            />

    </LinearLayout>
</LinearLayout>

动画文件
slide_in.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
        android:duration="5000"
        android:fromYDelta="25%"
        android:toYDelta="0"/>
</set>

slide_in_with_p.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
        android:duration="5000"
        android:fromYDelta="25%p"
        android:toYDelta="0"/>
</set>

活动代码

button_animate.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Animation slide = AnimationUtils.loadAnimation(MainActivity.this, R.anim.slide_in);
        Animation slideWithP = AnimationUtils.loadAnimation(MainActivity.this, R.anim.slide_in_with_p);

        viewAnimateWithPercent.startAnimation(slide);
        viewAnimateWithPercentP.startAnimation(slideWithP);
    }
});

DEMO