編輯:關於Android編程
直奔主題啦,很多Android app都有菜單欄,菜單欄除了背景圖片、圖標的不同外,布局基本一致。大致可以分為三部分:菜單欄的左側區域、菜單欄中間區域、菜單欄右側區域。
為了考慮代碼的重用性,本文將給大家講解通用菜單欄的實現方式。示例中的代碼,大家稍微變通,可以滿足大部分軟件開發需要。
我的一貫習慣,有圖有真相。下面先看下通用菜單欄的截圖:

提到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();
}
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:如果各位有更好的實現方式,可以給我留言,在此先感謝各位。
Android自動提示文本框(AutoCompleteTextView)
自動提示文本框(AutoCompleteTextView)可以加強用戶體驗,縮短用戶的輸入時間(百度的搜索框就是這個效果)。 首先,在xml中定義AutoComplete
淺談AnDroidDraw+DroidDraw實現Android程序UI設計的分析說明
AnDroidDraw 是一個與 DroidDraw 集成的 Android 應用程序,它允許你從 DroidDraw 應用 程序下載你的 GUIs, 也允許你在一個 A
Android Context上下文理解
Android中有個我們熟悉又陌生的對象Context(上下文),當我們啟動Activity的時候需要上下文,當我們使用dialog的時候我們需要上下文,但是上下文對象到
Android基本控件復習筆記
短暫的暑假已經結束了,假期培訓正式開始。Androidmanifest.XML 清單文件es 資源文件Drawable 顏色改變Layout 布局的文件setConten