导入:UpMarqueeView
百度网盘下载链接:https://pan.baidu.com/s/18beVF2RmQKXuhGhmER74rg
implementation project(':UpMarqueeView')
activity_main.xml
<RelativeLayout android:layout_width="match_parent" android:layout_height="80dp"> <TextView android:id="@+id/tbtv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerVertical="true" android:layout_margin="10dp" android:text="淘宝热点" android:textColor="@color/red" android:textSize="22sp" /> <com.dreamlive.upmarqueeview.UPMarqueeView android:id="@+id/upview1" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_centerVertical="true" android:layout_marginLeft="20dp" android:layout_marginTop="10dp" android:layout_toRightOf="@+id/tbtv"></com.dreamlive.upmarqueeview.UPMarqueeView> </RelativeLayout>
布局文件:
item_view.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:orientation="vertical"> <RelativeLayout android:id="@+id/rl" android:layout_width="match_parent" android:layout_height="wrap_content"> <TextView android:id="@+id/title_tv1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="热议" android:textSize="9sp" android:padding="3dp" android:background="@drawable/textview_border" android:layout_marginRight="6dp" android:textColor="@color/red" /> <TextView android:id="@+id/tv1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_toRightOf="@+id/title_tv1" android:ellipsize="end" android:textSize="14sp" android:maxLines="1" /> </RelativeLayout> <RelativeLayout android:id="@+id/rl2" android:layout_width="match_parent" android:layout_marginTop="5dp" android:layout_height="wrap_content"> <TextView android:id="@+id/title_tv2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="热评" android:padding="3dp" android:textSize="9sp" android:background="@drawable/textview_border" android:layout_marginRight="6dp" android:textColor="@color/red" /> <TextView android:id="@+id/tv2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_toRightOf="@+id/title_tv2" android:ellipsize="end" android:textSize="14sp" android:maxLines="1" /> </RelativeLayout> </LinearLayout>
MainActivity.java
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); /** * 设置item_view的监听 */ upview1.setOnItemClickListener(new UPMarqueeView.OnItemClickListener() { @Override public void onItemClick(int position, View view) { Toast.makeText(MainActivity.this, "你点击了第几个items" + position, Toast.LENGTH_SHORT).show(); } }); } /** * 初始化需要循环的View * 为了灵活的使用滚动的View,所以把滚动的内容让用户自定义 * 假如滚动的是三条或者一条,或者是其他,只需要把对应的布局,和这个方法稍微改改就可以了, */ private void setView() { for (int i = 0; i < data.size(); i = i + 2) { final int position = i; //设置滚动的单个布局 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); /** * 设置监听 */ moreView.findViewById(R.id.rl).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Toast.makeText(MainActivity.this, position + "你点击了" + data.get(position).toString(), Toast.LENGTH_SHORT).show(); } }); /** * 设置监听 */ moreView.findViewById(R.id.rl2).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Toast.makeText(MainActivity.this, position + "你点击了" + data.get(position + 1).toString(), Toast.LENGTH_SHORT).show(); } }); //进行对控件赋值 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首发了!!!"); } }