1.布局、配置文件
AndroidManifest.xml
- <manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="com.dsp.tvshow"
- android:versionCode="1"
- android:versionName="1.0">
- <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="17" />
- <supports-screens
- android:smallScreens="true"
- android:normalScreens="true"
- android:largeScreens="true"
- android:xlargeScreens="true" />
- <uses-permission android:name="android.permission.INTERNET" />
- <application
- android:theme="@android:style/Theme.Light.NoTitleBar.Fullscreen"
- android:icon="@drawable/icon" android:label="@string/app_name"
- android:logo="@drawable/logo">
- <activity android:name="com.dsp.activity.MainActivity" android:label="@string/app_name">
- <intent-filter>
- <action android:name="android.intent.action.MAIN" />
- <category android:name="android.intent.category.LAUNCHER" />
- </intent-filter>
- </activity>
- </application>
- </manifest>
res/layout/layout_main.xml
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:orientation="vertical" >
- <LinearLayout
- android:id="@+id/logoAreaLayout"
- android:layout_width="fill_parent"
- android:layout_height="50dp"
- android:gravity="left">
- <ImageView
- android:id="@+id/logImageView"
- android:layout_width="wrap_content"
- android:layout_height="fill_parent"
- android:src="@drawable/sitv_logo"
- android:paddingRight="30dp"
- android:layout_gravity="center"/>
- <TextView
- android:id="@+id/logoTextView"
- android:layout_width="wrap_content"
- android:layout_height="fill_parent"
- android:text="@string/logo_text"
- android:textSize="30dp"
- android:gravity="center"/>
- </LinearLayout>
- <TabHost
- android:id="@android:id/tabhost"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content" >
- <LinearLayout android:id="@+id/tabLinearLayout"
- android:layout_height="fill_parent"
- android:layout_width="fill_parent"
- android:orientation="vertical">
- <TabWidget android:id="@android:id/tabs"
- android:layout_height="wrap_content"
- android:layout_width="fill_parent"
- android:layout_weight="0"
- android:gravity="center">
- </TabWidget>
- <FrameLayout android:id="@android:id/tabcontent" android:layout_width="fill_parent" android:layout_height="fill_parent">
- <RelativeLayout android:id="@+id/videoInfoArea"
- android:layout_width="fill_parent"
- android:layout_height="50dp" >
- <TextView
- android:id="@+id/label"
- android:layout_width="wrap_content"
- android:layout_height="fill_parent"
- android:gravity="center"
- android:layout_marginLeft="200dp"
- android:layout_alignParentLeft="true"
- android:text="一共有1000个视频"
- android:textSize="30dp"/>
- <TextView
- android:id="@+id/label"
- android:layout_width="wrap_content"
- android:layout_height="fill_parent"
- android:gravity="center"
- android:layout_marginRight="400dp"
- android:layout_alignParentRight="true"
- android:layout_marginLeft="60dp"
- android:text="1/100页"
- android:textSize="30dp"/>
- <Button
- android:id="@+id/forwardBtn"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_toLeftOf="@id/label"
- android:layout_marginLeft="30dp"
- android:text="@string/forwardBtnText"
- android:textSize="20dp"/>
- <Button
- android:id="@+id/backwardBtn"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_toLeftOf="@id/forwardBtn"
- android:text="@string/backwardBtnText"
- android:textSize="20dp"/>
- </RelativeLayout>
- <GridView xmlns:android="http://schemas.android.com/apk/res/android"
- android:id="@+id/videoGridView"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:columnWidth="90dp"
- android:numColumns="5"
- android:verticalSpacing="10dp"
- android:horizontalSpacing="10dp"
- android:stretchMode="columnWidth"
- android:gravity="center"
- />
- </FrameLayout>
- </LinearLayout>
- </TabHost>
- </LinearLayout>
- <resources>
- <string name="app_name">TVShow</string>
- <string name="logo_text">ACR创新应用示范-互联网视频聚合</string>
- <string name="backwardBtnText">上一页</string>
- <string name="forwardBtnText">下一页</string>
- </resources>
res/values/styles.xml:
- <resources xmlns:android="http://schemas.android.com/apk/res/android">
- <!--
- Base application theme for API 11+. This theme completely replaces
- AppBaseTheme from res/values/styles.xml on API 11+ devices.
- -->
- <style name="AppTheme" parent="android:Theme.Holo.Light">
- <!-- API 11 theme customizations can go here. -->
- </style>
- </resources>
- <?xml version="1.0" encoding="utf-8"?>
- <selector
- xmlns:android="http://schemas.android.com/apk/res/android">
- <item android:state_selected="true"
- android:drawable="@android:drawable/screen_background_light" />
- <item android:state_active="true"
- android:drawable="@android:drawable/alert_dark_frame" />
- <item android:drawable="@android:drawable/screen_background_dark" />
- </selector>
2.Java代码
MainActivity.java
- import java.util.List;
- import com.dsp.entity.gson.ProgramInfo;
- import com.dsp.tvshow.R;
- import com.dsp.util.ProgramInfoHelper;
- import android.app.TabActivity;
- import android.os.Bundle;
- import android.view.View;
- import android.widget.TabHost;
- import android.widget.TabHost.OnTabChangeListener;
- import android.widget.TabWidget;
- import android.widget.TextView;
- public class MainActivity extends TabActivity implements OnTabChangeListener{
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.layout_main);
- //获取栏目列表
- List<ProgramInfo> programs = new ProgramInfoHelper().getProgramList();
- TabHost tabHost = getTabHost();
- TabWidget tabWidget = tabHost.getTabWidget();
- for(ProgramInfo p : programs){
- TabHost.TabSpec tabSpec;
- //实例化一个分页
- tabSpec = tabHost.newTabSpec(p.getProgramId());
- // View tab = createTabIndicatorView(tabWidget, p.getProgramName(), getResources().getDrawable(R.drawable.tab_bg));
- // tabSpec.setIndicator(tab);
- //设置分页的标题
- tabSpec.setIndicator(p.getProgramName());
- //设置分页的内容
- tabSpec.setContent(android.R.id.tabcontent);
- tabHost.addTab(tabSpec);
- }
- for(int i = 0; i < tabWidget.getChildCount(); i++){
- //获取tabview项
- View view = tabWidget.getChildTabViewAt(i);
- //设置tab背景颜色,对应配置文件的tab_bg.xml,可变化的背景,选中时为白色,未选中为黑色
- view.setBackgroundDrawable(getResources().getDrawable(R.drawable.tab_bg));
- //获取textview控件
- TextView textView = (TextView)view.findViewById(android.R.id.title);
- textView.setGravity(BIND_AUTO_CREATE);
- //自动变换颜色,但是没实现
- // textView.setTextColor(getResources().getColor(R.color.tabtext_color));
- if(i == 0){
- //默认的初始页为第一页,tab的文字颜色设为白色
- textView.setTextColor(getResources().getColor(android.R.color.black));
- }else{
- //未选中的页的tab的文字设为黑色
- textView.setTextColor(getResources().getColor(android.R.color.white));
- }
- //设置tab的文字大小
- textView.setTextSize(30);
- }
- tabHost.setCurrentTab(0);
- //tabchanged的监听
- tabHost.setOnTabChangedListener(this);
- }
- //改变tab时的处理
- @Override
- /*
- * @see android.widget.TabHost.OnTabChangeListener#onTabChanged(java.lang.String)
- * @param tabId 新建TabSpec时设置的id
- */
- public void onTabChanged(String tabId) {
- TabHost tabHost = getTabHost();
- int curTabID = getTabHost().getCurrentTab();
- TabWidget tabWidget = tabHost.getTabWidget();
- View view = tabWidget.getChildTabViewAt(curTabID);
- TextView textView = (TextView)view.findViewById(android.R.id.title);
- //将选中页tab的文字设为黑色
- textView.setTextColor(getResources().getColor(android.R.color.black));
- for(int i = 0; i < tabWidget.getChildCount(); i++){
- if(i != curTabID){
- //未选中页tab的文字设为白色
- ((TextView)tabWidget.getChildTabViewAt(i).findViewById(android.R.id.title)).setTextColor(getResources().getColor(android.R.color.white));
- }
- }
- }
- /*
- * 生成标准TAB标头的工具
- * http://www.eoeandroid.com/thread-51167-1-1.html
- * @param parent The parent ViewGroup to attach the new view to.
- * @param label The label to display in the tab indicator. If null, not label will be displayed.
- * @param icon The icon to display. If null, no icon will be displayed.
- * @return The tab indicator View.
- */
- /*
- private View createTabIndicatorView(ViewGroup parent, CharSequence label, Drawable icon) {
- final LayoutInflater inflater = LayoutInflater.from(this);
- final View tabIndicator = inflater.inflate(R.layout.tab_indicator, parent, false);
- final TextView tv = (TextView) tabIndicator.findViewById(R.id.tab_title);
- tv.setText(label);
- final ImageView iconView = (ImageView) tabIndicator.findViewById(R.id.tab_icon);
- iconView.setImageDrawable(icon);
- return tabIndicator;
- }
- */
- }
3.效果