This is a good tutorial, after I learned to take out to share, originally wanted to write a post, but found that the efficiency of their own blog a little different, in order to let everyone see the comfortable point, so separate to write, we first look at the Baidu wallpaper client is what it looks like
Let's start by writing a homepage framework, we create a new project--baiduwallpaper
Write an item
Layout_tab_item
<?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 ">
< Relativelayout
android:layout_width= "match_parent"
android:layout_height= "Wrap_content"
android: Layout_centerinparent= "true" >
<imageview
android:id= "@+id/tabimg"
android:layout_width= " Wrap_content "
android:layout_height=" wrap_content "
android:layout_centerhorizontal=" true "/>
<textview
android:id= "@+id/tabtext"
android:layout_width= "wrap_content"
android:layout_ height= "Wrap_content"
android:layout_below= "@+id/tabimg"
android:layout_centerhorizontal= "true"
android:text= "@string/app_name"
android:textcolor= "@android: Color/white"
android:textsize= " 16sp "/>
</RelativeLayout>
</RelativeLayout>
And then we'll write a layout.
<?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=" 70DP "android:orientation=" Horizontal ">
<include android:id= "@+id/homelayout" layout= "@layout/layout_tab_item" android:layout_width= "Match_parent"
android:layout_height= "Match_parent" android:layout_weight= "1"/> <include android:id= "@+id/selectLayout" layout= "@layout/layout_tab_item" android:layout_width= "match_parent" android:layout_height= "Match_parent" Android : layout_weight= "1"/> <include android:id= "@+id/searchlayout" layout= "@layout/layout_tab_item" android:layout "Match_parent" android:layout_height= "Match_parent" android:layout_weight= "1"/> <include android:id= "_width=" @+id/locationlayout "layout=" @layout/layout_tab_item "android:layout_width=" Match_parent "android:layout_height=" Match_parent "android:layout_weight=" 1 "/> <include androiD:id= "@+id/settinglayout" layout= "@layout/layout_tab_item" android:layout_width= "Match_parent" Android:layout_
height= "Match_parent" android:layout_weight= "1"/> </LinearLayout>
So we can customize the combo control
mybottomlayout
Package Com.lgl.baiduwallpaper.view;
Import Android.content.Context;
Import Android.graphics.Color;
Import Android.util.AttributeSet;
Import Android.view.LayoutInflater;
Import Android.view.View;
Import Android.widget.LinearLayout;
Import Android.widget.RelativeLayout;
Import Android.widget.TextView;
Import COM.LGL.BAIDUWALLPAPER.R;
/** * Bottom Layout * Created by LGL on 16/3/31. * * public class Mybottomlayout extends LinearLayout {//with layout is relativelayout private relativelayout homelayout, Selectlay
Out, Searchlayout, Locationlayout, settinglayout;
Layout loaded private Layoutinflater inflater;
Constructs the method public Mybottomlayout (the context context, the AttributeSet attrs) {Super (context, attrs);
Initview ();
}/** * Initialize/private void Initview () {inflater = Layoutinflater.from (GetContext ());
View view = Inflater.inflate (R.layout.layout_bottom, this);
Findview (view);
InitData ();
Setonclick (); }/** * Initialization data/private void InitData () {Homelayout.findviewbyid (r.id.tabimg). setbackgRoundresource (R.mipmap.image_tabbar_button_home_down);
TextView tvhome = (TextView) Homelayout.findviewbyid (R.id.tabtext);
Tvhome.settext ("home page");
Tvhome.settextcolor (Color.Blue);
Selectlayout.findviewbyid (r.id.tabimg). Setbackgroundresource (R.mipmap.image_tabbar_button_search);
TextView Tvselect = (TextView) Selectlayout.findviewbyid (R.id.tabtext);
Tvselect.settext ("selected");
Tvselect.settextcolor (Color.White);
Searchlayout.findviewbyid (r.id.tabimg). Setbackgroundresource (R.mipmap.image_tabbar_button_find);
TextView Tvsearch = (TextView) Searchlayout.findviewbyid (R.id.tabtext);
Tvsearch.settext ("search");
Tvsearch.settextcolor (Color.White);
Locationlayout.findviewbyid (r.id.tabimg). Setbackgroundresource (R.mipmap.image_tabbar_button_manage);
TextView tvloaction = (TextView) Locationlayout.findviewbyid (R.id.tabtext);
Tvloaction.settext ("local");
Tvloaction.settextcolor (Color.White);
Settinglayout.findviewbyid (r.id.tabimg). Setbackgroundresource (R.mipmap.image_tabbar_button_more); TeXtview tvsetting = (TextView) Settinglayout.findviewbyid (R.id.tabtext);
Tvsetting.settext ("Settings");
Tvsetting.settextcolor (Color.White); /** * method to find the control * @param view */private void Findview (view view) {Homelayout = (relativelayout) view.findviewb
Yid (r.id.homelayout);
Selectlayout = (relativelayout) View.findviewbyid (r.id.selectlayout);
Searchlayout = (relativelayout) View.findviewbyid (r.id.searchlayout);
Locationlayout = (relativelayout) View.findviewbyid (r.id.locationlayout);
Settinglayout = (relativelayout) View.findviewbyid (r.id.settinglayout);
/** * Control Click event/private void Setonclick () {Homelayout.setonclicklistener (New Lister ());
Selectlayout.setonclicklistener (New Lister ());
Searchlayout.setonclicklistener (New Lister ());
Locationlayout.setonclicklistener (New Lister ());
Settinglayout.setonclicklistener (New Lister ()); /** * Click on the interface/private class Lister implements Onclicklistener {/** * Click to change the click state * Switch Page * * @param v * * * @Ove Rride Public void OnClick (View v) {switch (V.getid ()) {case R.id.homelayout:initpix (0);
Break
Case R.id.selectlayout:initpix (1);
Break
Case R.id.searchlayout:initpix (2);
Break
Case R.id.locationlayout:initpix (3);
Break
Case R.id.settinglayout:initpix (4);
Break
} icallbacklistener.clic (V.getid ()); }/** * Toggle card position */public void Initpix (int i) {switch (i) {case 0:homelayout.findviewbyid (r.id.tabimg). Setbac
Kgroundresource (R.mipmap.image_tabbar_button_home_down);
TextView TVHOME0 = (TextView) Homelayout.findviewbyid (R.id.tabtext);
Tvhome0.settextcolor (Color.Blue);
Selectlayout.findviewbyid (r.id.tabimg). Setbackgroundresource (R.mipmap.image_tabbar_button_search);
TextView tvSelect0 = (TextView) Selectlayout.findviewbyid (R.id.tabtext);
Tvselect0.settextcolor (Color.White);
Searchlayout.findviewbyid (r.id.tabimg). Setbackgroundresource (R.mipmap.image_tabbar_button_find);
TextView tvSearch0 = (TextView) Searchlayout.findviewbyid (R.id.tabtext); TVsearch0.settextcolor (Color.White);
Locationlayout.findviewbyid (r.id.tabimg). Setbackgroundresource (R.mipmap.image_tabbar_button_manage);
TextView TvLocation0 = (TextView) Locationlayout.findviewbyid (R.id.tabtext);
Tvlocation0.settextcolor (Color.White);
Settinglayout.findviewbyid (r.id.tabimg). Setbackgroundresource (R.mipmap.image_tabbar_button_more);
TextView TVSETTING0 = (TextView) Settinglayout.findviewbyid (R.id.tabtext);
Tvsetting0.settextcolor (Color.White);
Break
Case 1:homelayout.findviewbyid (r.id.tabimg). Setbackgroundresource (R.mipmap.image_tabbar_button_home);
TextView tvHome1 = (TextView) Homelayout.findviewbyid (R.id.tabtext);
Tvhome1.settextcolor (Color.White);
Selectlayout.findviewbyid (r.id.tabimg). Setbackgroundresource (R.mipmap.image_tabbar_button_search_down);
TextView TvSelect1 = (TextView) Selectlayout.findviewbyid (R.id.tabtext);
Tvselect1.settextcolor (Color.Blue); Searchlayout.findviewbyid (r.id.tabimg). Setbackgroundresource (R.mipmap.image_tabbar_buttoN_find);
TextView tvSearch1 = (TextView) Searchlayout.findviewbyid (R.id.tabtext);
Tvsearch1.settextcolor (Color.White);
Locationlayout.findviewbyid (r.id.tabimg). Setbackgroundresource (R.mipmap.image_tabbar_button_manage);
TextView TvLocation1 = (TextView) Locationlayout.findviewbyid (R.id.tabtext);
Tvlocation1.settextcolor (Color.White);
Settinglayout.findviewbyid (r.id.tabimg). Setbackgroundresource (R.mipmap.image_tabbar_button_more);
TextView tvSetting1 = (TextView) Settinglayout.findviewbyid (R.id.tabtext);
Tvsetting1.settextcolor (Color.White);
Break
Case 2:homelayout.findviewbyid (r.id.tabimg). Setbackgroundresource (R.mipmap.image_tabbar_button_home);
TextView tvHome2 = (TextView) Homelayout.findviewbyid (R.id.tabtext);
Tvhome2.settextcolor (Color.White);
Selectlayout.findviewbyid (r.id.tabimg). Setbackgroundresource (R.mipmap.image_tabbar_button_search);
TextView tvSelect2 = (TextView) Selectlayout.findviewbyid (R.id.tabtext);
Tvselect2.settextcolor (Color.White); SearchlAyout.findviewbyid (r.id.tabimg). Setbackgroundresource (R.mipmap.image_tabbar_button_find_down);
TextView TVSEARCH2 = (TextView) Searchlayout.findviewbyid (R.id.tabtext);
Tvsearch2.settextcolor (Color.Blue);
Locationlayout.findviewbyid (r.id.tabimg). Setbackgroundresource (R.mipmap.image_tabbar_button_manage);
TextView TvLocation2 = (TextView) Locationlayout.findviewbyid (R.id.tabtext);
Tvlocation2.settextcolor (Color.White);
Settinglayout.findviewbyid (r.id.tabimg). Setbackgroundresource (R.mipmap.image_tabbar_button_more);
TextView tvSetting2 = (TextView) Settinglayout.findviewbyid (R.id.tabtext);
Tvsetting2.settextcolor (Color.White);
Break
Case 3:homelayout.findviewbyid (r.id.tabimg). Setbackgroundresource (R.mipmap.image_tabbar_button_home);
TextView TvHome3 = (TextView) Homelayout.findviewbyid (R.id.tabtext);
Tvhome3.settextcolor (Color.White);
Selectlayout.findviewbyid (r.id.tabimg). Setbackgroundresource (R.mipmap.image_tabbar_button_search); TextView tvSelect3 = (TextView) seLectlayout.findviewbyid (R.id.tabtext);
Tvselect3.settextcolor (Color.White);
Searchlayout.findviewbyid (r.id.tabimg). Setbackgroundresource (R.mipmap.image_tabbar_button_find);
TextView TvSearch3 = (TextView) Searchlayout.findviewbyid (R.id.tabtext);
Tvsearch3.settextcolor (Color.White);
Locationlayout.findviewbyid (r.id.tabimg). Setbackgroundresource (R.mipmap.image_tabbar_button_manage_down);
TextView TvLocation3 = (TextView) Locationlayout.findviewbyid (R.id.tabtext);
Tvlocation3.settextcolor (Color.Blue);
Settinglayout.findviewbyid (r.id.tabimg). Setbackgroundresource (R.mipmap.image_tabbar_button_more);
TextView tvSetting3 = (TextView) Settinglayout.findviewbyid (R.id.tabtext);
Tvsetting3.settextcolor (Color.White);
Break
Case 4:homelayout.findviewbyid (r.id.tabimg). Setbackgroundresource (R.mipmap.image_tabbar_button_home);
TextView tvHome4 = (TextView) Homelayout.findviewbyid (R.id.tabtext);
Tvhome4.settextcolor (Color.White); Selectlayout.findviewbyid (r.id.tabimg). SetbackgroUndresource (R.mipmap.image_tabbar_button_search);
TextView TvSelect4 = (TextView) Selectlayout.findviewbyid (R.id.tabtext);
Tvselect4.settextcolor (Color.White);
Searchlayout.findviewbyid (r.id.tabimg). Setbackgroundresource (R.mipmap.image_tabbar_button_find);
TextView TVSEARCH4 = (TextView) Searchlayout.findviewbyid (R.id.tabtext);
Tvsearch4.settextcolor (Color.White);
Locationlayout.findviewbyid (r.id.tabimg). Setbackgroundresource (R.mipmap.image_tabbar_button_manage);
TextView TvLocation4 = (TextView) Locationlayout.findviewbyid (R.id.tabtext);
Tvlocation4.settextcolor (Color.White);
Settinglayout.findviewbyid (r.id.tabimg). Setbackgroundresource (R.mipmap.image_tabbar_button_more_down);
TextView TvSetting4 = (TextView) Settinglayout.findviewbyid (R.id.tabtext);
Tvsetting4.settextcolor (Color.Blue);
Break
}
}
}
Let's run a little bit.
Next we get him to switch tabs, we define an interface
/**
* Toggle the interface of the page * * Public
interface Icallbacklistener {public
void clic (int id);
}
Icallbacklistener icallbacklistener = null;
public void Setoncallbacklistener (Icallbacklistener icallbacklistener) {
This.icallbacklistener = Icallbacklistener;
}
Then initialize the data
/**
* Set the default first page data * *
private void Initpagercontent (Android.app.Fragment Fragment) {
Fragmentmanager manager = Getfragmentmanager ();
Android.app.FragmentTransaction ft = manager.begintransaction ();
Ft.replace (r.id.mycontent,fragment);
Ft.commit ();
}
And then we're going to be able to direct new when we quote.
/**
* Switch Interface * *
Private class Mycallbacklistener implements Mybottomlayout.icallbacklistener {
@ Override public
void clic (int id) {
switch (ID) {case
r.id.homelayout:
initpagercontent (new Homefragment ());
break;
Case R.id.selectlayout:
initpagercontent (New Selectfragment ());
break;
Case R.id.searchlayout:
initpagercontent (New Searchfragment ());
break;
Case R.id.locationlayout:
initpagercontent (New Loactionfragment ());
break;
Case R.id.settinglayout:
initpagercontent (New Settingfragment ());
break;
}}}
We're running a little bit.
But one thing we need to know is that we're going to be sliding, so we're going to use Viewpager.
Layout_main.xml
<?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 ">
< Android.support.v4.view.ViewPager
android:id= "@+id/myviewpager"
android:layout_width= "Match_parent"
android:layout_height= "match_parent"
android:layout_above= "@+id/mybottomlayout"/>
< Com.lgl.baiduwallpaper.view.MyBottomLayout
android:id= "@+id/mybottomlayout"
android:layout_width= " Match_parent "
android:layout_height=" wrap_content "
android:layout_alignparentbottom=" true "
android:background= "@mipmap/image_titlebar_background"/>
</RelativeLayout>
Specifically, I'll just post the mainactivity code.
Package com.lgl.baiduwallpaper;
Import Android.os.Bundle;
Import android.support.v4.app.Fragment;
Import android.support.v4.app.FragmentActivity;
Import Android.support.v4.app.FragmentManager;
Import Android.support.v4.app.FragmentPagerAdapter;
Import Android.support.v4.view.ViewPager;
Import com.lgl.baiduwallpaper.fragment.HomeFragment;
Import com.lgl.baiduwallpaper.fragment.LoactionFragment;
Import com.lgl.baiduwallpaper.fragment.SearchFragment;
Import com.lgl.baiduwallpaper.fragment.SelectFragment;
Import com.lgl.baiduwallpaper.fragment.SettingFragment;
Import Com.lgl.baiduwallpaper.view.MyBottomLayout;
/** * Main Interface */public class Mainactivity extends Fragmentactivity {private mybottomlayout mybottomlayout;
Private Viewpager Viewpager;
@Override protected void OnCreate (Bundle savedinstancestate) {super.oncreate (savedinstancestate);
Setcontentview (R.layout.activity_main);
Initview (); }/** * Initialize/private void Initview () {//Initpagercontent (New Homefragment ());
Findview ();
Setonclick (); ////**//* Set default first page data////private void Initpagercontent (Android.app.Fragment Fragment) {//Fragmentmanager Manag
ER = Getfragmentmanager ();
Android.app.FragmentTransaction ft = manager.begintransaction ();
Ft.replace (r.id.mycontent,fragment);
Ft.commit ();
/** * Click event/private void Setonclick () {Mybottomlayout.setoncallbacklistener (New Mycallbacklistener ());
/** * Find control/private void Findview () {mybottomlayout = (mybottomlayout) Findviewbyid (r.id.mybottomlayout);
Viewpager = (Viewpager) Findviewbyid (R.id.myviewpager);
Viewpager.setadapter (New Myfragmentadapter (Getsupportfragmentmanager ())); Page Listener Viewpager.setonpagechangelistener (new Viewpager.onpagechangelistener () {@Override public void onpagescrolled ( int position, float positionoffset, int positionoffsetpixels) {} @Override public void onpageselected (int position)
{Mybottomlayout.initpix (position); } @Override public void OnpagescrollstatecHanged (int state) {}}); /** * Switch Interface * * Private class Mycallbacklistener implements Mybottomlayout.icallbacklistener {@Override public vo
ID clic (int id) {switch (ID) {case r.id.homelayout://Initpagercontent (New Homefragment ());
Viewpager.setcurrentitem (0);
Break
Case R.id.selectlayout://Initpagercontent (New Selectfragment ());
Viewpager.setcurrentitem (1);
Break
Case R.id.searchlayout://Initpagercontent (New Searchfragment ());
Viewpager.setcurrentitem (2);
Break
Case R.id.locationlayout://Initpagercontent (New Loactionfragment ());
Viewpager.setcurrentitem (3);
Break
Case R.id.settinglayout://Initpagercontent (New Settingfragment ());
Viewpager.setcurrentitem (4);
Break /** * Viewpager Adapter/Private class Myfragmentadapter extends Fragmentpageradapter {public myfragment
Adapter (Fragmentmanager FM) {super (FM); @Override public Fragment getitem (int position) {switch (position) {Case 0:return new HomEfragment ();
Case 1:return New Selectfragment ();
Case 2:return New Searchfragment ();
Case 3:return New Loactionfragment ();
Case 4:return New Settingfragment ();
return null;
@Override public int GetCount () {//5 pages return 5;
}
}
}
The main is when you switch Setcurrentitem (ID), while listening to Viewpager sliding, you can freely switch, we run a
SOURCE download: Android imitation Baidu wallpaper Client
The above is the entire content of this article, I hope to help you learn, but also hope that we support the cloud habitat community.