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