about viewpagerindicator
来源:互联网 发布:seo外包公司 小周 编辑:程序博客网 时间:2024/04/29 11:13
先感谢下这位楼主的分享
http://blog.csdn.net/xiaanming/article/details/10766053
并结合github中https://github.com/JakeWharton/ViewPagerIndicator的开源项目的学习
自己做了个demo
自己整理下,以做总结和学习用
效果图:
MainActivity.java
package com.example.mytest_indicator;import com.viewpagerindicator.TabPageIndicator;import android.app.Activity;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 android.support.v4.view.ViewPager.OnPageChangeListener;import android.widget.Toast;/** * 先实例化ViewPager,然后实例化TabPageIndicator,并且要设置TabPageIndicator和ViewPager关联, * 就是调用TabPageIndicator的setViewPager(ViewPager view)方法, * 这样我们就实现了点击上面的Tab,下面的ViewPager切换,滑动ViewPager上面的Tab跟着切换, * ViewPager的每一个Item我们使用的是Fragment,使用Fragment可以使我们的布局更加灵活一点, * 有一点需要注意的地方, * 当我们需要给ViewPager设置监听的时候, * 我们之前设置OnPageChangeListener直接用ViewPager.setOnPageChangeListener, * 而现在我们不能这样子了,TabPageIndicator提供了设置OnPageChangeListener的方法, * 我们需要调用TabPageIndicator.setOnPageChangeListener来设置监听 * @author zunming * */public class MainActivity extends FragmentActivity { private static final String[] CONTENT = new String[] { "Recent", "Artists", "Albums", "Songs", "Playlists", "Genres" }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.simple_tabs); //ViewPager的adapter FragmentPagerAdapter adapter = new GoogleMusicAdapter(getSupportFragmentManager()); //viewpager ViewPager pager = (ViewPager)findViewById(R.id.pager); pager.setAdapter(adapter); //实例化TabPageIndicator然后设置ViewPager与之关联 TabPageIndicator indicator = (TabPageIndicator)findViewById(R.id.indicator); indicator.setViewPager(pager); //对ViewPager设置监听,用indicator设置就行了 indicator.setOnPageChangeListener(new OnPageChangeListener() { @Override public void onPageSelected(int arg0) { Toast.makeText(getApplicationContext(), CONTENT[arg0], Toast.LENGTH_SHORT).show(); } @Override public void onPageScrolled(int arg0, float arg1, int arg2) { } @Override public void onPageScrollStateChanged(int arg0) { } }); } class GoogleMusicAdapter extends FragmentPagerAdapter { public GoogleMusicAdapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int position) { //用Fragment来展示ViewPager item的内容,并传递参 return TestFragment.newInstance(CONTENT[position % CONTENT.length]); } @Override public CharSequence getPageTitle(int position) { return CONTENT[position % CONTENT.length].toUpperCase(); } @Override public int getCount() { return CONTENT.length; } }}
TestFragment.java
package com.example.mytest_indicator;import android.os.Bundle;import android.support.v4.app.Fragment;import android.view.Gravity;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.LinearLayout;import android.widget.LinearLayout.LayoutParams;import android.widget.TextView;public final class TestFragment extends Fragment { private static final String KEY_CONTENT = "TestFragment:Content"; public static TestFragment newInstance(String content) { TestFragment fragment = new TestFragment(); StringBuilder builder = new StringBuilder(); for (int i = 0; i < 20; i++) { builder.append(content).append(" "); } builder.deleteCharAt(builder.length() - 1); fragment.mContent = builder.toString(); return fragment; } private String mContent = ""; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if ((savedInstanceState != null) && savedInstanceState.containsKey(KEY_CONTENT)) { mContent = savedInstanceState.getString(KEY_CONTENT); } } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { TextView text = new TextView(getActivity()); text.setGravity(Gravity.CENTER); text.setText(mContent); text.setTextSize(20 * getResources().getDisplayMetrics().density); text.setPadding(20, 20, 20, 20); LinearLayout layout = new LinearLayout(getActivity()); layout.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT)); layout.setGravity(Gravity.CENTER); layout.addView(text); return layout; } @Override public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); outState.putString(KEY_CONTENT, mContent); }}
activity_main.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <com.viewpagerindicator.TabPageIndicator android:id="@+id/indicator" android:layout_height="wrap_content" android:layout_width="fill_parent" /> <android.support.v4.view.ViewPager android:id="@+id/pager" android:layout_width="fill_parent" android:layout_height="0dp" android:layout_weight="1" /></LinearLayout>
点击下载
0 0
- about viewpagerindicator
- ViewPagerIndicator
- ViewPagerIndicator
- ViewPagerIndicator
- ViewPagerIndicator
- ViewPagerIndicator
- ViewPagerIndicator
- ViewPagerIndicator
- viewpagerindicator
- viewpagerindicator
- ViewPagerIndicator
- ViewPagerIndicator
- ViewPagerIndicator
- ViewPagerIndicator
- ViewPagerIndicator
- ViewPagerIndicator
- Android-ViewPagerIndicator
- ViewPagerIndicator介绍
- 什么是位、字节、字、KB、MB?
- word文档打开要转换格式怎么办
- KVC 与 KVO 理解
- SAP 采购订单打印完后不可以取消审批
- 设计模式之二十二:享元模式(FlyWeight)
- about viewpagerindicator
- java 内置定时器实现定时任务和自定义定时任务
- 为自己记----android中关于actionbar的一些简单理解
- 操作系统 面试全集[转]
- 【DOS】进程相关
- for cache debug test
- SASS用法指南
- Linux 初始化 init 系统1---sysvinit
- shape的使用