天天看點

Android 使用Fragment,ViewPagerIndicator 制作csdn app主要架構 源碼點選此處下載下傳

轉載請注明出處:http://blog.csdn.net/lmj623565791/article/details/23513993

本來準備下載下傳個csdn的用戶端放手機上,沒事可以浏覽浏覽資訊,下載下傳了官方的之後,發現并不能很好的使用。恰好搜到一個大神自己寫的csdn的app,下載下傳安裝了一下,感覺很不錯,也很流暢,基本滿足了我們 日常浏覽的需求。

app效果圖:

Android 使用Fragment,ViewPagerIndicator 制作csdn app主要架構 源碼點選此處下載下傳
Android 使用Fragment,ViewPagerIndicator 制作csdn app主要架構 源碼點選此處下載下傳
Android 使用Fragment,ViewPagerIndicator 制作csdn app主要架構 源碼點選此處下載下傳
Android 使用Fragment,ViewPagerIndicator 制作csdn app主要架構 源碼點選此處下載下傳

我會在部落格中完整的介紹這個項目的制作,第一篇當然是整個項目的整體結構了。

效果圖:

Android 使用Fragment,ViewPagerIndicator 制作csdn app主要架構 源碼點選此處下載下傳

1、頭部的布局檔案,這個很簡單:

[html] view

plaincopy

Android 使用Fragment,ViewPagerIndicator 制作csdn app主要架構 源碼點選此處下載下傳
Android 使用Fragment,ViewPagerIndicator 制作csdn app主要架構 源碼點選此處下載下傳

<?xml version="1.0" encoding="utf-8"?>  

<linearlayout xmlns:android="http://schemas.android.com/apk/res/android"  

    android:layout_width="match_parent"  

    android:layout_height="wrap_content"  

    android:background="@color/light_blue"  

    android:orientation="horizontal" >  

    <imageview  

        android:layout_width="wrap_content"  

        android:layout_height="wrap_content"  

        android:layout_gravity="center_vertical"  

        android:layout_marginleft="8dp"  

        android:layout_marginright="4dp"  

        android:src="@drawable/biz_navigation_tab_news_pressed" />  

        android:layout_marginleft="4dp"  

        android:src="@drawable/base_action_bar_back_divider" />  

    <textview  

        android:id="@+id/headtv"  

        android:layout_width="0dp"  

        android:layout_weight="1"  

        android:text="csdn資訊"  

        android:textcolor="@color/white"  

        android:textsize="21sp"  

        android:textstyle="bold" >  

    </textview>  

</linearlayout>  

就顯示一個圖示和标題。

2、主布局檔案:

Android 使用Fragment,ViewPagerIndicator 制作csdn app主要架構 源碼點選此處下載下傳
Android 使用Fragment,ViewPagerIndicator 制作csdn app主要架構 源碼點選此處下載下傳

    xmlns:tools="http://schemas.android.com/tools"  

    android:layout_height="match_parent"  

    android:background="#eee"  

    android:orientation="vertical" >  

    <include layout="@layout/main_head" />  

    <com.viewpagerindicator.tabpageindicator  

        android:id="@+id/id_indicator"  

        android:layout_width="fill_parent"  

        android:background="@color/transparentblue" >  

    </com.viewpagerindicator.tabpageindicator>  

    <android.support.v4.view.viewpager  

        android:id="@+id/id_pager"  

        android:layout_height="0dp"  

        android:layout_weight="1" />  

一個tabpageindicator和一個viewpager。

3、主activity

[java] view

Android 使用Fragment,ViewPagerIndicator 制作csdn app主要架構 源碼點選此處下載下傳
Android 使用Fragment,ViewPagerIndicator 制作csdn app主要架構 源碼點選此處下載下傳

package com.zhy.csdndemo;  

import com.viewpagerindicator.tabpageindicator;  

import android.os.bundle;  

import android.support.v4.app.fragmentactivity;  

import android.support.v4.app.fragmentpageradapter;  

import android.support.v4.view.viewpager;  

public class mainactivity extends fragmentactivity  

{  

    private tabpageindicator mindicator ;  

    private viewpager mviewpager ;  

    private fragmentpageradapter madapter ;  

    @override  

    protected void oncreate(bundle savedinstancestate)  

    {  

        super.oncreate(savedinstancestate);  

        setcontentview(r.layout.activity_main);  

        mindicator = (tabpageindicator) findviewbyid(r.id.id_indicator);  

        mviewpager = (viewpager) findviewbyid(r.id.id_pager);  

        madapter = new tabadapter(getsupportfragmentmanager());  

        mviewpager.setadapter(madapter);  

        mindicator.setviewpager(mviewpager, 0);  

    }  

}  

tabadapter.java

Android 使用Fragment,ViewPagerIndicator 制作csdn app主要架構 源碼點選此處下載下傳
Android 使用Fragment,ViewPagerIndicator 制作csdn app主要架構 源碼點選此處下載下傳

import android.support.v4.app.fragment;  

import android.support.v4.app.fragmentmanager;  

public class tabadapter extends fragmentpageradapter  

    public static final string[] titles = new string[] { "業界", "移動", "研發", "程式員雜志", "雲計算" };  

    public tabadapter(fragmentmanager fm)  

        super(fm);  

    public fragment getitem(int arg0)  

        mainfragment fragment = new mainfragment(arg0);  

        return fragment;  

    public charsequence getpagetitle(int position)  

        return titles[position % titles.length];  

    public int getcount()  

        return titles.length;  

mainfragment.java

Android 使用Fragment,ViewPagerIndicator 制作csdn app主要架構 源碼點選此處下載下傳
Android 使用Fragment,ViewPagerIndicator 制作csdn app主要架構 源碼點選此處下載下傳

import android.annotation.suppresslint;  

import android.view.layoutinflater;  

import android.view.view;  

import android.view.viewgroup;  

import android.widget.textview;  

@suppresslint("validfragment")  

public class mainfragment extends fragment  

    private int newstype = 0;  

    public mainfragment(int newstype)  

        this.newstype = newstype;  

    public void onactivitycreated(bundle savedinstancestate)  

        super.onactivitycreated(savedinstancestate);  

    public view oncreateview(layoutinflater inflater, viewgroup container, bundle savedinstancestate)  

        view view = inflater.inflate(r.layout.tab_item_fragment_main, null);  

        textview tip = (textview) view.findviewbyid(r.id.id_tip);  

        tip.settext(tabadapter.titles[newstype]);  

        return view;  

4、在styles.xml中自定義theme

Android 使用Fragment,ViewPagerIndicator 制作csdn app主要架構 源碼點選此處下載下傳
Android 使用Fragment,ViewPagerIndicator 制作csdn app主要架構 源碼點選此處下載下傳

<style name="mytheme" parent="appbasetheme">  

        <item name="vpitabpageindicatorstyle">@style/mywidget.tabpageindicator</item>  

        <item name="android:windowbackground">@drawable/init_pic</item>  

        <item name="android:windownotitle">true</item>    

        <item name="android:animationduration">5000</item>  

        <item name="android:windowcontentoverlay">@null</item>    

    </style>  

    <style name="mywidget.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">8dp</item>  

        <item name="android:paddingbottom">8dp</item>  

        <item name="android:textappearance">@style/mytextappearance.tabpageindicator</item>  

        <item name="android:textsize">16sp</item>  

        <item name="android:maxlines">1</item>  

    <style name="mytextappearance.tabpageindicator" parent="widget">  

        <item name="android:textstyle">bold</item>  

        <item name="android:textcolor">@color/black</item>  

在androidmanifest中注冊使用:

Android 使用Fragment,ViewPagerIndicator 制作csdn app主要架構 源碼點選此處下載下傳
Android 使用Fragment,ViewPagerIndicator 制作csdn app主要架構 源碼點選此處下載下傳

<manifest xmlns:android="http://schemas.android.com/apk/res/android"  

    package="com.zhy.csdndemo"  

    android:versioncode="1"  

    android:versionname="1.0" >  

    <uses-sdk  

        android:minsdkversion="13"  

        android:targetsdkversion="17" />  

    <application  

        android:allowbackup="true"  

        android:icon="@drawable/ic_launcher"  

        android:label="@string/app_name"  

        android:theme="@style/apptheme" >  

        <activity  

            android:name="com.zhy.csdndemo.mainactivity"  

            android:label="@string/app_name"   

            android:theme="@style/mytheme">  

            <intent-filter>  

                <action android:name="android.intent.action.main" />  

                <category android:name="android.intent.category.launcher" />  

            </intent-filter>  

        </activity>  

    </application>  

</manifest>  

總體還是很簡單的,但是效果很不錯啊,現在不是流行fragment麼~好了 ,如果這篇文章對你有幫助,贊一個~

繼續閱讀