Android仿淘宝首页头条View垂直滚动效果

之前本来是打算做TextView垂直向上滚动的,后来发现一位大神做得很好,https://github.com/sfsheng0322/MarqueeView 孙福生大神,然后自己要用到多个View向上滚动,也就是类似淘宝首页头条的那种滚动,所以就按照那个思路想了系啊,可以把View拿来滚动,这样可以自己随意的修改View里面的内容,还比较简单一些。所以这个整个思路就是把View就行循环滚动。

看一下循环滚动View的内容咋写的吧,非常简单。

package com.dreamlive.upmarqueeview;  import android.content.Context; import android.util.AttributeSet; import android.view.View; import android.view.animation.Animation; import android.view.animation.AnimationUtils; import android.widget.ViewFlipper;  import java.util.List;  /**  * 仿淘宝首页的 淘宝头条滚动的自定义View  *  * Created by dreamlive on 2016/7/20.  */ public class UPMarqueeView extends ViewFlipper {   private Context mContext;  private boolean isSetAnimDuration = false;  private int interval = 2000;  /**  * 动画时间  */  private int animDuration = 500;   public UPMarqueeView(Context context, AttributeSet attrs) {  super(context, attrs);  init(context, attrs, 0);  }   private void init(Context context, AttributeSet attrs, int defStyleAttr) {  this.mContext = context;  setFlipInterval(interval);  Animation animIn = AnimationUtils.loadAnimation(mContext, R.anim.anim_marquee_in);  if (isSetAnimDuration) animIn.setDuration(animDuration);  setInAnimation(animIn);  Animation animOut = AnimationUtils.loadAnimation(mContext, R.anim.anim_marquee_out);  if (isSetAnimDuration) animOut.setDuration(animDuration);  setOutAnimation(animOut);  }    /**  * 设置循环滚动的View数组  *  * @param views  */  public void setViews(List<View> views) {  if (views == null || views.size() == 0) return;  removeAllViews();  for (int i = 0; i < views.size(); i++) {   addView(views.get(i));  }  startFlipping();  }   } 

MainActivity的内容:

package com.dreamlive.upmarqueeviewdemo;  import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.LayoutInflater; import android.view.View; import android.widget.LinearLayout; import android.widget.TextView;  import com.dreamlive.upmarqueeview.UPMarqueeView;  import java.util.ArrayList; import java.util.List;  /**  * 仿淘宝首页的 淘宝头条滚动的自定义View  * Created by dreamlive on 2016/7/20.  */ public class MainActivity extends AppCompatActivity {    private UPMarqueeView upview1;  List<String> data = new ArrayList<>();  List<View> views = new ArrayList<>();   @Override  protected void onCreate(Bundle savedInstanceState) {  super.onCreate(savedInstanceState);  setContentView(R.layout.activity_main);  initParam();  initdata();  initView();  }   /**  * 实例化控件  */  private void initParam() {  upview1 = (UPMarqueeView) findViewById(R.id.upview1);  }   /**  * 初始化界面程序  */  private void initView() {  setView();  upview1.setViews(views);  }   /**  * 初始化需要循环的View  * 为了灵活的使用滚动的View,所以把滚动的内容让用户自定义  * 假如滚动的是三条或者一条,或者是其他,只需要把对应的布局,和这个方法稍微改改就可以了,  */  private void setView() {  for (int i = 0; i < data.size(); i = i + 2) {   //设置滚动的单个布局   LinearLayout moreView = (LinearLayout) LayoutInflater.from(this).inflate(R.layout.item_view, null);   //初始化布局的控件   TextView tv1 = (TextView) moreView.findViewById(R.id.tv1);   TextView tv2 = (TextView) moreView.findViewById(R.id.tv2);   //进行对控件赋值   tv1.setText(data.get(i).toString());   if (data.size() > i + 1) {   //因为淘宝那儿是两条数据,但是当数据是奇数时就不需要赋值第二个,所以加了一个判断,还应该把第二个布局给隐藏掉   tv2.setText(data.get(i + 1).toString());   }else {   moreView.findViewById(R.id.rl2).setVisibility(View.GONE);   }    //添加到循环滚动数组里面去   views.add(moreView);  }  }   /**  * 初始化数据  */  private void initdata() {  data = new ArrayList<>();  data.add("家人给2岁孩子喝这个,孩子智力倒退10岁!!!");  data.add("iPhone8最感人变化成真,必须买买买买!!!!");  data.add("简直是白菜价!日本玩家33万甩卖15万张游戏王卡");  data.add("iPhone7价格曝光了!看完感觉我的腰子有点疼...");  data.add("主人内疚逃命时没带够,回废墟狂挖30小时!"); // data.add("竟不是小米乐视!看水抢了骁龙821首发了!!!");   } } 

github地址:https://github.com/dreamlivemeng/UpMarqueeTextView-master 欢迎star,fork,提pr,issues。

效果图:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

也许不是自己该去发挥的地方,还是让自己到最适合自己战斗的方面去吧!勇敢的接受自己的失败,

Android仿淘宝首页头条View垂直滚动效果

相关文章:

你感兴趣的文章:

标签云: