Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> android 通用菜單欄實現(一)

android 通用菜單欄實現(一)

日期:2017/2/23 16:57:31      編輯:關於Android編程

一、前言介紹

直奔主題啦,很多Android app都有菜單欄,菜單欄除了背景圖片、圖標的不同外,布局基本一致。大致可以分為三部分:菜單欄的左側區域、菜單欄中間區域、菜單欄右側區域。

為了考慮代碼的重用性,本文將給大家講解通用菜單欄的實現方式。示例中的代碼,大家稍微變通,可以滿足大部分軟件開發需要。

二、示例截圖

我的一貫習慣,有圖有真相。下面先看下通用菜單欄的截圖:

\

三、實現介紹

3.1菜單欄布局文件:title_tZ喎?/kf/ware/vc/" target="_blank" class="keylink">vcF92aWV3LnhtbCA8L2gzPgo8cD48L3A+CjxwcmUgY2xhc3M9"brush:java;">

3.2 MainActivity頁面布局文件:activity_main.xml



    
    
    
    




3.3java代碼部分

提到java代碼部分,先看通用菜單欄代碼設計類圖,如下:

\

類圖說明:本Demo將菜單欄的左側區域(mLeftView)、中間區域(mMidView)、右側區域(mRightView)成員聲明為protected,有違反代碼封裝性,各位可以下載Demo自行修改為private,並提供對外接口。本Demo主要用意方便子類訪問、提供訪問速度。

BaseActivity.java 代碼如下:

package com.example.titledemo;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

public abstract class BaseActivity extends Activity implements OnClickListener {

	protected View mTitleView;
	protected ImageView mLeftView;// 左側按鈕
	protected TextView mMidView;// 中間文本
	protected ImageView mRightView;// 右側按鈕

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);

		// 設置標題欄
		requestWindowFeature(Window.FEATURE_NO_TITLE);

		initView(savedInstanceState);
	}

	@Override
	public void onClick(View v) {
		// TODO Auto-generated method stub
		switch (v.getId()) {
		case R.id.left_btn: {
			onClickLeftBtn();
			break;
		}
		case R.id.right_btn: {
			onClickRigthBtn();
			break;
		}
		default: {
			break;
		}
		}
	}

	/**
	 * 初始化菜單欄
	 */
	protected void initTitleBar() {
		mTitleView = findViewById(R.id.title_bar);
		if (mTitleView != null) {
			mTitleView.setVisibility(View.VISIBLE);
			mLeftView = (ImageView) findViewById(R.id.left_btn);
			mLeftView.setOnClickListener(this);
			mMidView = (TextView) findViewById(R.id.mid_txt);
			mRightView = (ImageView) findViewById(R.id.right_btn);
			mRightView.setOnClickListener(this);
		}
	}

	/**
	 * 設置中間文本
	 */
	protected void setMidTxt(String strTxt) {
		if (mMidView != null) {
			mMidView.setText(strTxt);
		}
	}

	/**
	 * 初始化頁面
	 * @param savedInstanceState
	 */
	protected abstract void initView(Bundle savedInstanceState);
	
	/**
	 * 單擊菜單欄左側按鈕,響應處理函數,子類可繼承實現自己的處理方式
	 */
	protected abstract void onClickLeftBtn();
	protected abstract void onClickRigthBtn();
}

MainActivity.java 代碼如下:

package com.example.titledemo;

import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.Toast;

public class MainActivity extends BaseActivity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
	}
	
	
	@Override
	protected void initView(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		
		setContentView(R.layout.activity_main);
		
		//設置菜單欄
		initTitleBar();
		
		//設置菜單中間文本值
		setMidTxt(getResources().getString(R.string.app_name));
	}


	@Override
	protected void onClickLeftBtn() {
		// TODO Auto-generated method stub
		Toast.makeText(this, "點擊了菜單左側按鈕", Toast.LENGTH_SHORT).show();
	}


	@Override
	protected void onClickRigthBtn() {
		// TODO Auto-generated method stub
		Toast.makeText(this, "點擊了菜單右側按鈕", Toast.LENGTH_SHORT).show();
	}

}


四、示例下載

以下為Demo示例代碼下載路徑,http://download.csdn.net/detail/improveyourself/7505935

ps:如果各位有更好的實現方式,可以給我留言,在此先感謝各位。




  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved