轉載請注明出處:http://blog.csdn.net/lmj623565791/article/details/23513993
本來準備下載下傳個csdn的用戶端放手機上,沒事可以浏覽浏覽資訊,下載下傳了官方的之後,發現并不能很好的使用。恰好搜到一個大神自己寫的csdn的app,下載下傳安裝了一下,感覺很不錯,也很流暢,基本滿足了我們 日常浏覽的需求。
app效果圖:
我會在部落格中完整的介紹這個項目的制作,第一篇當然是整個項目的整體結構了。
效果圖:
1、頭部的布局檔案,這個很簡單:
[html] view
plaincopy
<?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、主布局檔案:
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
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
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
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
<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中注冊使用:
<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麼~好了 ,如果這篇文章對你有幫助,贊一個~