导入: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首发了!!!");
}
}