当前位置: 首页 > 知识库问答 >
问题:

如何在android中获得动画?

越健
2023-03-14

实际上,我有一个线性布局,它是匹配父项(在宽度高度),现在我需要创建另一个布局(在该线性布局的下方),一开始必须不可见。

当我的活动运行时,我想对隐藏的布局进行动画处理。

隐藏的布局必须自下而上。我不知道如何实现这个动画??我不知道如何创建一个最初不可见的布局,经过一段时间的延迟后,它必须从屏幕下方显示并从侧面显示???

这是我的xml文件代码

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

<LinearLayout
    android:id="@+id/imageupLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center"
        android:orientation="vertical" >

        <ImageView
            android:id="@+id/imgview"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:background="@drawable/logo" />
    </LinearLayout>

    <LinearLayout
        android:id="@+id/hided_layout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom"
        android:background="#56a24b"
        android:orientation="vertical"
        android:visibility="visible" >

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_marginTop="15dip"
            android:background="@drawable/btn_bg"
            android:gravity="center" >

            <Button
                android:id="@+id/btn_login"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:layout_margin="2dip"
                android:background="@drawable/btn_login" />
        </LinearLayout>

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_marginTop="10dip"
            android:background="@drawable/btn_bg"
            android:gravity="center" >

            <Button
                android:id="@+id/btn_register"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:layout_margin="2dip"
                android:background="@drawable/btn_register" />
        </LinearLayout>

        <TextView
            android:id="@+id/tv_just_explore"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="20dip"
            android:layout_marginTop="20dip"
            android:gravity="center"
            android:text="JUST EXPLORE"
            android:textColor="#FFFFFF"
            android:textSize="15dip"
            android:textStyle="bold" />
    </LinearLayout>
</LinearLayout>

共有2个答案

喻子航
2023-03-14

您还没有提到要隐藏代码中的哪个布局并带来另一个布局。但我会给你一个你可以应用的通用代码。首先,对于最初要隐藏的布局,在活动中设置android:visibility=“gone”,同时在下面设置使用动画

layoutYouHideInitially.setVisibility(View.VISIBLE);
layoutYouHideInitially.animate().alpha(1).setDuration(500);
layoutYouWannaHide.setVisibility(View.GONE);
layoutYouWannaHide.animate().alpha(0).setDuration(500);

设置可见性<代码>消失或<代码>不可见取决于使用情况。对于动画制作,你也可以使用其他选项来代替alpha,比如translationXscaleX,等等。如果遇到任何问题,请发表评论。很乐意帮忙!

宰父飞翼
2023-03-14

是的,我做到了。这是我的代码,可能对其他人有帮助。。。

在我的主要活动中。

public class MainActivity extends ActionBarActivity {

 private View hiddenPanel;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    hiddenPanel = findViewById(R.id.hidden_panel);
        }

 public void slideUpDown(final View view) {
        if (!isPanelShown()) {
            // Show the panel
            Animation bottomUp = AnimationUtils.loadAnimation(this,
                    R.anim.bottom_up);

            hiddenPanel.startAnimation(bottomUp);
            hiddenPanel.setVisibility(View.VISIBLE);
        }
        else {
            // Hide the Panel
            Animation bottomDown = AnimationUtils.loadAnimation(this,
                    R.anim.bottom_down);

            hiddenPanel.startAnimation(bottomDown);
            hiddenPanel.setVisibility(View.GONE);
        }
    }

    private boolean isPanelShown() {
        return hiddenPanel.getVisibility() == View.VISIBLE;
    }

}

在我的活动中

<?xml version="1.0" encoding="utf-8"?>
<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:text="@string/hello_world" />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerInParent="true"
    android:text="@string/hello_world" />

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:onClick="slideUpDown"
    android:text="Slide up / down" />

<RelativeLayout
    android:id="@+id/hidden_panel"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@android:color/white"
    android:visibility="gone" >

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/app_name"
        android:layout_centerInParent="true"
        android:onClick="slideUpDown" />
</RelativeLayout>

把你打倒。xml

<?xml version="1.0" encoding="utf-8"?>
 <set xmlns:android="http://schemas.android.com/apk/res/android">
 <translate 
android:fromYDelta="0%p" 
android:toYDelta="100%p" 
android:fillAfter="true"
android:interpolator="@android:anim/linear_interpolator"
android:duration="500" />
</set>

bottom_up.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate 
   android:fromYDelta="75%p"
   android:toYDelta="0%p"
   android:fillAfter="true"
   android:duration="500" />
 </set>
 类似资料:
  • 我试过了 但它给了我编译时错误 无法从静态上下文引用非静态方法“get(int)”。 我从observable的调用方法调用这个方法。 我还看到了但它已被弃用。

  • 一般来说,我们可以从Gradle(在Android Studio的右侧)获取证书指纹 但在Android Studio最新更新4.2.1中,任务未显示获取SHA指纹的选项 有人能帮我吗?

  • 我是使用Kotlin开发Firebase android的初学者,我的问题是我想使用Kotlin检测特定的。我如何达到预期的结果。 我看到过使用Java的例子,但我不知道如何使用Kotlin实现它。任何帮助都是非常感谢的。下面是我在代码中写的内容: 如果电话号码已经存在,我希望用一个toast向用户显示。

  • 如何在android中使用webView获取oAuth2令牌?我知道如何创建一个webview并打开url以获取oAuth2令牌,但我不知道如何在获取后从webview切换回应用程序,并将oAuth2token复制到变量中,有人知道如何做到这一点或知道一个好的tut吗?p、 s.我正在尝试获取oAuth2令牌以访问google api

  • 例如,霍尼韦尔CT40手持设备的设置中有一个单独的部分专门介绍电池及其所有细节(使用、容量、温度、循环,甚至SN),并显示电池的整体健康状况(百分比)。是否有可能通过程序获得整体健康的百分比?对于一个新电池,它是在96-100%之间,例如一个192个循环的电池,它是90-92%。我不需要任何其他东西,只需要这个百分比,所需的许可证最少,如果已经有一个应用程序可以做到这一点,也可以是好的,但还没有找