Android Fragment解析及UI底部導覽列執行個體

來源:互聯網
上載者:User

標籤:

import android.os.Bundle;import android.support.v4.app.FragmentActivity;import android.support.v4.app.FragmentManager;import android.support.v4.app.FragmentTransaction;import android.view.View;import android.view.View.OnClickListener;import android.widget.FrameLayout;import android.widget.ImageView;import android.widget.RelativeLayout;import android.widget.TextView;public class MainActivity extends FragmentActivity implements OnClickListener{    //定義3個Fragment的對象    private Fragment1 fg1;    private Fragment2 fg2;    private Fragment3 fg3;    //幀布局對象,就是用來存放Fragment的容器    private FrameLayout flayout;    //定義底部導覽列的三個布局  每個布局對應一個選項按鈕    private RelativeLayout course_layout;    private RelativeLayout found_layout;    private RelativeLayout settings_layout;    //定義底部導覽列中的ImageView與TextView    private ImageView course_image;    private ImageView found_image;    private ImageView settings_image;    private TextView course_text;    private TextView settings_text;    private TextView found_text;    //定義要用的顏色值    private int whirt = 0xFFFFFFFF;    private int gray = 0xFF7597B3;    private int blue =0xFF0AB2FB;    //定義FragmentManager對象    FragmentManager fManager;            @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        fManager = getSupportFragmentManager(); //擷取Manager以對fragment進行管理        initViews();  //初始化布局控制項  使代碼結構更為清晰    }            //完成組件的初始化    public void initViews()    {        course_image = (ImageView) findViewById(R.id.course_image);        found_image = (ImageView) findViewById(R.id.found_image);        settings_image = (ImageView) findViewById(R.id.setting_image);        course_text = (TextView) findViewById(R.id.course_text);        found_text = (TextView) findViewById(R.id.found_text);        settings_text = (TextView) findViewById(R.id.setting_text);        course_layout = (RelativeLayout) findViewById(R.id.course_layout);        found_layout = (RelativeLayout) findViewById(R.id.found_layout);        settings_layout = (RelativeLayout) findViewById(R.id.setting_layout);        course_layout.setOnClickListener(this);  //綁定監聽器        found_layout.setOnClickListener(this);         settings_layout.setOnClickListener(this);    }        //重寫onClick事件    @Override    public void onClick(View view) {        switch (view.getId()) {        case R.id.course_layout:            setChioceItem(0);            break;        case R.id.found_layout:            setChioceItem(1);            break;        case R.id.setting_layout:            setChioceItem(2);            break;        default:            break;        }            }            //定義一個選中一個item後的處理    public void setChioceItem(int index)    {        //重設選項+隱藏所有Fragment        FragmentTransaction transaction = fManager.beginTransaction();          clearChioce(); //每次擷取響應事件後都要初始化整個布局        hideFragments(transaction);        switch (index) {        case 0:            course_image.setImageResource(R.drawable.ic_tabbar_course_pressed);              course_text.setTextColor(blue);                        if (fg1 == null) {                  // 如果fg1為空白,則建立一個並添加到介面上    這段代碼是用來初始化建立fragment                 fg1 = new Fragment1();                  transaction.add(R.id.content, fg1);              } else {                  // 如果MessageFragment不為空白,則直接將它顯示出來                  transaction.show(fg1);              }              break;          case 1:            found_image.setImageResource(R.drawable.ic_tabbar_found_pressed);              found_text.setTextColor(blue);                        if (fg2 == null) {                  // 如果fg1為空白,則建立一個並添加到介面上                  fg2 = new Fragment2();                  transaction.add(R.id.content, fg2);              } else {                  // 如果MessageFragment不為空白,則直接將它顯示出來                  transaction.show(fg2);              }              break;                       case 2:            settings_image.setImageResource(R.drawable.ic_tabbar_settings_pressed);              settings_text.setTextColor(blue);                        if (fg3 == null) {                  // 如果fg1為空白,則建立一個並添加到介面上                  fg3 = new Fragment3();                  transaction.add(R.id.content, fg3);              } else {                  // 如果MessageFragment不為空白,則直接將它顯示出來                  transaction.show(fg3);              }              break;                         }        transaction.commit();//提交一個事務    }        //隱藏所有的Fragment,避免fragment混亂 如果沒有隱藏的話  運行後結果會出先點擊前一個選項無法正確顯示相應的布局    private void hideFragments(FragmentTransaction transaction) {          if (fg1 != null) {              transaction.hide(fg1);          }          if (fg2 != null) {              transaction.hide(fg2);          }          if (fg3 != null) {              transaction.hide(fg3);          }      }                  //定義一個重設所有選項的方法    public void clearChioce()    {        course_image.setImageResource(R.drawable.ic_tabbar_course_normal);        course_layout.setBackgroundColor(whirt);        course_text.setTextColor(gray);        found_image.setImageResource(R.drawable.ic_tabbar_found_normal);        found_layout.setBackgroundColor(whirt);        found_text.setTextColor(gray);        settings_image.setImageResource(R.drawable.ic_tabbar_settings_normal);        settings_layout.setBackgroundColor(whirt);        settings_text.setTextColor(gray);    }}
import android.os.Bundle;import android.support.v4.app.Fragment;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;public class Fragment1 extends Fragment {    @Override    public View onCreateView(LayoutInflater inflater, ViewGroup container,            Bundle savedInstanceState) {        View view = inflater.inflate(R.layout.fg1, container,false);        return view;    }}

 

Android Fragment解析及UI底部導覽列執行個體

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.