【问题标题】:How to add animation to the linear layout?如何在线性布局中添加动画?
【发布时间】:2011-05-20 09:33:16
【问题描述】:

我正在使用线性布局从 .net 服务器获取带有图像的消息。

当新消息到来时,布局的位置会增加,新消息会被一一添加到布局的顶部。

问题是当新消息到来时,新消息突然添加到布局中。

我想将动画应用到布局中,并让我的应用程序就像当新消息出现时,消息会慢慢添加到布局中。表示之前的消息缓慢下移,新消息添加到布局顶部。

【问题讨论】:

    标签: android android-linearlayout


    【解决方案1】:

    在应保存数据的 LinearLayout 上使用 android:animateLayoutChanges。这将在添加新内容时触发动画。它首先将旧数据向下移动,为更多内容腾出空间。然后进行第二步,新数据将淡入空闲空间。

    示例代码

    ma​​in.xml

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/baseLL"
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
    >
    
        <!-- button used to add data -->
        <Button
            android:layout_width="192dip"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:text="Add Content"
            android:onClick="onAddContentClick" />
    
        <!-- button used to remove data -->
        <Button
            android:layout_width="192dip"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:text="Remove Content"
            android:onClick="onRemoveContentClick" />
    
        <!-- data will be added to this LinearLayout at run time -->
        <LinearLayout
            android:id="@+id/dataLL"
            android:orientation="vertical"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:animateLayoutChanges="true"
        >
    
        </LinearLayout>
    
    </LinearLayout>
    

    basicanimation.java

    package com.test.animation.basic;
    
    import android.app.Activity;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.LinearLayout;
    import android.widget.LinearLayout.LayoutParams;
    import android.widget.TextView;
    
    public class BasicAnimationActivity extends Activity {
    
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
        }
    
        public void onAddContentClick(View v) {
            LinearLayout dataLL = (LinearLayout) findViewById(R.id.dataLL);
            int dataCount = dataLL.getChildCount();
            TextView newDataTV = generateData(dataCount);
            dataLL.addView(newDataTV, 0);
        }
    
        public void onRemoveContentClick(View v) {
            LinearLayout dataLL = (LinearLayout) findViewById(R.id.dataLL);
            if (dataLL.getChildCount() > 0) {
                dataLL.removeViewAt(0);
            }
        }
    
        private TextView generateData(int dataCount) {
            TextView TV = new TextView(this);
            TV.setText("Data " + dataCount);
            TV.setLayoutParams(new LayoutParams(android.view.ViewGroup.LayoutParams.FILL_PARENT,
                    android.view.ViewGroup.LayoutParams.WRAP_CONTENT));
            return TV;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-24
      • 1970-01-01
      • 1970-01-01
      • 2017-09-25
      相关资源
      最近更新 更多