項目連接地址:https://github.com/sun-sky/Marquee
Marquee-master
仿淘寶首頁的淘寶頭條垂直滾動
仿淘寶首頁的淘寶頭條垂直滾動 滾動布局繼承了是ViewFlipper,可以實現進入動畫馍驯,退出動畫阁危,設置切換時間間隔。 MarqueeView可用于多行或單行滾動汰瘫,滾動的布局可以自定義狂打。
效果圖
使用介紹
1、添加依賴
Step 1. Add it in your root build.gradle at the end of repositories:
allprojects {
repositories {
...
maven { url "https://jitpack.io" }
}
}
Step 2. Add the dependency
dependencies {
compile 'com.github.sun-sky:Marquee:1.0.0'
}
2混弥、在布局文件中添加MarqueeView趴乡,可以設置自定義屬性
xml文件
<com.sunsky.marqueeview.MarqueeView
android:id="@+id/upview1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:padding="10dp"
app:animDuration="1000"
app:interval="5000"
app:isSetAlphaAnim="true" />
Attributes:
attr屬性 | description 描述 | default vuale 默認值 |
---|---|---|
isSetAlphaAnim | 是否顯示淡入淡出動畫 | true |
interval | 切換間隔時間 | 5000(5秒) |
animDuration | 動畫時間 | 2000(2秒) |
3、Activity中使用
控件初始化
marqueeView1 = (MarqueeView) findViewById(R.id.upview1);
initdata();
setViewSingleLine();
marqueeView1.setViews(views1);
初始化數據
private void initdata() {
data = new ArrayList<>();
data.add("git常用命令");
data.add("Git配置SSH訪問GitHub(window)");
data.add("關于java的抽象和接口");
data.add("阿里HotFix2.0升級詳解 暢談熱修復領域那些事");
}
初始化view隊列
/**
* 自定義布局——單行滾動
*/
private void setViewSingleLine() {
views2.clear();//記得加這句話蝗拿,不然可能會產生重影現象
for (int i = 0; i < data.size(); i++) {
final int position = i;
//設置滾動的單個布局
LinearLayout moreView = (LinearLayout) LayoutInflater.from(this).inflate(R.layout.item_view_single, null);
//初始化布局的控件
TextView tv1 = (TextView) moreView.findViewById(R.id.tv1);
/**
* 設置監(jiān)聽
*/
moreView.findViewById(R.id.rl).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(getApplicationContext(), position + "你點擊了" + data.get(position).toString(), Toast.LENGTH_SHORT).show();
}
});
//進行對控件賦值
tv1.setText(data.get(i).toString());
//添加到循環(huán)滾動數組里面去
views2.add(moreView);
}
}
4晾捏、重影問題可參考以下解決方案
@Override
public void onResume() {
super.onResume();
marqueeView1.startFlipping();
}
@Override
public void onPause() {
super.onPause();
marqueeView1.stopFlipping();
}