黑马北京新闻项目连载(5)--->ViewPagerIndicator结合PagerAdapter使用

来源:互联网 发布:acfun离线缓存for mac 编辑:程序博客网 时间:2024/06/06 19:17

点击打开项目链接。。。

上篇是ViewPagerIndicator结合FragmentPagerAdapter 使用,这篇是ViewPagerIndicator结合PagerAdapter使用

上篇链接地址 ViewPagerIndicator初探使用(开源库的Git上的demo)


布局文件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"    android:orientation="vertical"    tools:context="com.example.viewpagerindicatordeafult.MainActivity" >    <com.viewpagerindicator.TabPageIndicator        android:id="@+id/indicator"        android:layout_width="fill_parent"        android:layout_height="wrap_content" />    <android.support.v4.view.ViewPager        android:id="@+id/pager"        android:layout_width="fill_parent"        android:layout_height="0dp"        android:layout_weight="1" /></LinearLayout>

MainActivity

package com.example.viewpagerindicator;import java.util.ArrayList;import android.app.Activity;import android.os.Bundle;import android.support.v4.view.PagerAdapter;import android.support.v4.view.ViewPager;import android.view.View;import android.view.ViewGroup;import com.viewpagerindicator.TabPageIndicator;public class MainActivity extends Activity {// Tab栏的菜单数量--创建数据源private static final String[] CONTENT = new String[] { "Recent", "Artists","Albumssdfdsf", "Songs", "Playlsfsdfists" };private ArrayList<TabDetailPager> mDetailPagers = null;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);// 布局线性布局 上面TabPageIndicator 下面ViewPagersetContentView(R.layout.activity_main);// 获取ViewPager控件ViewPager pager = (ViewPager) findViewById(R.id.pager);mDetailPagers = new ArrayList<TabDetailPager>();for (int i = 0; i < CONTENT.length; i++) {mDetailPagers.add(new TabDetailPager(this, CONTENT[i]));}// 获取适配器GoogleMusicAdapter adapter = new GoogleMusicAdapter();// 设置适配器pager.setAdapter(adapter);// 获取indicator控件TabPageIndicator indicator = (TabPageIndicator) findViewById(R.id.indicator);// 固定用法indicator.setViewPager(pager);}class GoogleMusicAdapter extends PagerAdapter {@Overridepublic CharSequence getPageTitle(int position) {return CONTENT[position];}@Overridepublic int getCount() {return mDetailPagers.size();}@Overridepublic boolean isViewFromObject(View arg0, Object arg1) {return arg0 == arg1;}@Overridepublic void destroyItem(ViewGroup container, int position, Object object) {container.removeView((View) object);}@Overridepublic Object instantiateItem(ViewGroup container, int position) {TabDetailPager pager = mDetailPagers.get(position);container.addView(pager.mRootView);return pager.mRootView;}}}

TabDetailPager

package com.example.viewpagerindicator;import android.app.Activity;import android.graphics.Color;import android.os.Bundle;import android.support.annotation.Nullable;import android.support.v4.app.Fragment;import android.view.Gravity;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.view.ViewGroup.LayoutParams;import android.widget.TextView;import com.example.viewpagerindicator.domain.NewsData.NewsTabData;/** * 页签详情页 */public class TabDetailPager {public Activity mActivity;public View mRootView;// 根布局对象private String content;private TextView tvText;public TabDetailPager(Activity activity,String content) {mActivity = activity;this.content = content;mRootView = initViews();}private View initViews() {tvText = new TextView(mActivity);tvText.setLayoutParams(new LayoutParams(-1, -1));tvText.setTextColor(Color.RED);tvText.setTextSize(25);tvText.setGravity(Gravity.TOP|Gravity.CENTER_HORIZONTAL);tvText.setText(content);return tvText;}}


另外跟上篇博客一样,还是使用同样的布局,布局是可以自定义的

 <activity            android:name=".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>

<resources>    <style name="Theme.PageIndicatorDefaults" parent="android:Theme">        <item name="vpiTabPageIndicatorStyle">@style/Widget.TabPageIndicator</item>    </style>    <style name="Widget">    </style>    <style name="Widget.TabPageIndicator" parent="Widget">        <item name="android:gravity">center</item>        <item name="android:background">@drawable/vpi__tab_indicator</item>        <item name="android:paddingLeft">22dip</item>        <item name="android:paddingRight">22dip</item>        <item name="android:paddingTop">12dp</item>        <item name="android:paddingBottom">12dp</item>        <item name="android:textAppearance">@style/TextAppearance.TabPageIndicator</item>        <item name="android:textSize">12sp</item>        <item name="android:maxLines">1</item>    </style>    <style name="TextAppearance.TabPageIndicator" parent="Widget">        <item name="android:textStyle">bold</item>        <item name="android:textColor">@color/vpi__dark_theme</item>    </style></resources>

<selector xmlns:android="http://schemas.android.com/apk/res/android">    <!-- 分为4种图片 -->    <item  android:state_selected="false" android:state_pressed="false" android:drawable="@drawable/vpi__tab_unselected_holo" />        <item android:state_selected="false" android:state_pressed="true" android:drawable="@drawable/vpi__tab_unselected_pressed_holo" />        <item  android:state_selected="true"  android:state_pressed="false" android:drawable="@drawable/vpi__tab_selected_holo" />    <item  android:state_selected="true"  android:state_pressed="true" android:drawable="@drawable/vpi__tab_selected_pressed_holo" /></selector>

<selector xmlns:android="http://schemas.android.com/apk/res/android">    <item android:state_pressed="true" android:color="#f00"/>    <item android:state_selected="true" android:color="#f00"/>    <item android:color="#fff"/></selector>


0 0