先贴效果图
再看代码结构
再看主要代码 这是布局文件activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/tabhost"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_above="@android:id/tabs"
/>
<TabWidget
android:id="@android:id/tabs"
android:layout_width="fill_parent"
android:layout_height="45dp"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:showDividers="none"
android:gravity="bottom" />
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:alpha="0.3"
android:background="#C0C0C0"
android:layout_above="@android:id/tabs"
/>
</RelativeLayout>
</LinearLayout>
</TabHost>
tab样式布局 item_tabs.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center"
android:orientation="vertical" >
<ImageView
android:id="@+id/tabImg"
android:layout_width="22dp"
android:layout_height="22dp"
android:src="@drawable/ic_launcher"
android:layout_marginTop="2dp" />
<TextView
android:id="@+id/tabTv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="2dp"
android:text="精选"
android:textSize="10sp"
android:textColor="@drawable/selector_tabtext"/>
</LinearLayout>
主要类MainActivity
package com.ui.android.tab;
import android.app.Activity;
import android.app.TabActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ImageView;
import android.widget.TabHost;
import android.widget.TabHost.OnTabChangeListener;
import android.widget.TextView;
public class MainActivity extends TabActivity{
private TabHost tab_TabHost;
private View layout_select,layout_finance, layout_capital ,layout_person;
View[] tabs = new View[] { layout_select, layout_finance,layout_capital, layout_person};
// tab点击效果数组
private int viewback[] = new int[] { R.drawable.tab_task_selector,
R.drawable.tab_center_seletor, R.drawable.tab_center_seletor, R.drawable.tab_address_seletor};
// 底部Tab
public static String tab_tvArray[] = { "精选", "理财", "资产","个人"};
public static Class tab_IntentArray[] = {SelectActivity.class,FinanceActivity.class, CapitalActivity.class,PersonActivity.class};
private TextView tv_title_name;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
}
void initView(){
tab_TabHost = getTabHost();
// tv_title_name = (TextView) findViewById(R.id.tv_title_name);
// 向底部tab添加图片和文字,并进行判断
for (int i = 0; i < tabs.length; i++) {
tabs[i] = LayoutInflater.from(this).inflate(R.layout.item_tabs, null);
// 添加图片
ImageView tab_iv = (ImageView) tabs[i].findViewById(R.id.tabImg);
tab_iv.setImageResource(viewback[i]);
// 添加文字
TextView tab_tv = (TextView) tabs[i].findViewById(R.id.tabTv);
tab_tv.setText(tab_tvArray[i]);
// 添加tab顺序,设置页面内容
tab_TabHost.addTab(tab_TabHost.newTabSpec(tab_tvArray[i]).setIndicator(tabs[i]).setContent(getTabItemIntent(i)));
//设置监听事件
tab_TabHost.setOnTabChangedListener(new OnTabChangeListener() {
@Override
public void onTabChanged(String tabId) {
// TODO Auto-generated method stub
//设置标题随按钮改变
// tv_title_name.setText(tabId);
}
});
}
//第一次进来标题
// tv_title_name.setText(tab_tvArray[0]);
}
private Intent getTabItemIntent(int index) {
Intent intent = new Intent(this, tab_IntentArray[index]);
return intent;
}
}
到这里,底部选项卡的主要代码就出来了,接下来看fragment+viewpage实现滑动效果的代码
跟前面一样,先上主要布局文件activity_finance.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<include layout="@layout/layout_titlebar"
android:layout_height="wrap_content"
android:layout_width="match_parent"/>
<android.support.v4.view.ViewPager
android:id="@+id/main_pager"
android:layout_width="fill_parent"
android:layout_height="0.0dip"
android:layout_weight="1.0" />
</LinearLayout>
在上主要类FinanceActivity
package com.ui.android.tab;
import java.util.ArrayList;
import java.util.List;
import com.ui.fragment.MovieFragment;
import com.ui.fragment.ProductFragment;
import android.app.Activity;
import android.graphics.Color;
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.FragmentStatePagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
public class FinanceActivity extends FragmentActivity {
//定义碎片集合
List<Fragment> fragments=new ArrayList<Fragment>();
private ViewPager main_pager;//得到ViewPager控件
private Button btn_product;//得到顶部控件
private Button btn_movie;//得到顶部控件
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_finance);
Log.e("TAG", "FinanceActivity");
main_pager= (ViewPager) findViewById(R.id.main_pager);
btn_product=(Button) findViewById(R.id.btn_product);
btn_movie=(Button) findViewById(R.id.btn_movie);
//初始化碎片集合
initFragment();
//设置适配器
main_pager.setAdapter(new MyPagerAdapter(getSupportFragmentManager()));
//设置监听事件
main_pager.setOnPageChangeListener(new OnPageChangeListener() {
@Override
public void onPageSelected(int arg0) {
// TODO Auto-generated method stub
switch (arg0) {
case 0:
checkItem();
// ToastUtils.show(MainActivity.this, "产品");
Toast.makeText(FinanceActivity.this, "产品", 0).show();
break;
case 1:
checkItem();
Toast.makeText(FinanceActivity.this, "敬请期待", 0).show();
break;
default:
break;
}
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
// TODO Auto-generated method stub
}
@Override
public void onPageScrollStateChanged(int arg0) {
// TODO Auto-generated method stub
}
});
}
/**
* 初始化碎片
*/
public void initFragment()
{
fragments.add(new ProductFragment(this));
fragments.add(new MovieFragment());
}
/**
* 自定义适配器
* @author mingliang
*
*/
class MyPagerAdapter extends FragmentStatePagerAdapter{
public MyPagerAdapter(FragmentManager fm) {
super(fm);
// TODO Auto-generated constructor stub
}
@Override
public Fragment getItem(int arg0) {
// TODO Auto-generated method stub
return fragments.get(arg0);
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return fragments.size();
}
}
/**
* 点击事件
* @param view
*/
public void checkFragment(View view){
switch (view.getId()) {
case R.id.btn_product:
main_pager.setCurrentItem(0);
checkItem();
//调用
break;
case R.id.btn_movie:
main_pager.setCurrentItem(1);
checkItem();
break;
default:
break;
}
}
/**
* 选中状态
* @param btn
*/
public void select(Button btn)
{
btn.setTextColor(Color.rgb(255, 70, 70));
btn.setBackgroundResource(R.drawable.btn_shape_yes);
}
/**
* 未选中状态
* @param btn
*/
public void noselect(Button btn)
{
btn.setTextColor(Color.WHITE);
btn.setBackgroundResource(R.drawable.btn_shape_no);
}
public void checkItem(){
if(main_pager.getCurrentItem()==0){
select(btn_product);
}
else{
noselect(btn_product);
}
if(main_pager.getCurrentItem()==1){
select(btn_movie);
}
else{
noselect(btn_movie);
}
}
}
OK,滑动效果代码也展示完毕
今天暂时就到这里,刚接触博客,有不好的地方请勿喷