Android控件ViewFlipper仿淘寶頭條垂直滾動(dòng)廣告條
ViewFlipper的使用,仿淘寶頭條垂直滾動(dòng)廣告條,供大家參考,具體內(nèi)容如下
學(xué)習(xí),學(xué)習(xí),學(xué)以致用
ViewFlipper是安卓自帶的控件,很多人可能很少知道這個(gè)控件,這個(gè)控件很簡單,也很好理解,能不能用上實(shí)戰(zhàn)就看你們的本事了。下面是淘寶頭條廣告的原效果
下面是我們今天要實(shí)現(xiàn)的效果,圖片是Gif,運(yùn)行效果是很流暢的,由于這個(gè)圖片反應(yīng)有點(diǎn)慢,會(huì)浪費(fèi)大家點(diǎn)時(shí)間,所以我把它調(diào)快了,大家可以掏出手機(jī)打開淘寶看,一模一樣的
從源碼可以看出,其實(shí)ViewFlipper間接的繼承了FrameLayout,也可以說ViewFlipper其實(shí)就是個(gè)FrameLayout,只不過在內(nèi)部封裝了動(dòng)畫實(shí)現(xiàn)和Handler實(shí)現(xiàn)一個(gè)循環(huán)而已
一、ViewFlipper的布局實(shí)現(xiàn)
布局的編寫很簡單,跟普通布局一樣的
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <ViewFlipper android:id="@+id/vf" android:layout_width="match_parent" android:layout_height="wrap_content" android:autoStart="true" android:background="#fff" android:flipInterval="3000" android:inAnimation="@anim/anim_marquee_in" android:outAnimation="@anim/anim_marquee_out" android:paddingLeft="30dp" /> </RelativeLayout>
這里介紹ViewFlipper用到的屬性,這些屬性其實(shí)都可以使用代碼實(shí)現(xiàn),只不過這里為了代碼看上去美觀,才放在布局里的
android:autoStart:設(shè)置自動(dòng)加載下一個(gè)View
android:flipInterval:設(shè)置View之間切換的時(shí)間間隔
android:inAnimation:設(shè)置切換View的進(jìn)入動(dòng)畫
android:outAnimation:設(shè)置切換View的退出動(dòng)畫
下面是ViewFlipper常用的方法介紹,除了可以設(shè)置上面的屬性之外,還提供了其他方法
- isFlipping: 判斷View切換是否正在進(jìn)行
- setFilpInterval:設(shè)置View之間切換的時(shí)間間隔
- startFlipping:開始View的切換,而且會(huì)循環(huán)進(jìn)行
- stopFlipping:停止View的切換
- setOutAnimation:設(shè)置切換View的退出動(dòng)畫
- setInAnimation:設(shè)置切換View的進(jìn)入動(dòng)畫
- showNext: 顯示ViewFlipper里的下一個(gè)View
- showPrevious:顯示ViewFlipper里的上一個(gè)View
這里還涉及到兩個(gè)動(dòng)畫其實(shí)就是一個(gè)平移的動(dòng)畫,它們都保存在anim文件夾中
anim_marquee_in.xml
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:duration="1500" android:fromYDelta="100%p" android:toYDelta="0"/> </set>
anim_marquee_out.xml
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:duration="1500" android:fromYDelta="0" android:toYDelta="-100%p"/> </set>
當(dāng)然,如果你對(duì)動(dòng)畫xml比較熟悉,自己可以實(shí)現(xiàn)更多好看的效果
二、自定義ViewFlipper的廣告條
當(dāng)我們準(zhǔn)備好了ViewFlipper之后,就應(yīng)該在ViewFlipper里面添加我們的廣告條了,下面是其中一個(gè)廣告條的布局文件,另外兩個(gè)雷同,只不過改了文字而已
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:padding="8dp" android:orientation="vertical"> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center_vertical" android:orientation="horizontal"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/marqueeview_bg" android:text="熱議" android:textColor="#F14C00" android:textSize="12sp" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:ellipsize="end" android:padding="3dp" android:singleLine="true" android:text="小米6來了:曉龍835+8G運(yùn)存!" android:textColor="#333" android:textSize="14sp" /> </LinearLayout> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center_vertical" android:orientation="horizontal"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/marqueeview_bg" android:text="熱議" android:textColor="#F14C00" android:textSize="12sp" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:ellipsize="end" android:padding="3dp" android:singleLine="true" android:text="227斤的胖MM,掀起上衣后,美爆全場(chǎng)!" android:textColor="#333" android:textSize="14sp" /> </LinearLayout> </LinearLayout>
其效果是
三、代碼為ViewFlipper添加廣告條
所有的準(zhǔn)備條件都準(zhǔn)備好了,該開始使用代碼將準(zhǔn)備好的東西黏在一起了,代碼很簡單,這里就不多解釋了
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ViewFlipper vf = (ViewFlipper) findViewById(R.id.vf); vf.addView(View.inflate(this, R.layout.view_advertisement01, null)); vf.addView(View.inflate(this, R.layout.view_advertisement02, null)); vf.addView(View.inflate(this, R.layout.view_advertisement03, null)); } }
源碼下載:Android垂直滾動(dòng)廣告條
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Android使用ViewFlipper實(shí)現(xiàn)上下滾動(dòng)消息
- Android仿淘寶頭條向上滾動(dòng)廣告條ViewFlipper
- android開發(fā)之橫向滾動(dòng)/豎向滾動(dòng)的ListView(固定列頭)
- android實(shí)現(xiàn)上下滾動(dòng)的TextView
- android TextView不用ScrollViewe也可以滾動(dòng)的方法
- android 實(shí)現(xiàn)ScrollView自動(dòng)滾動(dòng)的實(shí)例代碼
- Android中實(shí)現(xiàn)多行、水平滾動(dòng)的分頁的Gridview實(shí)例源碼
- Android GridView實(shí)現(xiàn)滾動(dòng)到指定位置的方法
- android開發(fā)教程之文本框加滾動(dòng)條scrollview
- Android自定義ViewFlipper實(shí)現(xiàn)滾動(dòng)效果
相關(guān)文章
Android Drawerlayout側(cè)拉欄事件傳遞問題的解決方法
這篇文章主要為大家詳細(xì)介紹了Android Drawerlayout側(cè)拉欄事件傳遞問題的解決方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-11-11基于RxJava實(shí)現(xiàn)酷炫啟動(dòng)頁
本文介紹怎樣利用RxJava來實(shí)現(xiàn)Android的啟動(dòng)頁,啟動(dòng)頁的效果非???,有需要的朋友們可以參考。2016-07-07學(xué)習(xí)Android Material Design(RecyclerView代替ListView)
Android Material Design越來越流行,以前很常用的 ListView 現(xiàn)在也用RecyclerView代替了,實(shí)現(xiàn)原理還是相似的,感興趣的小伙伴們可以參考一下2016-01-01Android.permission.MODIFY_PHONE_STATE權(quán)限問題解決辦法
這篇文章主要介紹了Android.permission.MODIFY_PHONE_STATE權(quán)限問題解決辦法的相關(guān)資料,這里提供了幾種方法幫助大家解決這種問題,需要的朋友可以參考下2016-12-12Android可自定義神奇動(dòng)效的卡片切換視圖實(shí)例
今天小編就為大家分享一篇關(guān)于Android可自定義神奇動(dòng)效的卡片切換視圖實(shí)例,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2019-02-02