欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android AndBase框架實現(xiàn)多功能標題欄(一)

 更新時間:2016年03月30日 16:09:38   投稿:lijiao  
這篇文章主要整理了Android AndBase框架學習筆記,本文主要使用AndBase實現(xiàn)多功能標題欄,感興趣的小伙伴們可以參考一下

本文是針對AndBase框架學習整理的第一篇筆記,想要了解AndBase框架的朋友可以閱讀本文,大家共同學習。

1.使用AndBase實現(xiàn)多功能標題欄

AndBase框架內部提供了許多的方式能夠使我們去設置一個更好的標題欄,進行動態(tài)的改變,而并非靜態(tài)的將標題欄界面寫死...能夠使得標題欄更加的美觀...總體就是動態(tài)的獲取布局然后通過對布局的操作來自定義一個良好的標題欄...

使用AndBase框架的時候我們的主函數(shù)就不是繼承于Acticity了,而是繼承于AbActivity,萬變不離其宗還是Activity...

public class MainActivity extends AbActivity

繼承了AbActivity這樣就使得自己的Activity擁有一個框架...我們就可以使用內部包含的一些變量...就拿我們的標題欄變量來說吧...mAbTitleBar就是內在的一個標題欄變量...凡是繼承了AbActivity的Activity就可以使用這個變量,這個變量會作為當前Activity中的標題欄變量..我們就直接可以對其進行一些相關屬性的設定..從而書寫我們自己的標題欄...

1.1 設置標題欄的有無...

標題欄的有無設置其實就是設置當前的mAbTitleBar是否進行顯示...通過調用SetVisiable函數(shù)來進行相關的設置...

public void setVisiable(boolean b){
 if(b){
  titleBar.setVisibility(View.VISIBLE); //設置標題欄顯示在視圖上..
 }else{
  titleBar.setVisibility(View.GONE);//設置標題欄不顯示在視圖上..
 }
}

1.2 為標題欄添加新的控件...

  無論是在標題欄還是Activity中如果想要動態(tài)的添加控件,那么必然是添加View的過程...添加View之前,我們需要把控件添加到View當中,然后再把View添加在Activity上,這樣就完成了動態(tài)添加視圖的效果...View其實只是一個空的架子,更形象的來說是一個沒有打起的氣球一樣..光有外殼,沒有東西,那么如果想要有東西,那么我們需要為其進行充氣,只有充了氣之后的View才是我們想要去進行加載的...否則是沒什么用的..

  充氣的過程就是使用LayoutInflater.inflater(R.layout.XXX,root);函數(shù)來完成的...對ListView使用熟悉的那么想必也就非常清楚這個過程了...使用ListView時,我們只是對ListView中的Item進行布局的書寫,但是絕對不會在布局中寫死Item布局中的東西..因為Item中的東西一般都是進行動態(tài)添加的...所以我們一般是獲取ListView的ID,然后對每一個Item進行動態(tài)的加載...這一般是對ListView進行操作...其實都一樣...添加視圖都是進行動態(tài)添加...添加了View之后,我們仍然可以通過獲取控件然后綁定監(jiān)聽,從而做更多的操作...

  這個函數(shù)是我自定義的一個函數(shù)...arg0和arg1是通過Inflater.inflate獲取到的視圖...

public void setRightview(int resid0,int resid1){
 ClearRightView(); 
 titleBar.addRightView(arg0); //為標題欄添加視圖...
 titleBar.addRightView(arg1); 
 moreview=(Button) arg0.findViewById(resid0);//通過當前視圖獲取控件...
 moreapp=(Button) arg1.findViewById(resid1);
 
 //通過獲取控件之后,設置相關監(jiān)聽,從而完成更多的操作...
 moreview.setOnClickListener(new View.OnClickListener() {
  
  @Override
  public void onClick(View v) {
  // TODO Auto-generated method stub
  Toast.makeText(context, "點擊", Toast.LENGTH_LONG).show();
  }
 });
 
 moreapp.setOnClickListener(new View.OnClickListener() {
  
  @Override
  public void onClick(View v) {
  // TODO Auto-generated method stub
  Toast.makeText(context, "繼續(xù)點擊", Toast.LENGTH_LONG).show();
  }
 });

 }

  這樣就完成了視圖的添加...其實標題欄的操作基本都是這個過程...最重要的還是需要清楚其中的函數(shù)到底怎么用,如何為標題欄設置相關的屬性,比如說背景顏色,標題欄的文本,標題欄的Logo以及一些相關屬性的設置,其實說白了就是把xml那種布局方式通過Java代碼來更加靈活的進行運用...可以使得布局上的控件更加的靈活...

1.3 操作欄變換...

  我們通過一個函數(shù)來看一看mAbTitleBar到底有哪些函數(shù)可以動態(tài)設置View視圖...這里是為了介紹一些相關的函數(shù)的應用...并沒有完整的代碼過程...源代碼過程我會最后進行給出..

btn5.setOnClickListener(new View.OnClickListener() {
   
  @Override
  public void onClick(View v) {//以下函數(shù)的調用時不存在函數(shù)順序的問題的...不同的調用順序顯示的結果是一樣的,,,
  mAbTitleBar.setLogo(R.drawable.button_selector_delete); //為標題欄設置logo..
  mAbTitleBar.setLogo2(R.drawable.button_selector_app); //為標題欄設置第二個Logo..這個setLogo只有這兩個函數(shù)..沒有Logo3...如果想設置更多的Logo..只能去寫xml布局...
  mAbTitleBar.clearRightView(); //清除標題欄右邊的視圖..
  View rightViewOk = mInflater.inflate(R.layout.ok_btn, null); //為一個View視圖充氣...
  mAbTitleBar.addRightView(rightViewOk); //在標題欄右邊添加當前充氣后的視圖..
  mAbTitleBar.setTitleText("正在修改"); //設置標題欄的文字屬性..
  mAbTitleBar.setTitleBarBackground(R.drawable.top_bg2);//設置文字的背景..
  mAbTitleBar.setTitleBarGravity(Gravity.LEFT,Gravity.CENTER);//設置標題欄的對其方式...
  mAbTitleBar.setLogoOnClickListener(new OnClickListener() {
   //為Logo圖片設置監(jiān)聽...
   @Override
   public void onClick(View v) {
   //改變相關的屬性... mAbTitleBar.setTitleBarBackground(R.drawable.top_bg);
   mAbTitleBar.setTitleText("多功能標題欄");
   mAbTitleBar.clearRightView();
   mAbTitleBar.setLogo(R.drawable.button_selector_back);
   mAbTitleBar.setTitleBarGravity(Gravity.LEFT,Gravity.RIGHT);
   mAbTitleBar.setTitleTextMargin(20, 0, 0, 0);
   mAbTitleBar.getLogoView2().setVisibility(View.GONE); //設置可見性...
   mAbTitleBar.setLogoOnClickListener(new OnClickListener() {
    
    @Override
    public void onClick(View v) {
    finish();
    }
   });
   }
  });
  }
 }); 

1.4 標題欄的下拉效果...

  標題欄的下拉其實就是點擊標題形成下拉菜單..每個下拉菜單都是一個子選項...通過這些子選項我們可以做更多的事情...效果如上...其實每一個這樣類似的菜單都是一個ListView..通過對ListView的每一個Item進行初始化,那么也就自然而然的形成這樣的效果了...其實總體還是進行動態(tài)布局...

btn7.setOnClickListener(new View.OnClickListener() {

  @Override
  public void onClick(View v) {
   mAbTitleBar.setTitleTextBackgroundResource(R.drawable.drop_down_title_btn);
   View popView = mInflater.inflate(R.layout.list_pop, null); //先獲取一個視圖..
   ListView popListView = (ListView) popView.findViewById(R.id.pop_list); //獲取ListView的ID..
   List<AbMenuItem> list = new ArrayList<AbMenuItem>(); //定義一個列表項...這個類只保存ID和Text屬性..
   list.add(new AbMenuItem("蔡文姬")); 
   list.add(new AbMenuItem("貂蟬"));
   list.add(new AbMenuItem("紫罌粟"));
   list.add(new AbMenuItem("孫尚香"));
   ListPopAdapter mListPopAdapter = new ListPopAdapter(TitleBarActivity.this, list,R.layout.list_pop_item); //定義一個適配器...
   popListView.setAdapter(mListPopAdapter); //為ListView設置一個適配器...
   
   mAbTitleBar.setTitleTextDropDown(popView); //設置TitleBar上的TextView被點擊的監(jiān)聽..
  }
 });

  通過這樣的設置,很容易形成這樣的效果..這里使用了AbMenuItem類...通過源碼我們可以知道這個類有兩個構造函數(shù),一個是對int ID 和String Text兩個屬性進行保存,一個則是僅僅保存一個String Text屬性...這樣也就使得ListView顯示的東西比較的簡單...并且一般這種小型的ListView一般也就一個Text值..因此使用AbMenuItem還是比較方便的...這樣也就完成了一個下拉菜單...

1.5 適配器...

  再簡單的說一下適配器這個東西吧...適配器主要還是用于為ListView中的每一個Item進行動態(tài)的設置,使得ListView的布局能夠更加的靈活...說白了就是定義了一種樣式,ListView中的每一個Item都需要按照這個樣式來進行顯示...非常的簡單...

/*
 * 
 * CopyRight@ By Darker 2015-10-30
 * 多功能菜單...
 * 
 * */

package com.example.andbasetitlebar;


import java.util.List;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;

import com.ab.global.AbMenuItem;


public class Adapter extends BaseAdapter { //繼承BaseAdapter

 private Context context;

 private List<AbMenuItem> list;

 private int itemResource;
 
 public Adapter(Context context, List<AbMenuItem> list,int itemResource) {
 this.context = context;
 this.list = list;
 this.itemResource = itemResource;
 }

 @Override
 public int getCount() {
 return list.size();
 }

 @Override
 public Object getItem(int position) {

 return list.get(position);
 }

 @Override
 public long getItemId(int position) {
 return position;
 }
 //由于我們的ListView中的Item顯示的方式都非常的簡單,因此ViewHolder類中也就僅僅定義了一個TextView屬性...
 @Override
 public View getView(int position, View convertView, ViewGroup viewGroup) {

 ViewHolder holder;
  /*這個判斷其實是為了復用而定義的...因為ListView都是動態(tài)進行加載的..  *如果ListView中的Item超過了屏幕的大小,那么勢必就需要進行下拉...  *下拉就代表原來的那些ListView就需要被銷毀...
   * 那么總不能每一次滑動我們都新建立一個ViewHolder對象..我們可以把這些被銷毀的ViewHolder進行復用...
   * 有了復用之后,再次滑動的時候ViewHolder會自動調用那些被銷毀掉的進行復用...從而使得資源得到重新加載...
   * 說白了就是提高了復用性...
   */ 
 if (convertView == null) {
  convertView = LayoutInflater.from(context).inflate(itemResource, null); //定義一個視圖對象View...
  holder = new ViewHolder();
  holder.itemText = (TextView) convertView.findViewById(R.id.pop_item); //在當前的View中獲取ListView的ID..
  convertView.setTag(holder);//設置標志..
 } else {
  holder = (ViewHolder) convertView.getTag();//這里可以直接獲取標志,對holder進行復用,減少了內存的分配和開銷...
 }
 AbMenuItem item = list.get(position);
 holder.itemText.setText(item.getText()); //為每一個Item中的TextView設置值...
 
 return convertView;
 }

 static class ViewHolder {
 TextView itemText;
 }

}

實現(xiàn)多功能菜單其實非常的簡單,大部分的函數(shù)都是寫好的函數(shù),我們只需要調用就可以設置標題欄的相關樣式...實現(xiàn)多功能的菜單...最后附加上我自己書寫的代碼..還是完整的代碼能夠使我們進步的更加迅速...從而可以理解其中的調用過程和原理。、

源碼下載:Android AndBase框架實現(xiàn)多功能標題欄

以上就是本文的全部內容,希望對大家的學習有所幫助。

相關文章

  • Android neon 優(yōu)化實踐示例

    Android neon 優(yōu)化實踐示例

    這篇文章主要為大家介紹了Android neon 優(yōu)化實踐示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-09-09
  • Flutter沉浸式狀態(tài)欄/AppBar導航欄/仿咸魚底部凸起導航欄效果

    Flutter沉浸式狀態(tài)欄/AppBar導航欄/仿咸魚底部凸起導航欄效果

    這篇文章主要介紹了Flutter沉浸式狀態(tài)欄/AppBar導航欄/仿咸魚底部凸起導航欄效果,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-04-04
  • Android編程實現(xiàn)震動與振鈴的方法詳解

    Android編程實現(xiàn)震動與振鈴的方法詳解

    這篇文章主要介紹了Android編程實現(xiàn)震動與振鈴的方法,結合實例形式分析了Android實現(xiàn)震動與振鈴的Vibrator類及MediaPlayer類相關使用技巧,需要的朋友可以參考下
    2018-03-03
  • Android開發(fā)實現(xiàn)Launcher3應用列表修改透明背景的方法

    Android開發(fā)實現(xiàn)Launcher3應用列表修改透明背景的方法

    這篇文章主要介紹了Android開發(fā)實現(xiàn)Launcher3應用列表修改透明背景的方法,結合實例形式分析了Launcher3相關配置文件與功能函數(shù)修改設置操作技巧,需要的朋友可以參考下
    2017-11-11
  • Android實現(xiàn)超級棒的沉浸式體驗教程

    Android實現(xiàn)超級棒的沉浸式體驗教程

    這篇文章主要給大家介紹了關于Android如何實現(xiàn)超級棒的沉浸式體驗的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用Android具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-11-11
  • Android編程自定義菜單實現(xiàn)方法詳解

    Android編程自定義菜單實現(xiàn)方法詳解

    這篇文章主要介紹了Android編程自定義菜單實現(xiàn)方法,結合實例形式分析了Android自定義菜單的布局、動畫及功能相關實現(xiàn)技巧與注意事項,需要的朋友可以參考下
    2017-02-02
  • android之datepicker控件的用法

    android之datepicker控件的用法

    下面小編就為大家?guī)硪黄猘ndroid之datepicker控件的用法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-09-09
  • Android小程序實現(xiàn)切換背景顏色

    Android小程序實現(xiàn)切換背景顏色

    這篇文章主要介紹了Android小程序實現(xiàn)切換背景顏色,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-05-05
  • Android實現(xiàn)自定義手勢和識別手勢的功能

    Android實現(xiàn)自定義手勢和識別手勢的功能

    這篇文章主要介紹了Android實現(xiàn)自定義手勢和識別手勢的功能,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-10-10
  • 多語言切換在Androidx失效的踩坑解決記錄

    多語言切換在Androidx失效的踩坑解決記錄

    這篇文章主要為大家介紹了多語言切換在Androidx失效的踩坑解決記錄詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-01-01

最新評論