用Viewpager加上Fragment可以实现的界面。
这些微信,通讯录,发现,我的图标使用iconfont字体图标,这样清晰度非常的高,很清楚。
主要文件:
MainActivity:
<span style="font-size:18px;">package com.example.dior.fragment_viewpager; import android.graphics.Typeface; import android.os.Bundle; import android.support.design.widget.FloatingActionButton; import android.support.design.widget.Snackbar; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentPagerAdapter; import android.support.v4.view.ViewPager; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.view.View; import android.view.Menu; import android.view.MenuItem; import android.view.WindowManager; import android.widget.LinearLayout; import android.widget.TextView; import java.util.ArrayList; import java.util.List; public class MainActivity extends FragmentActivity implements View.OnClickListener{ private LinearLayout tab_weixin; private LinearLayout tab_phone; private LinearLayout tab_find; private LinearLayout tab_my; private TextView text_weixin; private TextView text_phone; private TextView text_find; private TextView text_my; private TextView iconfont_weixin; private TextView iconfont_phone; private TextView iconfont_find; private TextView iconfont_my; private Fragment tab01; private Fragment tab02; private Fragment tab03; private Fragment tab04; private ViewPager mviewpager; private FragmentPagerAdapter mAdapter; List<Fragment> mFragments; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); initView(); initEvents(); } private void initView(){ Typeface iconfont = Typeface.createFromAsset(getAssets(), "iconfont.ttf"); Typeface phone = Typeface.createFromAsset(getAssets(), "phone.ttf"); mviewpager = (ViewPager)findViewById(R.id.id_viewpager); tab_weixin = (LinearLayout)findViewById(R.id.id_tab_weixin); tab_phone = (LinearLayout)findViewById(R.id.id_tab_phone); tab_find = (LinearLayout)findViewById(R.id.id_tab_find); tab_my = (LinearLayout)findViewById(R.id.id_tab_my); text_weixin = (TextView)findViewById(R.id.id_text_weixin); text_phone = (TextView)findViewById(R.id.id_text_phone); text_find = (TextView)findViewById(R.id.id_text_find); text_my = (TextView)findViewById(R.id.id_text_my); iconfont_weixin = (TextView)findViewById(R.id.id_iconfont_weixin); iconfont_phone= (TextView)findViewById(R.id.id_iconfont_phone); iconfont_find = (TextView)findViewById(R.id.id_iconfont_find); iconfont_my = (TextView)findViewById(R.id.id_iconfont_my); iconfont_weixin.setTypeface(iconfont); iconfont_phone.setTypeface(phone); iconfont_find.setTypeface(iconfont); iconfont_my.setTypeface(iconfont); tab01 = new WeixinFragment(); tab02 = new PhoneFragment(); tab03 = new FindFragment(); tab04 = new MyFragment(); mFragments = new ArrayList<Fragment>(); mFragments.add(tab01); mFragments.add(tab02); mFragments.add(tab03); mFragments.add(tab04); mAdapter = new FragmentPagerAdapter(getSupportFragmentManager()) { @Override public android.support.v4.app.Fragment getItem(int position) { return mFragments.get(position); } @Override public int getCount() { return mFragments.size(); } }; mviewpager.setAdapter(mAdapter); } private void initEvents(){ tab_weixin.setOnClickListener(this); tab_phone.setOnClickListener(this); tab_find.setOnClickListener(this); tab_my.setOnClickListener(this); mviewpager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { mviewpager.setCurrentItem(position); switch (position){ case 0: setSelect(0); break; case 1: setSelect(1); break; case 2: setSelect(2); break; case 3: setSelect(3); break; } } @Override public void onPageScrollStateChanged(int state) { } }); } private void resetAll(){ text_weixin.setTextColor(getResources().getColor(R.color.normal)); text_phone.setTextColor(getResources().getColor(R.color.normal)); text_find.setTextColor(getResources().getColor(R.color.normal)); text_my.setTextColor(getResources().getColor(R.color.normal)); iconfont_weixin.setText(getString(R.string.weixin_normal)); iconfont_phone.setText(getString(R.string.phone_normal)); iconfont_find.setText(getString(R.string.find_normal)); iconfont_my.setText(getString(R.string.my_normal)); } public void onClick(View v){ switch (v.getId()){ case R.id.id_tab_weixin: setSelect(0); break; case R.id.id_tab_phone: setSelect(1); break; case R.id.id_tab_find: setSelect(2); break; case R.id.id_tab_my: setSelect(3); break; } } private void setSelect(int id){ resetAll(); switch (id){ case 0: text_weixin.setTextColor(getResources().getColor(R.color.pressed)); iconfont_weixin.setText(getString(R.string.weixin_pressed)); break; case 1: text_phone.setTextColor(getResources().getColor(R.color.pressed)); iconfont_phone.setText(getString(R.string.phone_pressed)); break; case 2: text_find.setTextColor(getResources().getColor(R.color.pressed)); iconfont_find.setText(getString(R.string.find_pressed)); break; case 3: text_my.setTextColor(getResources().getColor(R.color.pressed)); iconfont_my.setText(getString(R.string.my_pressed)); break; } mviewpager.setCurrentItem(id); } }</span>四个Fragment就是中间的部分有四个可以切换:
<span style="font-size:18px;">package com.example.dior.fragment_viewpager; import android.support.v4.app.Fragment; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; public class WeixinFragment extends Fragment{ @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.tab01, container, false); } } </span>
下面为xml布局文件:
activity_main
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_height="match_parent" android:layout_width="match_parent" android:orientation="vertical"> <include layout="@layout/head"/> <include layout="@layout/top"/> <android.support.v4.view.ViewPager android:id="@+id/id_viewpager" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1"> </android.support.v4.view.ViewPager> <include layout="@layout/bottom"/> </LinearLayout>
<?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="55dp" android:background="@color/white"> <LinearLayout android:id="@+id/id_tab_weixin" android:orientation="vertical" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:gravity="center"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/id_iconfont_weixin" android:textSize="30sp" android:background="#00000000" android:text="@string/weixin_pressed"/> <TextView android:id="@+id/id_text_weixin" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="微信" android:textColor="@color/pressed" android:textSize="12sp" /> </LinearLayout> <LinearLayout android:id="@+id/id_tab_phone" android:orientation="vertical" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:gravity="center"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/id_iconfont_phone" android:textSize="30sp" android:background="#00000000" android:text="@string/phone_normal"/> <TextView android:id="@+id/id_text_phone" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="通讯录" android:textColor="@color/normal" android:textSize="12sp" /> </LinearLayout> <LinearLayout android:id="@+id/id_tab_find" android:orientation="vertical" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:gravity="center"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/id_iconfont_find" android:textSize="30sp" android:background="#00000000" android:text="@string/find_normal"/> <TextView android:id="@+id/id_text_find" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="发现" android:textColor="@color/normal" android:textSize="12sp" /> </LinearLayout> <LinearLayout android:id="@+id/id_tab_my" android:orientation="vertical" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:gravity="center"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/id_iconfont_my" android:textSize="30sp" android:background="#00000000" android:text="@string/my_normal"/> <TextView android:id="@+id/id_text_my" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="我" android:textColor="@color/normal" android:textSize="12sp" /> </LinearLayout> </LinearLayout>
<?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="22dp" android:background="#282828"> </LinearLayout>
<?xml version="1.0" encoding="utf-8"?> <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_height="match_parent" android:layout_width="match_parent"> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="20sp" android:textStyle="bold" android:textColor="#43a1e4" android:text="This is Weixin Tab"/> </LinearLayout> </ScrollView>
<resources> <string name="app_name">微信</string> <string name="action_settings">Settings</string> <string name="weixin_normal"></string> <string name="weixin_pressed"></string> <string name="phone_normal"></string> <string name="phone_pressed"></string> <string name="find_normal"></string> <string name="find_pressed"></string> <string name="my_normal"></string> <string name="my_pressed"></string> </resources>