使用FragmentTabHost和ViewPager实现仿微信主界面侧滑
来源:互联网 发布:数据港股票行情 编辑:程序博客网 时间:2024/06/01 09:47
最近看到很多界面主页都差不多,决定研究研究写出来,以后直接拿来用,不做代码的轮子,多总结,多学习
还是废话少说,先上图
介绍一下我的代码:
首先是布局文件:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <android.support.v4.view.ViewPager android:id="@+id/pager" android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" /> <android.support.v4.app.FragmentTabHost android:id="@android:id/tabhost" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@android:color/black" > <FrameLayout android:id="@android:id/tabcontent" android:layout_width="0dp" android:layout_height="0dp" android:layout_weight="0" /> </android.support.v4.app.FragmentTabHost></LinearLayout>
当然如果你想让底部的tab放在上面的话,可以把viewPager和FragmentTabHost位置换一下,以上就是主界面了,比较简单没什么好说的,给个小技巧吧,shift+ctrl+T可以查找你想要的包,例如输入viewPager,直接粘android.support.v4.view.ViewPager就可以了,比较方便
下面就是MainActivity了:
package com.sdufe.thea.framework;import java.util.ArrayList;import java.util.List;import java.util.zip.Inflater;import android.os.Bundle;import android.R.integer;import android.annotation.SuppressLint;import android.app.Activity;import android.support.v4.app.Fragment;import android.support.v4.app.FragmentActivity;import android.support.v4.app.FragmentTabHost;import android.support.v4.view.ViewPager;import android.support.v4.view.ViewPager.OnPageChangeListener;import android.view.LayoutInflater;import android.view.Menu;import android.view.View;import android.view.ViewGroup;import android.widget.ImageView;import android.widget.TabHost.OnTabChangeListener;import android.widget.TabHost.TabSpec;import android.widget.TabWidget;import android.widget.TextView;public class MainActivity extends FragmentActivity implementsOnPageChangeListener, OnTabChangeListener {private FragmentTabHost mTabHost;private LayoutInflater layoutInflater;private Class fragmentArray[] = { Fragment1.class, Fragment.class,Fragment3.class, Fragment4.class };private int imageViewArray[] = { R.drawable.mywork, R.drawable.mypatient,R.drawable.infusion, R.drawable.personal };private String textViewArray[] = { "工作", "病人", "互动", "个人中心" };private List<Fragment> list = new ArrayList<Fragment>();private ViewPager vp;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main_tab_layout);initView();initPage();}/** * 控件初始化 */private void initView() {vp = (ViewPager) findViewById(R.id.pager);vp.setOnPageChangeListener(this);layoutInflater = LayoutInflater.from(this);mTabHost = (FragmentTabHost) findViewById(android.R.id.tabhost);mTabHost.setup(this, getSupportFragmentManager(), R.id.pager);mTabHost.setOnTabChangedListener(this);int count = textViewArray.length;for (int i = 0; i < count; i++) {TabSpec tabSpec = mTabHost.newTabSpec(textViewArray[i]).setIndicator(getTabItemView(i));mTabHost.addTab(tabSpec, fragmentArray[i], null);mTabHost.setTag(i);}}/** * 初始化Fragment */private void initPage() {Fragment1 fragment1 = new Fragment1();Fragment2 fragment2 = new Fragment2();Fragment3 fragment3 = new Fragment3();Fragment4 fragment4 = new Fragment4();list.add(fragment1);list.add(fragment2);list.add(fragment3);list.add(fragment4);vp.setAdapter(new MyFragmentAdapter(getSupportFragmentManager(), list));}private View getTabItemView(int i) {View view = layoutInflater.inflate(R.layout.tab_content, null);ImageView mImageView = (ImageView) view.findViewById(R.id.tab_imageview);TextView mTextView = (TextView) view.findViewById(R.id.tab_textview);mImageView.setBackgroundResource(imageViewArray[i]);mTextView.setText(textViewArray[i]);return view;}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}@Overridepublic void onPageScrollStateChanged(int arg0) {}@Overridepublic void onPageScrolled(int arg0, float arg1, int arg2) {}@Overridepublic void onPageSelected(int arg0) {TabWidget widget = mTabHost.getTabWidget();int oldFocusability = widget.getDescendantFocusability();widget.setDescendantFocusability(ViewGroup.FOCUS_BLOCK_DESCENDANTS);mTabHost.setCurrentTab(arg0);widget.setDescendantFocusability(oldFocusability);mTabHost.getTabWidget().getChildAt(arg0) .setBackgroundResource(R.drawable.selector_tab_background);}@Overridepublic void onTabChanged(String tabId) {int position = mTabHost.getCurrentTab();vp.setCurrentItem(position);}}
代码相对来说比较简单,下面的就不贴了
源码:https://github.com/zimoguo/FragmentTabHost-ViewPager
2 0
- 使用FragmentTabHost和ViewPager实现仿微信主界面侧滑
- 使用FragmentTabHost和ViewPager实现仿微信主界面侧滑
- ViewPager和FragmentTabHost的使用
- 使用FragmentTabHost+Fragment+viewpager 实现滑动分页
- 使用FragmentTabHost+Fragment+viewpager 实现滑动分页
- 使用FragmentTabHost+Fragment+viewpager 实现滑动分页
- FragmentTabHost结合ViewPager使用
- 使用FragmentTabHost+TabLayout+ViewPager实现双层嵌套Tab
- 使用FragmentTabHost+TabLayout+ViewPager实现双层嵌套Tab
- 使用FragmentTabHost+TabLayout+ViewPager实现双层嵌套Tab
- 使用FragmentTabHost+TabLayout+ViewPager实现双层嵌套Tab
- qq主界面实现(三)-fragment与FragmentTabHost使用
- 使用DrawerLayout,FragmentTabHost实现测滑式底部菜单栏界面
- ViewPager+RadioGroup实现仿微信主界面
- ViewPager+FragmentTabHost
- FragmentTabHost+Fragment+ViewPager实现内外层嵌套
- FragmentTabHost+Fragment+ViewPager实现内外层嵌套
- FragmentTabHost+viewPager实现底部导航栏
- 5999卖999!是噱头还是颠覆
- OpenCV入门(七)--平滑处理
- LeetCode 146 LRU Cache
- 手机会员消费积分软件
- hsqldb快速入门
- 使用FragmentTabHost和ViewPager实现仿微信主界面侧滑
- linux chmod命令
- Quartz 作业调度框架
- Linux下使用V4L2读取获取拍照(获取静态图像)
- android 一个有漂亮动画效果的Dialog
- SQL Server与MySQL中的MD5与SHA1
- POJ3694-Network(Tarjan缩点+LCA)
- D3D11_TEXTURE_ADDRESS_MODE(纹理寻址模式)
- 创建、查询job