Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 關於android開發 >> android-oldman之TitleBar,android-oldman

android-oldman之TitleBar,android-oldman

編輯:關於android開發

android-oldman之TitleBar,android-oldman


  隨著大眾口味的不斷提高,對app要的開發的要求也不斷提高,開發人員們要在app上展示的東西安也越來越多,android早期的一些控件慢慢的不不能滿足開發的要求了,比如TitleBar的應用的就沒有原來的那麼多了,後來,谷歌推出了ActionBar,再後來又推出了ToolBar.來滿足日益增加的開發需求。

  本文還是為了復習原來的一些技術,至於新的技術,其實道理都是一個樣的,掌握一些關鍵的地方,很容易就弄明白。

  下面,我們說一下,如何自定義一個TitleBar,來實現一些功能:1.可以在任一要用到此統一樣式的TitleBar的Activity中,設置TitleBar了不同標題。2.在不同標題中,依據需求,顯示後退按鈕。3.在不同activity中,依據需求,設置titleBar左側展示圖片,文字,並實現點擊執行動作的功能。

  最終要實現的樣示:

  特點:把TitleBarActiviti.class放在一個util文件夾中,哪裡用到,直接在個xml布局文件裡如本類中一樣引用(像用TextView一樣去用就行了。)。可以設置左側後退不顯示,右側刷新不顯示。至於titleBar的樣式,大家完全可以自己設置。

   1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.com/tools" 3 android:layout_width="match_parent" 4 android:layout_height="48dp" 5 android:gravity="center_horizontal" 6 android:background="#ffffff"> 7 8 <View 9 android:id="@+id/view_line" 10 android:layout_width="match_parent" 11 android:layout_height="1dp" 12 android:layout_alignParentBottom="true" 13 android:background="#0000ff" /> 14 15 <RelativeLayout 16 android:id="@+id/rel_titlebar" 17 android:layout_width="match_parent" 18 android:layout_height="match_parent" > 19 20 <TextView 21 android:id="@+id/tv_back" 22 android:layout_width="45dp" 23 android:layout_height="match_parent" 24 android:layout_alignParentLeft="true" 25 android:background="#66ff0000" 26 android:gravity="center" 27 android:focusable="true" 28 android:clickable="true" 29 android:text="後退" 30 android:visibility="invisible" /> 31 32 <View 33 android:id="@+id/view_left" 34 android:layout_width="1dp" 35 android:layout_height="match_parent" 36 android:layout_toRightOf="@id/tv_back" 37 android:background="#6600ff00" 38 android:visibility="invisible" /> 39 40 <TextView 41 android:id="@+id/tv_other" 42 android:layout_width="45dp" 43 android:layout_height="match_parent" 44 android:layout_alignParentRight="true" 45 android:background="#66ff0000" 46 android:gravity="center" 47 android:text="刷新" 48 android:focusable="true" 49 android:clickable="true" 50 android:visibility="invisible" /> 51 52 <View 53 android:id="@+id/view_right" 54 android:layout_width="1dp" 55 android:layout_height="match_parent" 56 android:layout_toLeftOf="@id/tv_other" 57 android:background="#6600ff00" 58 android:visibility="invisible" /> 59 60 <TextView 61 android:id="@+id/tv_title_name" 62 android:layout_width="45dp" 63 android:layout_height="match_parent" 64 android:layout_toLeftOf="@id/view_right" 65 android:layout_toRightOf="@id/view_left" 66 android:background="#6600ff00" 67 android:gravity="center" 68 android:text="Title_Name" /> 69 </RelativeLayout> 70 71 </RelativeLayout>

1 package com.example.ttilebardemo; 2 3 import android.app.Activity; 4 import android.content.Context; 5 import android.graphics.Color; 6 import android.util.AttributeSet; 7 import android.view.LayoutInflater; 8 import android.view.View; 9 import android.view.View.OnClickListener; 10 import android.widget.RelativeLayout; 11 import android.widget.TextView; 12 import android.widget.Toast; 13 14 public class TitleBarActivity extends RelativeLayout implements OnClickListener { 15 16 private Context mContext; 17 private View left, bottom, right; 18 private TextView backTextView, titleName, refersh; 19 private OnClickListener onClickListener; 20 private boolean canBack = false; 21 22 public TitleBarActivity(Context context) { 23 this(context, null); 24 25 } 26 27 public TitleBarActivity(Context context, AttributeSet attr) { 28 super(context, attr); 29 mContext = context; 30 init(); 31 } 32 33 private void init() { 34 LayoutInflater.from(mContext).inflate(R.layout.activity_titlebar, this, true); 35 // 初始化view 36 left = findViewById(R.id.view_left); 37 bottom = findViewById(R.id.view_line); 38 right = findViewById(R.id.view_right); 39 // 初始化textview 40 backTextView = (TextView) findViewById(R.id.tv_back); 41 backTextView.setOnClickListener(this); 42 titleName = (TextView) findViewById(R.id.tv_title_name); 43 refersh = (TextView) findViewById(R.id.tv_other); 44 45 } 46 47 /** 48 * 設置titleBar的名字 49 */ 50 public void setTitleName(String name) { 51 titleName.setText(name); 52 } 53 54 /** 55 * 設置titleBar左側可見性 56 */ 57 public void setBackVisible() { 58 backTextView.setVisibility(View.VISIBLE); 59 left.setVisibility(View.VISIBLE); 60 61 } 62 63 64 /** 65 * 設置右側字體可見 66 */ 67 public void setRefeshVisible() { 68 refersh.setVisibility(View.VISIBLE); 69 right.setVisibility(View.VISIBLE); 70 } 71 /** 72 * 設置左側刷新的監聽 73 */ 74 public void setRefreshListener(OnClickListener onRefresh , boolean canBack){ 75 refersh.setOnClickListener(onRefresh); 76 this.canBack = canBack; 77 } 78 79 80 /** 81 * 設左邊的按鈕的點擊事件。 82 */ 83 84 @Override 85 public void onClick(View v) { 86 if(v.getId() == R.id.tv_back && backTextView.isShown() && canBack){ 87 backTextView.setBackgroundColor(Color.GREEN); 88 } 89 90 } 91 92 }


好了,titleBar已經定義完成,下面就開始 使用了。

三、在使用類的xml布局文件中引用Titlebar

activity_main.xml

 1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2     xmlns:tools="http://schemas.android.com/tools"
 3     android:layout_width="match_parent"
 4     android:layout_height="match_parent"
 5     android:gravity="center_horizontal"
 6     android:background="#e7e7e7" >
 7 
 8     <com.example.ttilebardemo.TitleBarActivity
 9         android:id="@+id/title_bar"
10         android:layout_width="match_parent"
11         android:layout_height="wrap_content"
12         >
13     </com.example.ttilebardemo.TitleBarActivity>
14 
15     <TextView
16         android:id="@+id/tv_haha"
17         android:layout_width="match_parent"
18         android:layout_height="wrap_content"
19         android:layout_marginTop="50dp"
20         android:gravity="center"
21         android:layout_below="@id/title_bar"
22         android:text="你好,titleBar" />
23 
24 </RelativeLayout>

四、在代碼中對Titlebar依據需求進行編寫。

 1 package com.example.ttilebardemo;
 2 
 3 import android.annotation.SuppressLint;
 4 import android.app.Activity;
 5 import android.os.Bundle;
 6 import android.util.Log;
 7 import android.view.Menu;
 8 import android.view.MenuItem;
 9 import android.view.View;
10 import android.view.View.OnClickListener;
11 import android.widget.TextView;
12 import android.widget.Toast;
13 
14 public class MainActivity extends Activity {
15     private TextView tvHa;
16     @Override
17     protected void onCreate(Bundle savedInstanceState) {
18         super.onCreate(savedInstanceState);
19         setContentView(R.layout.activity_main);
20         initView();
21     }
22 
23     private void initView() {
24         tvHa = (TextView) findViewById(R.id.tv_haha);
25         TitleBarActivity titleBar = (TitleBarActivity) findViewById(R.id.title_bar);
26         titleBar.setBackVisible();
27         titleBar.setTitleName("在窗口設置");
28         titleBar.setRefeshVisible();
29         
30         titleBar.setRefreshListener(new OnClickListener() {
31             
32             public void onClick(View v) {
33                 Log.d("引用頁面::::::", "kwg kwg ........");
34             }
35         },true);
36     }
37 }

好了,就這樣吧。

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