仿淘宝首页的淘宝头条View垂直滚动
2016-07-21 09:43
351 查看
之前本来是打算做TextView垂直向上滚动的,后来发现一位大神做得很好,https://github.com/sfsheng0322/MarqueeView孙福生大神,然后自己要用到多个View向上滚动,也就是类似淘宝首页头条的那种滚动,所以就按照那个思路想了系啊,可以把View拿来滚动,这样可以自己随意的修改View里面的内容,还比较简单一些。所以这个整个思路就是把View就行循环滚动。
看一下循环滚动View的内容咋写的吧,非常简单。
MainActivity的内容:
如果在fragment里面出现文本重叠现象,请修改动画时长。
github地址:https://github.com/dreamlivemeng/UpMarqueeTextView-master欢迎star,fork,提pr,issues。遇到问题可以先查看issues是否有人提出过。
看一下循环滚动View的内容咋写的吧,非常简单。
packagecom.dreamlive.upmarqueeview; importandroid.content.Context; importandroid.util.AttributeSet; importandroid.view.View; importandroid.view.animation.Animation; importandroid.view.animation.AnimationUtils; importandroid.widget.ViewFlipper; importjava.util.List; /** *仿淘宝首页的淘宝头条滚动的自定义View * *Createdbydreamliveon2016/7/20. */ publicclassUPMarqueeViewextendsViewFlipper{ privateContextmContext; privatebooleanisSetAnimDuration=false; privateintinterval=2000; /** *动画时间 */ privateintanimDuration=500; publicUPMarqueeView(Contextcontext,AttributeSetattrs){ super(context,attrs); init(context,attrs,0); } privatevoidinit(Contextcontext,AttributeSetattrs,intdefStyleAttr){ this.mContext=context; setFlipInterval(interval); AnimationanimIn=AnimationUtils.loadAnimation(mContext,R.anim.anim_marquee_in); if(isSetAnimDuration)animIn.setDuration(animDuration); setInAnimation(animIn); AnimationanimOut=AnimationUtils.loadAnimation(mContext,R.anim.anim_marquee_out); if(isSetAnimDuration)animOut.setDuration(animDuration); setOutAnimation(animOut); } /** *设置循环滚动的View数组 * *@paramviews */ publicvoidsetViews(List<View>views){ if(views==null||views.size()==0)return; removeAllViews(); for(inti=0;i<views.size();i++){ addView(views.get(i)); } startFlipping(); } }
MainActivity的内容:
packagecom.dreamlive.upmarqueeviewdemo; importandroid.os.Bundle; importandroid.support.v7.app.AppCompatActivity; importandroid.view.LayoutInflater; importandroid.view.View; importandroid.widget.LinearLayout; importandroid.widget.TextView; importcom.dreamlive.upmarqueeview.UPMarqueeView; importjava.util.ArrayList; importjava.util.List; /** *仿淘宝首页的淘宝头条滚动的自定义View *Createdbydreamliveon2016/7/20. */ publicclassMainActivityextendsAppCompatActivity{ privateUPMarqueeViewupview1; List<String>data=newArrayList<>(); List<View>views=newArrayList<>(); @Override protectedvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initParam(); initdata(); initView(); } /** *实例化控件 */ privatevoidinitParam(){ upview1=(UPMarqueeView)findViewById(R.id.upview1); } /** *初始化界面程序 */ privatevoidinitView(){ setView(); upview1.setViews(views); } /** *初始化需要循环的View *为了灵活的使用滚动的View,所以把滚动的内容让用户自定义 *假如滚动的是三条或者一条,或者是其他,只需要把对应的布局,和这个方法稍微改改就可以了, */ privatevoidsetView(){ for(inti=0;i<data.size();i=i+2){ //设置滚动的单个布局 LinearLayoutmoreView=(LinearLayout)LayoutInflater.from(this).inflate(R.layout.item_view,null); //初始化布局的控件 TextViewtv1=(TextView)moreView.findViewById(R.id.tv1); TextViewtv2=(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); } } /** *初始化数据 */ privatevoidinitdata(){ data=newArrayList<>(); data.add("家人给2岁孩子喝这个,孩子智力倒退10岁!!!"); data.add("iPhone8最感人变化成真,必须买买买买!!!!"); data.add("简直是白菜价!日本玩家33万甩卖15万张游戏王卡"); data.add("iPhone7价格曝光了!看完感觉我的腰子有点疼..."); data.add("主人内疚逃命时没带够,回废墟狂挖30小时!"); //data.add("竟不是小米乐视!看水抢了骁龙821首发了!!!"); } }
如果在fragment里面出现文本重叠现象,请修改动画时长。
github地址:https://github.com/dreamlivemeng/UpMarqueeTextView-master欢迎star,fork,提pr,issues。遇到问题可以先查看issues是否有人提出过。
相关文章推荐
- 仿淘宝首页的淘宝头条垂直滚动,因为循环滚动的是布局,所以很多向上的情况都可以用,可以先收藏起。
- 标准库begin和end;除法的舍入规则;sizeof用于类成员;
- 一个人最重要的是要有目标
- iOS 真机调试错误 An App ID with Identifier 'xxx.xxx' is not available. Please enter a differen
- 字符串统计 hd 2017
- eclipse检测不到手机
- Mysql主从配置,实现读写分离
- OpenStack风口下的“雨林生态”:华为成为主流玩家
- MyBatis的foreach语句详解
- 【sphinx】 配置文件之增量数据源
- 《禅与Objective-C编程艺术》读书笔记(二)
- ARM工作模式(一)
- C语言中的SYSTEM函数
- 12A - Super Agent
- Largest prime factor(最大素数因子)
- Java poi技术写Excel的Sheet
- hdu 1019
- 如何使用NPM来管理你的Node.js依赖
- Android中国开发精英必须知道的内容
- 关于shape