【商城開發十】Android淘搶購導航欄
阿新 • • 發佈:2019-02-10
唔,馬上就畢業了,最近回學校做論文畢設,程式碼基本放下了,公司的工作也沒跟著做,最近公司在催我回去,唉,畢業是個事,頭疼啊,只好在學校做開發了。哦了說回正題,今天要做類似淘寶淘搶購的導航欄,先看看淘寶的效果。
紅框裡的就是今天的主角了,在網上一頓好找,根本沒找到,連類似的都沒有,CSDN有一個資源要10積分,呵呵,你怎麼不去搶,看看評論都說垃圾還敢要這麼多積分,只好自己動手做了。事實證明:拿來主義不好做,還是得自己來。自己做也就用了半個多小時。來看看我做的^_^
自己做的也不差吧,下面來說說思路。這個用的是Android自帶的控制元件TabLayout,黑色的背景和紅色帶小三角的都是.9圖,不懂.9圖的可以自行百度。然後寫一個selector ,設定Tablayout的tabBackground屬性,如果想設定字型屬性,就要用tabTextAppearance,自己寫一個style就行。下面是tablayout的程式碼
<android.support.design.widget.TabLayout android:id="@+id/tabLayout" android:layout_width="match_parent" android:layout_height="60dp" app:tabBackground="@drawable/tab_background" app:tabGravity="center" app:tabIndicatorColor="@color/fragment_money_red" app:tabIndicatorHeight="0dp" app:tabMinWidth="98dp" app:tabMode="scrollable" app:tabPaddingBottom="3dp" app:tabSelectedTextColor="@color/white" app:tabTextAppearance="@style/TabLayoutTextStyle" app:tabTextColor="@color/white" />
主要程式碼到這就完了。。。
下面奉上全部程式碼,先看佈局檔案的:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <android.support.design.widget.TabLayout android:id="@+id/tabLayout" android:layout_width="match_parent" android:layout_height="60dp" app:tabBackground="@drawable/tab_background" app:tabGravity="center" app:tabIndicatorColor="@color/fragment_money_red" app:tabIndicatorHeight="0dp" app:tabMinWidth="98dp" app:tabMode="scrollable" app:tabPaddingBottom="3dp" app:tabSelectedTextColor="@color/white" app:tabTextAppearance="@style/TabLayoutTextStyle" app:tabTextColor="@color/white" /> <android.support.v4.view.ViewPager android:id="@+id/viewPager" android:layout_width="match_parent" android:layout_height="match_parent" /> </LinearLayout>
selector的程式碼:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/tab_selected" android:state_selected="true" />
<item android:drawable="@drawable/tab_unselected" android:state_selected="false"/>
</selector>
還有style的
<style name="TabLayoutTextStyle">
<item name="android:textSize">13sp</item>
<item name="android:lineSpacingExtra">1dp</item>
</style>
資源方面就這些了,下面是adapter的
public class MyFragmentPagerAdapter extends FragmentPagerAdapter {
private List<Fragment> fragmentList;//fragment列表
private List<String> stringList;//tab名的列表
public MyFragmentPagerAdapter(FragmentManager fm, List<Fragment> fragmentList, List<String> stringList) {
super(fm);
if (fragmentList.size() != stringList.size()) {
try {
throw new Exception("fragmentList.size must equals stringList.size!");
} catch (Exception e) {
e.printStackTrace();
}
}
this.fragmentList = fragmentList;
this.stringList = stringList;
}
@Override
public Fragment getItem(int position) {
return fragmentList.get(position);
}
@Override
public int getCount() {
return stringList.size();
}
//此方法用來顯示tab上的名字
@Override
public CharSequence getPageTitle(int position) {
return stringList.get(position % stringList.size());
}
}
最後就是MainActivit的了
public class MainActivity extends AppCompatActivity {
private TabLayout tabLayout;
private ViewPager viewPager;
private List<Fragment> fragmentList = new ArrayList<>();//fragment列表
private List<String> stringList = new ArrayList<>();//tab名的列表
private MyFragmentPagerAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
}
private void initView() {
tabLayout = (TabLayout) findViewById(R.id.tabLayout);
viewPager = (ViewPager) findViewById(R.id.viewPager);
getData();
for (int i = 0; i < stringList.size(); i++) {
tabLayout.addTab(tabLayout.newTab().setText(stringList.get(i)));
}
adapter = new MyFragmentPagerAdapter(getSupportFragmentManager(), fragmentList, stringList);
viewPager.setAdapter(adapter);
tabLayout.setupWithViewPager(viewPager);
}
private void getData() {
fragmentList.add(new TypeFragment());
fragmentList.add(new TypeFragment());
fragmentList.add(new TypeFragment());
fragmentList.add(new TypeFragment());
stringList.add("16:00\n拍賣結束");
stringList.add("17:00\n瘋狂搶購中");
stringList.add("18:00\n即將開始");
stringList.add("19:00\n即將開始");
}
}
需要引入V4包和Desig包!差不多到這程式碼就完了,估計看到這的還希望有原始碼吧,來給你,原始碼要1分,辛苦分,沒分的就自己拷貝程式碼建立工程吧。
程式碼在這裡!!!