Android - 文字向上翻滚效果的实现

本文转载https://xwc2013.iteye.com/blog/1976051

 

今天看到了一种文字翻滚的效果,感觉非常实用。所以就自己试着做出了这种效果,现在把它分享给大家! 

首先在res目录下新建anim文件夹,再在其中分别新建push_up_in.xml和push_up_out.xml 两个文件,具体如下: 

push_up_in.xml  文字进入的效果 时长设置为0.5秒 

<?xml version="1.0" encoding="utf-8"?> 
  <set xmlns:android="http://schemas.android.com/apk/res/android"> 
      <translate android:fromYDelta="100%p" android:toYDelta="0" android:duration="500"/> 
      <alpha android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="500" /> 
  </set> 

push_up_out.xml  文字淡出的效果 设置动画时长 duration 

<?xml version="1.0" encoding="utf-8"?> 
  <set xmlns:android="http://schemas.android.com/apk/res/android"> 
      <translate android:fromYDelta="0" android:toYDelta="-100%p" android:duration="500"/> 
   <alpha android:fromAlpha="1.0" android:toAlpha="0.0" android:duration="500" /> 
  </set> 

如果要实现 文字的不停的向上翻滚的效果,那么这时我们可以使用使用到ViewFlipper,用它把我们希望显示的内容包裹起来。具体实现代码如下: 

  main.xml 

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

      <TextView 
          android:layout_width="fill_parent" 
          android:layout_height="wrap_content" 
          android:text="@string/hello" /> 
    
      <ViewFlipper 
          android:id="@+id/viewfli" 
          android:layout_width="match_parent" 
          android:layout_height="wrap_content" 
          android:background="#ffffff"> 
      </ViewFlipper> 

  </LinearLayout> 

 

TextViewAmonActivity.java 

package com.taoblog; 

  import java.util.ArrayList; 
  import java.util.List; 

  import android.app.Activity; 
  import android.os.Bundle; 
  import android.widget.TextView; 
  import android.widget.ViewFlipper; 

  /** 
  * @Description:TODO 实现文字的上下翻滚的效果 
  */ 

  public class TextViewAmonActivity extends Activity { 
      private ViewFlipper viewfli; 
      @Override 
      public void onCreate(Bundle savedInstanceState) { 
          super.onCreate(savedInstanceState); 
          setContentView(R.layout.main); 
        
          init(); 
        
      } 
    
      /** 
       * @Description: 对UI进行初始化操作 
       */ 
     private void init() 
     { 
        viewfli = (ViewFlipper) super.findViewById(R.id.viewfli); 
        
        // 为ViewFlipper设置内容 
        List<TextView> list = this.getData(); 
        int size = list.size(); 
        for(int i = 0; i < size; i++) 
        { 
            viewfli.addView(list.get(i)); 
        } 
        
        // 设置文字in/out的动画效果 
        viewfli.setInAnimation(this, R.anim.push_up_in); 
        viewfli.setOutAnimation(this, R.anim.push_up_out); 
        viewfli.startFlipping(); 
    } 
    
    /** 
     * @Description: 要显示的文字信息 
     *  在实际开发中,此方法可为对服务器返回数据的解析操作 

     * @return list 
     */ 
    private List<TextView> getData() 
    { 
        List<TextView> list = new ArrayList<TextView>(); 
        
        for(int i = 0; i < 5; i++) 
        { 
            TextView tv = (TextView) new TextView(this); 
            tv.setText("这是测试用的第 "+i+" 行测试数据:"); 
            list.add(tv); 
        } 
        
        return list; 
    } 
} 

至此,功能全部实现!

 

亲测可用!!



 

posted @ 2019-04-25 16:58  taoxianssss  阅读(880)  评论(0编辑  收藏  举报