(4.3.1.1)【项目一】主体框架FragmentActivity+FragmentTabHost

XML布局

加入Fragment对应布局

        <FrameLayout
            android:id="@+id/realtabcontent"
            android:layout_width="fill_parent"
            android:layout_height="0dip"
            android:layout_weight="1" />

加入FragmentTabHost对应布局

<android.support.v4.app.FragmentTabHost
            android:id="@android:id/tabhost"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:background="@color/whiteactionbar" >

            <FrameLayout
                android:id="@android:id/tabcontent"
                android:layout_width="0dp"
                android:layout_height="0dp"
                android:layout_weight="0" />
        </android.support.v4.app.FragmentTabHost>

程序代码

1、继承extends FragmentActivity

2、变量初始化:Fragment的Class与name

    private boolean is2CallBack = false;//双击退出控制器
    // 定义数组来存放Fragment界面
    private Class fragmentArray[] = { FragmentPage1.class, FragmentPage2.class,
            FragmentPage3.class, FragmentPage4.class, FragmentPage1.class };
    // Tab选项卡的文字
    private String mTextviewArray[] = { "发现", "九宫", "私人订制", "资讯", "工具" };
    // 定义数组来存放按钮图片  tab选项卡上的图片
    private int mImageViewArray[] = { R.drawable.yunshi_tab_faxian_btn,
            R.drawable.yunshi_tab_jiugong_btn, R.drawable.yunshi_tab_siren_btn,
            R.drawable.yunshi_tab_gaiyun_btn, R.drawable.yunshi_tab_gongju_btn };

3、FindView()找到FragmentTabHost对应元素

// 实例化布局对象
layoutInflater = LayoutInflater.from(this);
// 实例化TabHost对象,得到TabHost
mTabHost = (FragmentTabHost) findViewById(android.R.id.tabhost);
mTabHost.setup(this, getSupportFragmentManager(), R.id.realtabcontent);

4、装填FragmentTabHost

    /**
     * 初始化fragment控制组件
     */
private void initView() {

        // 得到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(0).setBackgroundResource(R.drawable.selector_tab_background);

        }
        //initviewshow();//自定义初始化的显示
    }

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

        ImageView imageView = (ImageView) view.findViewById(R.id.imageview);
        imageView.getLayoutParams().height = dip2px(YunShiActivity.this, 35);// 通过给它的属性赋值的方法可以解决问题
        imageView.getLayoutParams().width = dip2px(YunShiActivity.this, 35);
        imageView.setImageResource(mImageViewArray[index]);

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

        return view;
    }

    public static int dip2px(Context context, float dipValue) {
        final float scale = context.getResources().getDisplayMetrics().density;
        return (int) (dipValue * scale + 0.5f);
    }

7、重载tabhost的点击函数,实现最左右按钮弹出slidingmenu

    /**
     * 设置点击函数
     */
    private void initonclick() {
        // TODO Auto-generated method stub
        mTabHost.getTabWidget().getChildAt(0)
                .setOnClickListener(new OnClickListener() {

                    @Override
                    public void onClick(View arg0) {
                        // TODO Auto-generated method stub
                        menu.toggle();
                    }
                });
        mTabHost.getTabWidget().getChildAt(4)
                .setOnClickListener(new OnClickListener() {

                    @Override
                    public void onClick(View arg0) {
                        // TODO Auto-generated method stub
                        menu.showSecondaryMenu();
                    }
                });
        //```
        }

6、程序中设置默认值fragment

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.yunshi);
        //````
        mTabHost.setCurrentTab(1);
        initonclick();
        //```
    }

7、FragmentActivity与fragment的通信

FragmentActivity中获取对应的fragment实例
fragmentPage2 = (FragmentPage2) getSupportFragmentManager()
.findFragmentByTag(mTabHost.getCurrentTabTag());

// 设置键盘按键时间
    public boolean dispatchKeyEvent(KeyEvent event) {
        int keyCode = event.getKeyCode();
        FragmentPage2 fragmentPage2 = null;
        if (mTabHost.getCurrentTab() == 1)
            fragmentPage2 = (FragmentPage2) getSupportFragmentManager()
                    .findFragmentByTag(mTabHost.getCurrentTabTag());
        if (keyCode == KeyEvent.KEYCODE_BACK
                && event.getAction() != KeyEvent.ACTION_UP) {// 返回键点击的是返回键,并且不是抬起事件
            if (event.getRepeatCount() == 0) {
                if (menu.isMenuShowing() || menu.isSecondaryMenuShowing()) {// 侧边栏打开状态
                    if (menu.isMenuShowing())
                        menu.toggle();
                    else
                        menu.showContent();
                    return true;
                } else if (mTabHost.getCurrentTab() == 1
                        && fragmentPage2.isfiveShow) {//九宫tab,且在显示第五宫则返回之前页面
                    fragmentPage2.initview();
                    return true;
                } else if (mTabHost.getCurrentTab() == 1
                        && fragmentPage2.CurrentLevel > 1) {// 九宫tab的某一层
                    if (fragmentPage2.CurrentLevel < 5) {
                        fragmentPage2.CurrentString = fragmentPage2.BeforeString
                                .get(fragmentPage2.BeforeString.size() - 1);
                        fragmentPage2.BeforeString
                                .remove(fragmentPage2.BeforeString.size() - 1);
                        fragmentPage2.CurrentLevel--;
                        if (fragmentPage2.CurrentLevel == 1)
                            fragmentPage2.CurrentJiugong = "幸福";
                        fragmentPage2.getData();
                        fragmentPage2.initview();
                    } else if (fragmentPage2.CurrentLevel == 5) {
                        fragmentPage2.CurrentLevel--;
                        fragmentPage2.initview();
                    }
                    return true;
                } else {
                    if (!is2CallBack) {  //双击退出程序
                        is2CallBack = true;
                        Toast.makeText(this, "再按一次退出程序", Toast.LENGTH_SHORT)
                                .show();
                        new Handler().postDelayed(new Runnable() {
                            @Override
                            public void run() {
                                is2CallBack = false;
                            }
                        }, 2500);
                        return true;
                    } else {
                        DataCleanManager dm = new DataCleanManager();
                        dm.cleanInternalCache(YunShiActivity.this);
                        dm.cleanDatabases(YunShiActivity.this);
                        ExitManager.getInstance().exit();
                    }

                }

            }
        }
        return super.dispatchKeyEvent(event);
    }

程序代码 SlidingMenu

1、引用slidingmenu_library项目作为自己的lib

2、XML:左右布局文件

这里写图片描述

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@id/menu_frameok"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/yunshi_menu_left_dashu"
    android:padding="1.0dip" >

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >

        <LinearLayout
            android:id="@+id/leftmenu_denglu"
            android:layout_width="fill_parent"
            android:layout_height="0.0dip"
            android:layout_weight="2.0"
            android:background="#44d3d3d3"
            android:orientation="vertical"
            android:gravity="center"
            android:clickable="true" >

            <ImageView
                android:id="@+id/imageView1"
                android:layout_width="60.0dip"
                android:layout_height="60.0dip"
                android:src="@drawable/yunshi_login_touxiang_no" />

            <TextView
                android:id="@+id/username"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:paddingTop="5.0dip"
                android:text="@string/yunshi_left_menu_dlyzc"
                android:textColor="@drawable/yunshi_menu_left_yanse_wenzi" />
        </LinearLayout>

        <View
            android:layout_width="fill_parent"
            android:layout_height="1.0dip"
            android:layout_marginLeft="0.0dip"
            android:layout_marginRight="0.0dip"
            android:layout_marginTop="0.0dip"
            android:background="#aaffffff" />

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="0.0dip"
            android:layout_weight="3.0"
            android:gravity="center_horizontal" >

            <LinearLayout
                android:id="@+id/leftmenu_yinanshoucang"
                android:layout_width="wrap_content"
                android:layout_height="fill_parent"
                android:layout_weight="1.0"
                android:clickable="true"
                android:gravity="center_vertical"
                android:orientation="vertical" >

                <ImageView
                    android:id="@id/imageView2"
                    android:layout_width="50.0dip"
                    android:layout_height="50.0dip"
                    android:layout_gravity="center"
                    android:src="@drawable/yunshi_menu_left_yinan_image" />

                <TextView
                    android:id="@id/textView2"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center_horizontal"
                    android:text="@string/yunshi_left_menu_ynsc"
                    android:textColor="@drawable/yunshi_menu_left_yanse_wenzi" />
            </LinearLayout>

            <View
                android:layout_width="1.0dip"
                android:layout_height="fill_parent"
                android:layout_marginLeft="0.0dip"
                android:layout_marginRight="0.0dip"
                android:layout_marginTop="0.0dip"
                android:background="#aaffffff" />

            <LinearLayout
                android:id="@+id/leftmenu_meiwenshoucang"
                android:layout_width="wrap_content"
                android:layout_height="fill_parent"
                android:layout_weight="1.0"
                android:clickable="true"
                android:gravity="center_vertical"
                android:orientation="vertical" >

                <ImageView
                    android:id="@id/imageView3"
                    android:layout_width="50.0dip"
                    android:layout_height="50.0dip"
                    android:layout_gravity="center"
                    android:src="@drawable/yunshi_menu_left_meiwen_image" />

                <TextView
                    android:id="@id/textView3"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center_horizontal"
                    android:text="@string/yunshi_left_menu_mwsc"
                    android:textColor="@drawable/yunshi_menu_left_yanse_wenzi" />
            </LinearLayout>
        </LinearLayout>

        <View
            android:layout_width="fill_parent"
            android:layout_height="1.0dip"
            android:layout_marginLeft="0.0dip"
            android:layout_marginRight="0.0dip"
            android:layout_marginTop="0.0dip"
            android:background="#aaffffff" />

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="0.0dip"
            android:layout_weight="3.0"
            android:gravity="center_horizontal" >

            <LinearLayout
                android:id="@+id/leftmenu_jianchagengxin"
                android:layout_width="wrap_content"
                android:layout_height="fill_parent"
                android:layout_weight="1.0"
                android:clickable="true"
                android:gravity="center_vertical"
                android:orientation="vertical" >

                <ImageView
                    android:id="@id/imageView4"
                    android:layout_width="50.0dip"
                    android:layout_height="50.0dip"
                    android:layout_gravity="center"
                    android:src="@drawable/yunshi_menu_left_gengxin_image" />

                <TextView
                    android:id="@id/textView4"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center_horizontal"
                    android:text="@string/yunshi_left_menu_jcgx"
                    android:textColor="@drawable/yunshi_menu_left_yanse_wenzi" />
            </LinearLayout>

            <View
                android:layout_width="1.0dip"
                android:layout_height="fill_parent"
                android:layout_marginLeft="0.0dip"
                android:layout_marginRight="0.0dip"
                android:layout_marginTop="0.0dip"
                android:background="#aaffffff" />

            <LinearLayout
                android:id="@+id/leftmenu_yijianfankui"
                android:layout_width="wrap_content"
                android:layout_height="fill_parent"
                android:layout_weight="1.0"
                android:clickable="true"
                android:gravity="center_vertical"
                android:orientation="vertical" >

                <ImageView
                    android:id="@id/imageView5"
                    android:layout_width="50.0dip"
                    android:layout_height="50.0dip"
                    android:layout_gravity="center"
                    android:src="@drawable/yunshi_menu_left_fankui_image" />

                <TextView
                    android:id="@id/textView5"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center_horizontal"
                    android:text="@string/yunshi_left_menu_yjfk"
                    android:textColor="@drawable/yunshi_menu_left_yanse_wenzi" />
            </LinearLayout>
        </LinearLayout>

        <View
            android:layout_width="fill_parent"
            android:layout_height="1.0dip"
            android:layout_marginLeft="0.0dip"
            android:layout_marginRight="0.0dip"
            android:layout_marginTop="0.0dip"
            android:background="#aaffffff" />

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="0.0dip"
            android:layout_weight="3.0"
            android:gravity="center_horizontal" >

            <LinearLayout
                android:id="@+id/leftmenu_guanyuwomen"
                android:layout_width="wrap_content"
                android:layout_height="fill_parent"
                android:layout_weight="1.0"
                android:clickable="true"
                android:gravity="center_vertical"
                android:orientation="vertical" >

                <ImageView
                    android:id="@id/imageView6"
                    android:layout_width="50.0dip"
                    android:layout_height="50.0dip"
                    android:layout_gravity="center"
                    android:src="@drawable/yunshi_menu_left_guanyu_image" />

                <TextView
                    android:id="@id/textView6"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center_horizontal"
                    android:gravity="center_vertical"
                    android:text="@string/yunshi_left_menu_gywm"
                    android:textColor="@drawable/yunshi_menu_left_yanse_wenzi" />
            </LinearLayout>

            <View
                android:layout_width="1.0dip"
                android:layout_height="fill_parent"
                android:layout_marginLeft="0.0dip"
                android:layout_marginRight="0.0dip"
                android:layout_marginTop="0.0dip"
                android:background="#aaffffff" />

            <LinearLayout
                android:id="@+id/leftmenu_xitongshezhi"
                android:layout_width="wrap_content"
                android:layout_height="fill_parent"
                android:layout_weight="1.0"
                android:clickable="true"
                android:gravity="center_vertical"
                android:orientation="vertical" >

                <ImageView
                    android:id="@id/imageView7"
                    android:layout_width="50.0dip"
                    android:layout_height="50.0dip"
                    android:layout_gravity="center"
                    android:src="@drawable/yunshi_menu_left_shezhi_image" />

                <TextView
                    android:id="@id/textView7"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center_horizontal"
                    android:text="@string/yunshi_left_menu_xtsz"
                    android:textColor="@drawable/yunshi_menu_left_yanse_wenzi" />
            </LinearLayout>
        </LinearLayout>
    </LinearLayout>

</FrameLayout>

3、代码初始化

//屏幕宽度  计算阴影 slidingmenu出多少时使用
    private void SlidingMenu() {
        DisplayMetrics localDisplayMetrics = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(localDisplayMetrics);
        this.vWidth = localDisplayMetrics.widthPixels;
    }

    private void initSlidingMenu() {
        this.menu = new SlidingMenu(this);
        // 设置侧滑栏菜单位置,这里在左边。拉动菜单时,会从左边弹出
        this.menu.setMode(SlidingMenu.LEFT_RIGHT);
        // 设置触摸的范围,这里设置全屏
        this.menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
        // 设置阴影的宽度,查看上面第二张效果图,靠右边的位置,有一个阴影过渡。就是这个东西
        this.menu.setShadowWidthRes(R.dimen.shadow_width);
        // 这里是阴影效果,可以设置图片或者一个颜色过渡
        this.menu.setShadowDrawable(R.drawable.yunshi_menu_right_shadow);
        // 设置后面间距,侧滑栏和原来界面间距
        this.menu.setBehindOffsetRes(R.dimen.slidingmenu_offset);
        this.menu.setBehindWidth((int) (0.75D * this.vWidth));
        // 边框的角度,这里指边界地方
        this.menu.setFadeDegree(0.35F);
        // 侧滑栏的布局文件
        View view= LayoutInflater.from(this).inflate(R.layout.yunshi_menu_frame_left, null);
        view.setBackground(Constants.getleftdrawable(this));
        this.menu.setMenu(view);

        //this.menu.setSecondaryShadowDrawable(R.drawable.yunshi_menu_right_shadow);
        View view2= LayoutInflater.from(this).inflate(R.layout.yunshi_menu_frame_right, null);
        view2.setBackground(Constants.getrightdrawable(this));
        this.menu.setSecondaryMenu(view2);

        // 把侧滑栏关联到当前的Activity
        this.menu.attachToActivity(this, 1);

    }

4、代码控制——findview(),Listener, initonclick()

private void findView() {
        //...
        // 工具侧边栏
        jinritianqi = (LinearLayout) findViewById(R.id.menuright_jinritianqi);
        shenghuozhishu = (LinearLayout) findViewById(R.id.menuright_shenghuozhishu);
        tianqiqushi = (LinearLayout) findViewById(R.id.menuright_tianqiqushi);
        hunpeiceshi = (LinearLayout) findViewById(R.id.menuright_hunpeiceshi);
       //···
}

private OnClickListener listener = new OnClickListener() {

        @Override
        public void onClick(View arg0) {
            if (!ButtonUtil.isFastDoubleClick(arg0.getId())) {
                switch (arg0.getId()) {
                case R.id.menuright_jinritianqi:
                    // myapplicationintent=new Intent(MainTabActivity.this,
                    // cls);
                    Constants.ShowCodingDialog(YunShiActivity.this);
                    break;
                //、、、
            }

/**
     * 设置点击函数
     */
    private void initonclick() {
        //、、、
        jinritianqi.setOnClickListener(listener);
        shenghuozhishu.setOnClickListener(listener);
        tianqiqushi.setOnClickListener(listener);
        hunpeiceshi.setOnClickListener(listener);
        shengxiaoduiduipeng.setOnClickListener(listener);
        shengxiaoyangsheng.setOnClickListener(listener);
        shengxiaoyuncheng.setOnClickListener(listener);
        xingzuoxingge.setOnClickListener(listener);
        //、、、
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值