淘先锋技术网

首页 1 2 3 4 5 6 7

MainActivity

package com.yzw.android.fragmenttabhost;

import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentTabHost;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.TabHost.TabSpec;

/*
自定义TabHost
 */
public class MainActivity extends FragmentActivity {
     //  定义FragmentTabHost对象
    private FragmentTabHost mTabHost;
    //定义一个布局
    private LayoutInflater layoutInflater;
    //定义数组用来存放Fragment的界面
    private Class fragmentArray[]={Activity1.class,Activity2.class,Activity3.class,Activity4.class};
    //定义数组用来存放image按钮
    private int imageArray[]={R.drawable.tab_home_btn,R.drawable.tab_message_btn,R.drawable.tab_square_btn,
            R.drawable.tab_more_btn};
    //Tab选项卡的文字
    private String mTextviewArray[] = {"快递", "收藏", "网点", "更多"};

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
    }

    /**
     * 初始化组件
     */
    private void initView(){
        //实例化布局对象
       layoutInflater=LayoutInflater.from(this);
        //实例化TabHost对象,得到TabHost
        mTabHost=(FragmentTabHost) findViewById(android.R.id.tabhost);
        mTabHost.setup(this,getSupportFragmentManager(),R.id.realcontent) ;
        //得到fragment的个数
        int count = fragmentArray.length;

        for(int i = 0; i < count; i++){
            //为每一个Tab按钮设置图标、文字和内容
            TabSpec tabSpec = mTabHost.newTabSpec(mTextviewArray[i]).setIndicator(getTabItemView(i));
            //将Tab按钮添加进Tab选项卡中
            mTabHost.addTab(tabSpec, fragmentArray[i], null);
            //设置Tab按钮的背景
            mTabHost.getTabWidget().getChildAt(i).setBackgroundResource(R.drawable.selector_tab_background);
        }

    }

    /**
     * 给Tab按钮设置图标和文字
     */
    private View getTabItemView(int index){
        View view = layoutInflater.inflate(R.layout.tab_item_view, null);

        ImageView imageView = (ImageView) view.findViewById(R.id.imageview);
        imageView.setImageResource(imageArray[index]);

        TextView textView = (TextView) view.findViewById(R.id.textview);
        textView.setText(mTextviewArray[index]);

        return view;
    }
}

 activity_main.xml 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.yzw.android.fragmenttabhost.MainActivity">
    <!-- 这个布局决定了标签在上面还是在下面-->
<FrameLayout android:id="@+id/realcontent"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1"
    />


    <android.support.v4.app.FragmentTabHost
        android:id="@android:id/tabhost"
        android:layout_height="wrap_content"
        android:layout_width="match_parent"
        android:background="@mipmap/tabhost_bg"
        >
<FrameLayout
    android:id="@android:id/tabcontent"
    android:layout_width="0dp"
    android:layout_height="0dp"
    android:layout_weight="0"
    />
    </android.support.v4.app.FragmentTabHost>


</LinearLayout>

 

再定义出四个Activity1,Activity2,Activity3,Activity4

代码都是一样的如下:

package com.yzw.android.fragmenttabhost;

import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

/**
 * Created by Administrator on 2016/7/3.
 */

public class Activity1 extends Fragment{
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view=inflater.inflate(R.layout.activity1,container,false);

        return view;
    }
}
xml文件也是一样的,a ctivity1.xml,activity2.xml,activity3.xml,activity4.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#A020F0"
        android:gravity="center"
        android:textSize="30sp"
        android:text="我是1"/>
</LinearLayout>

用法就是这么简单

代码下载:

https://github.com/yzwty/FragmentTabhost


演示的效果图就不贴了,下面贴下本人上架项目的图






源码地址:https://github.com/yzwty/fdkdzs

这是早期代码用eclipse写的一个快递查询软件,有好多学习的知识点



再给大家介绍一款微信UI设计的代码,比较详细的讲解了 

Android ActionBar的使用。

同时使用 ViewPager, PagerSlidingTabStrip, SwipeRefreshLayout

ViewPager是v4包里提供的,可以通过PagerAdapter根据左右的滑动产生不同的page

PagerSlidingTabStrip作用是根据ViewPager生成对应的tab 在页面切换时有相应的动画效果

 PagerSlidingTabStrip下载地址

SwipeRefreshLayout同样是v4包里的,它提供了下拉刷新的功能以及对应

的动画效果,使用起来非常简便。但是其中只能包含一个View,且该View必须是可滑动的(不可滑动的话动画显示有bug),如ListView。

源码地址:https://github.com/yzwty/WeiXinUI