展会信息港展会大全

Android ViewPagerIndicator 使用示例 一款分页指标小部件
来源:互联网   发布日期:2015-10-02 16:51:06   浏览:1832次  

导读:今天在github上见到一个非常不错的开源库,它就是ViewPagerIndicator,与ActionBarSherlock 同样出自大神JakeWharton之手。github地址:https: github com JakeWharton Android-ViewPagerIndicatorViewPagerIn ...

今天在github上见到一个非常不错的开源库,它就是ViewPagerIndicator,与ActionBarSherlock 同样出自大神JakeWharton之手。

github地址:https://github.com/JakeWharton/Android-ViewPagerIndicator

ViewPagerIndicator作为一款分页指标小部件兼容ViewPager,封装上做得非常不错,目前已为众多知名应用所使用。具体 API的使用,大家可以下载官方demo示例研究研究就知道啦!

自己写了一个简单的Demo mark一下

运行效果图

activity_main.xml

<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"

tools:context=".MainActivity"

android:orientation="vertical">

<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>

MainActivity.java

package com.example.vpitest; 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.example.vpitest.fragment.ContentFragment; import com.viewpagerindicator.TabPageIndicator; public class MainActivity extends FragmentActivity { private static final String[] CONTENT = new String[] { "头条", "娱乐", "体育", "财经", "科技", "汽车","NBA" }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); findView(); } private void findView() { FragmentPagerAdapter adapter = new WYNewsAdapter(getSupportFragmentManager()); ViewPager pager = (ViewPager)findViewById(R.id.pager); pager.setAdapter(adapter); TabPageIndicator indicator = (TabPageIndicator)findViewById(R.id.indicator); indicator.setViewPager(pager); } class WYNewsAdapter extends FragmentPagerAdapter { public WYNewsAdapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int position) { return ContentFragment.newInstance(CONTENT[position % CONTENT.length]); } @Override public CharSequence getPageTitle(int position) { return CONTENT[position % CONTENT.length].toUpperCase(); } @Override public int getCount() { return CONTENT.length; } } } ContentFragment.java

package com.example.vpitest.fragment;

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 ContentFragment extends Fragment {

private static final String KEY_CONTENT = "TestFragment:Content";

public static ContentFragment newInstance(String content) {

ContentFragment fragment = new ContentFragment();

StringBuilder builder = new StringBuilder();

for (int i = 0; i < 10; 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 节点上配置 theme 属性

<activity android:name="com.example.vpitest.MainActivity" android:label="@string/app_name" android:theme="@style/Theme.PageIndicatorDefaults"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>

赞助本站

人工智能实验室
AiLab云推荐
推荐内容
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港