亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專(zhuān)欄INFORMATION COLUMN

《Android項(xiàng)目實(shí)戰(zhàn)-博學(xué)谷》底部導(dǎo)航欄

余學(xué)文 / 2476人閱讀

摘要:底部導(dǎo)航欄布局思路本項(xiàng)目的主界面設(shè)計(jì)了底部導(dǎo)航欄,為了方便后續(xù)布局的搭建,創(chuàng)建一個(gè)底部導(dǎo)航欄的框架,修改主界面布局為,利用包裹標(biāo)題欄與界面內(nèi)容,將各界面內(nèi)容設(shè)置為,再用一個(gè)包裹底部導(dǎo)航欄,在內(nèi)部用三個(gè)來(lái)顯示三個(gè)按鈕具體代碼如下限定大小

底部導(dǎo)航欄布局 思路

本項(xiàng)目的主界面設(shè)計(jì)了底部導(dǎo)航欄,為了方便后續(xù)布局的搭建,創(chuàng)建一個(gè)底部導(dǎo)航欄UI的框架,修改主界面布局為 RelativeLayout ,利用 LinearLayout 包裹標(biāo)題欄與界面內(nèi)容,將各界面內(nèi)容設(shè)置為 FrameLayout ,再用一個(gè) LinearLayout 包裹底部導(dǎo)航欄,在內(nèi)部用三個(gè) RelativeLayout 來(lái)顯示三個(gè)按鈕

具體代碼如下:

activity_main.xml



    

        

        

    

    

        

            

            
        

        

            

            
        

        

            

            
        

    



底部導(dǎo)航欄邏輯 思路

首先需要為三個(gè)按鈕添加監(jiān)聽(tīng)事件,然后根據(jù)所在界面的不同,導(dǎo)航欄中的按鈕和文字切換不同狀態(tài),在界面內(nèi)容也根據(jù)按鈕的選中狀態(tài)切換不同的界面

具體代碼如下:

MainActivity
package cn.edu.lt.android.boxueguapp;

import android.content.Context;
import android.content.SharedPreferences;
import android.graphics.Color;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    //界面內(nèi)容
    private FrameLayout mBodyLayout;
    //底部按鈕欄
    public LinearLayout mBottomLayout;
    //底部按鈕
    private View mCourseBtn;
    private View mExercisesBtn;
    private View mMyInfoBtn;
    private TextView tv_course;
    private TextView tv_exercises;
    private TextView tv_myInfo;
    private ImageView iv_course;
    private ImageView iv_exercises;
    private ImageView iv_myInfo;
    //標(biāo)題欄
    private TextView tv_back;
    private TextView tv_main_title;
    private RelativeLayout rl_title_bar;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        init();
        initBottomBar();
        setListener();
        setInitStatus();
    }

    /**
     * 設(shè)置初始選擇
     */
    private void setInitStatus() {
        clearBottomImageState();
        setSelectedStatus(0);
        createView(0);
    }

    /**
     * 為每個(gè)按鈕設(shè)置監(jiān)聽(tīng)方法
     */
    private void setListener() {
        for (int i = 0; i < mBottomLayout.getChildCount(); i++) {
            mBottomLayout.getChildAt(i).setOnClickListener(this);
        }
    }

    /**
     * 獲取底部導(dǎo)航欄上的控件
     */
    private void initBottomBar() {
        mBottomLayout = (LinearLayout) findViewById(R.id.main_bottom_bar);
        mCourseBtn = (RelativeLayout) findViewById(R.id.bottom_bar_course_btn);
        mExercisesBtn = (RelativeLayout) findViewById(R.id.bottom_bar_exercises_btn);
        mMyInfoBtn = (RelativeLayout) findViewById(R.id.bottom_bar_myinfo_btn);
        tv_course = (TextView) findViewById(R.id.bottom_bar_text_course);
        tv_exercises = (TextView) findViewById(R.id.bottom_bar_text_exercises);
        tv_myInfo = (TextView) findViewById(R.id.bottom_bar_text_myinfo);
        iv_course = (ImageView) findViewById(R.id.bottom_bar_image_course);
        iv_exercises = (ImageView) findViewById(R.id.bottom_bar_image_exercises);
        iv_myInfo = (ImageView) findViewById(R.id.bottom_bar_image_myinfo);
    }

    /**
     * 獲取界面上的UI控件
     */
    private void init() {
        tv_back = (TextView) findViewById(R.id.tv_back);
        tv_main_title = (TextView) findViewById(R.id.tv_main_title);
        tv_main_title.setText("博學(xué)谷課程");
        rl_title_bar = (RelativeLayout) findViewById(R.id.title_bar);
        rl_title_bar.setBackgroundColor(Color.parseColor("#30B4FF"));
        tv_back.setVisibility(View.GONE);//不顯示返回按鈕
        initBodyLayout();

    }

    /**
     * 界面內(nèi)容
     */
    private void initBodyLayout() {
        mBodyLayout = (FrameLayout) findViewById(R.id.main_body);
    }

    /**
     * 控件的點(diǎn)擊事件
     * @param v
     */
    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            //課程的點(diǎn)擊事件
            case R.id.bottom_bar_course_btn:
                clearBottomImageState();
                selectDisplayView(0);
                break;
            //習(xí)題的點(diǎn)擊事件
            case R.id.bottom_bar_exercises_btn:
                clearBottomImageState();
                selectDisplayView(1);
                break;
            //我的點(diǎn)擊事件
            case R.id.bottom_bar_myinfo_btn:
                clearBottomImageState();
                selectDisplayView(2);
                break;
            default:
                break;
        }
    }

    /**
     * 顯示對(duì)應(yīng)的頁(yè)面
     * @param i
     */
    private void selectDisplayView(int i) {
        removeAllView();
        createView(i);
        setSelectedStatus(i);
    }

    /**
     * 設(shè)置底部按鈕選中狀態(tài)
     * @param i
     */
    private void setSelectedStatus(int i) {
        switch (i){
            case 0:
                mCourseBtn.setSelected(true);
                iv_course.setImageResource(R.drawable.main_course_icon_selected);
                tv_course.setTextColor(Color.parseColor("#0097F7"));
                rl_title_bar.setVisibility(View.VISIBLE);
                tv_main_title.setText("博學(xué)谷課程");
                break;
            case 1:
                mExercisesBtn.setSelected(true);
                iv_exercises.setImageResource(R.drawable.main_exercises_icon_selected);
                tv_exercises.setTextColor(Color.parseColor("#0097F7"));
                rl_title_bar.setVisibility(View.VISIBLE);
                tv_main_title.setText("博學(xué)谷習(xí)題");
                break;
            case 2:
                mMyInfoBtn.setSelected(true);
                iv_myInfo.setImageResource(R.drawable.main_my_icon_selected);
                tv_myInfo.setTextColor(Color.parseColor("#0097F7"));
                rl_title_bar.setVisibility(View.VISIBLE);
                tv_main_title.setText("我");
                break;
        }
    }



    /**
     * 選擇視圖
     * @param viewIndex
     */
    private void createView(int viewIndex) {
        switch (viewIndex){
            case 0:
                //TODO:課程界面
                break;
            case 1:
                //習(xí)題界面
                break;
            case 2:
                //我的界面
                break;
        }
    }

    /**
     * 移除不需要的視圖
     */
    private void removeAllView() {
        for (int i = 0;i2000){//導(dǎo)入java.lang的包
                Toast.makeText(this,"再按一次退出博學(xué)谷",Toast.LENGTH_LONG).show();
                exitTime = System.currentTimeMillis();
            }else {
                MainActivity.this.finish();
                if (readLoginStatus()){
                    //如果退出此應(yīng)用時(shí)是登錄狀態(tài),則需要清除登錄狀態(tài),同時(shí)需清除登錄時(shí)的用戶名
                    clearLoginStatus();
                }
                System.exit(0);
            }
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }

    /**
     * 清除SharedPreferences中的登錄狀態(tài)
     */
    private void clearLoginStatus() {
        SharedPreferences sp = getSharedPreferences("loginInfo", Context.MODE_PRIVATE);
        SharedPreferences.Editor editor = sp.edit();//獲取編輯器
        editor.putBoolean("isLogin", false);//清除登錄狀態(tài)
        editor.putString("loginUserName", "");//清除登錄時(shí)的用戶名
        editor.commit();//提交修改
    }

    /**
     * 獲取SharedPreferences中的登錄狀態(tài)
     * @return
     */
    private boolean readLoginStatus() {
        SharedPreferences sp = getSharedPreferences("loginInfo", Context.MODE_PRIVATE);
        boolean isLogin = sp.getBoolean("isLogin", false);
        return isLogin;
    }
}
運(yùn)行效果

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/68116.html

相關(guān)文章

  • Android項(xiàng)目實(shí)戰(zhàn)-博學(xué)》我的模塊

    摘要:我的模塊界面思路由于此界面只是主界面中的一部分,所以無(wú)需創(chuàng)建一個(gè)新的,只需要在目錄下新建一個(gè)布局即可,同理導(dǎo)入圖片至目錄下具體代碼如下點(diǎn)擊登錄分割線效果播放記錄設(shè)置工具類(lèi)思路由于本項(xiàng)目在保存和獲取數(shù)據(jù)時(shí)會(huì)多次用到用戶名,因此創(chuàng)建一 我的模塊界面 思路 由于此界面只是主界面中的一部分,所以無(wú)需創(chuàng)建一個(gè)新的 Activity ,只需要在 layout 目錄下新建一個(gè)布局即可,同理導(dǎo)入圖片至...

    JohnLui 評(píng)論0 收藏0
  • Android項(xiàng)目實(shí)戰(zhàn)-博學(xué)》設(shè)置部分

    摘要:設(shè)置界面思路設(shè)置界面有三個(gè)功能,分別為修改密碼設(shè)置密保和退出登錄。 設(shè)置界面 思路 設(shè)置界面有三個(gè)功能,分別為修改密碼、設(shè)置密保和退出登錄。創(chuàng)建 SettingActivity ,修改布局為 LinearLayout 具體代碼如下: activity_setting.xml ...

    twohappy 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<