viewpager+frament实现简单的tab
来源:互联网 发布:java时间轴处理 编辑:程序博客网 时间:2024/05/17 15:02
近期公司项目改版,改成tab选项
简单的用viewpager+frament实现tab选项 ,当然用 indicator也行,现在开源的这么多
先看效果图
布局文件
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#e2e2e2" android:orientation="vertical" > <RelativeLayout android:layout_width="match_parent" android:background="#c2c2c2" android:layout_height="55dp" > <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" > <TextView android:layout_width="0dp" android:layout_weight="1" android:text="tab1" android:gravity="center" android:textSize="15sp" android:id="@+id/tab1" android:textColor="@color/green" android:layout_height="match_parent"/> <TextView android:layout_width="0dp" android:layout_weight="1" android:text="tab2" android:id="@+id/tab2" android:gravity="center" android:textSize="15sp" android:textColor="@color/gray_white" android:layout_height="match_parent"/> <TextView android:layout_width="0dp" android:layout_weight="1" android:text="tab3" android:id="@+id/tab3" android:gravity="center" android:textSize="15sp" android:textColor="@color/gray_white" android:layout_height="match_parent"/> </LinearLayout> <View android:layout_width="0dp" android:layout_height="3dp" android:id="@+id/line" android:layout_alignParentBottom="true" android:background="@color/green" /> </RelativeLayout> <android.support.v4.view.ViewPager android:id="@+id/viewPager" android:layout_width="match_parent" android:layout_height="match_parent" > </android.support.v4.view.ViewPager></LinearLayout>
public class MainActivity extends FragmentActivity implements View.OnClickListener { TextView tab1,tab2,tab3; ViewPager mViewPager; View line; List<Fragment> mfragments; int line_width;//线的宽度 MyAdapter adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tab1 = (TextView) findViewById(R.id.tab1); tab2 = (TextView) findViewById(R.id.tab2); tab3 = (TextView) findViewById(R.id.tab3); line = findViewById(R.id.line); mViewPager = (ViewPager) findViewById(R.id.viewPager); adapter = new MyAdapter(getSupportFragmentManager()); //初始化textview 1动画 ViewPropertyAnimator.animate(tab1).scaleX(1.2f).setDuration(0); ViewPropertyAnimator.animate(tab1).scaleY(1.2f).setDuration(0); tab1.setOnClickListener(this); tab2.setOnClickListener(this); tab3.setOnClickListener(this); mfragments = new ArrayList<>(); initFragment(); line_width = getWindowManager().getDefaultDisplay().getWidth()/mfragments.size(); line.getLayoutParams().width = line_width; line.requestLayout(); mViewPager.setAdapter(adapter); mViewPager.setOnPageChangeListener(new MyPagerChangeListener()); mViewPager.setCurrentItem(0); } private void initFragment() { mfragments.add(new FragmentOne()); mfragments.add(new FragmentTwo()); mfragments.add(new FragmentThree()); } @Override public void onClick(View v) { switch (v.getId()){ case R.id.tab1: mViewPager.setCurrentItem(0); break; case R.id.tab2: mViewPager.setCurrentItem(1); break; case R.id.tab3: mViewPager.setCurrentItem(2); break; } } class MyAdapter extends FragmentStatePagerAdapter{ public MyAdapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int position) { return mfragments.get(position); } @Override public int getCount() { return mfragments.size(); } } /** * 自定义 */ class MyPagerChangeListener implements ViewPager.OnPageChangeListener { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { float targetX = position * line_width + positionOffsetPixels/mfragments.size(); //给line横线设置动画 ViewPropertyAnimator.animate(line).translationX(targetX) .setDuration(0); } @Override public void onPageSelected(int position) { changeState(position); } @Override public void onPageScrollStateChanged(int state) { } } /** * 根据选择的position改变状态 * @param position */ private void changeState(int position) { if(position == 0){ tab1.setTextColor(getResources().getColor(R.color.green)); tab2.setTextColor(getResources().getColor(R.color.gray_white)); tab3.setTextColor(getResources().getColor(R.color.gray_white)); ViewPropertyAnimator.animate(tab1).scaleX(1.2f).setDuration(200); ViewPropertyAnimator.animate(tab1).scaleY(1.2f).setDuration(200); ViewPropertyAnimator.animate(tab2).scaleX(1.0f) .setDuration(200); ViewPropertyAnimator.animate(tab2).scaleY(1.0f) .setDuration(200); ViewPropertyAnimator.animate(tab3).scaleX(1.0f) .setDuration(200); ViewPropertyAnimator.animate(tab3).scaleY(1.0f) .setDuration(200); } if(position == 1){ tab2.setTextColor(getResources().getColor(R.color.green)); tab1.setTextColor(getResources().getColor(R.color.gray_white)); tab3.setTextColor(getResources().getColor(R.color.gray_white)); ViewPropertyAnimator.animate(tab2).scaleX(1.2f).setDuration(200); ViewPropertyAnimator.animate(tab2).scaleY(1.2f).setDuration(200); ViewPropertyAnimator.animate(tab1).scaleX(1.0f) .setDuration(200); ViewPropertyAnimator.animate(tab1).scaleY(1.0f) .setDuration(200); ViewPropertyAnimator.animate(tab3).scaleX(1.0f) .setDuration(200); ViewPropertyAnimator.animate(tab3).scaleY(1.0f) .setDuration(200); } if(position == 2){ //点击tab3选项卡 tab3.setTextColor(getResources().getColor(R.color.green)); tab1.setTextColor(getResources().getColor(R.color.gray_white)); tab2.setTextColor(getResources().getColor(R.color.gray_white)); ViewPropertyAnimator.animate(tab3).scaleX(1.2f).setDuration(200); ViewPropertyAnimator.animate(tab3).scaleY(1.2f).setDuration(200); ViewPropertyAnimator.animate(tab1).scaleX(1.0f) .setDuration(200); ViewPropertyAnimator.animate(tab1).scaleY(1.0f) .setDuration(200); ViewPropertyAnimator.animate(tab2).scaleX(1.0f) .setDuration(200); ViewPropertyAnimator.animate(tab2).scaleY(1.0f) .setDuration(200); } }}
0 0
- viewpager+frament实现简单的tab
- Tab与viewpager之间的转化frament
- Frament+viewpager实现滑动布局
- Andoid中利用Frament实现tab标签切换的效果
- Tab+ViewPager的实现
- Frament+ViewPager
- ViewPager实现简单Tab切换效果
- 自定义的带tab的可左右滑动的viewpager之一 简单实现
- 实现ViewPager与Tab之间的交互
- viewpager+tab 主界面的实现
- Frament+ViewPager一起使用
- Tablayout+Frament+ViewPager
- ViewPager的简单实现
- viewpager的简单实现
- 简单的ViewPager实现
- viewPager的简单实现
- ViewPager实现Tab布局
- viewpager实现Tab
- Scientific Toolworks Understand for linux 的下载
- 5-10 计算工资
- 《算法竞赛入门经典2ndEdition 》例题5-8 Unix is 命令(Unix is, Uva400)
- 一个sort命令统计hot query
- 第二章IPC机制(Android开发艺术探索)
- viewpager+frament实现简单的tab
- Android学习之ListView与ArrayAdapter的简单使用
- 理解C语言——从小菜到大神的晋级之路(5)——程序流程控制
- Servlet详解
- linux0.11系列之(三): 启动引导 setup.s
- java中线程创建
- Java浅复制与深复制
- IOS开发基础Object-C( 14)-- 字符串的使用方法
- 【论文笔记】人脸检测窗口选择办法 NMS convnet