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

Android AndBase框架實(shí)現(xiàn)多功能標(biāo)題欄(一)

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

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

1.使用AndBase實(shí)現(xiàn)多功能標(biāo)題欄

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

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

public class MainActivity extends AbActivity

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

1.1 設(shè)置標(biāo)題欄的有無...

標(biāo)題欄的有無設(shè)置其實(shí)就是設(shè)置當(dāng)前的mAbTitleBar是否進(jìn)行顯示...通過調(diào)用SetVisiable函數(shù)來進(jìn)行相關(guān)的設(shè)置...

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

1.2 為標(biāo)題欄添加新的控件...

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

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

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

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

 }

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

1.3 操作欄變換...

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

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

1.4 標(biāo)題欄的下拉效果...

  標(biāo)題欄的下拉其實(shí)就是點(diǎn)擊標(biāo)題形成下拉菜單..每個(gè)下拉菜單都是一個(gè)子選項(xiàng)...通過這些子選項(xiàng)我們可以做更多的事情...效果如上...其實(shí)每一個(gè)這樣類似的菜單都是一個(gè)ListView..通過對ListView的每一個(gè)Item進(jìn)行初始化,那么也就自然而然的形成這樣的效果了...其實(shí)總體還是進(jìn)行動(dòng)態(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); //先獲取一個(gè)視圖..
   ListView popListView = (ListView) popView.findViewById(R.id.pop_list); //獲取ListView的ID..
   List<AbMenuItem> list = new ArrayList<AbMenuItem>(); //定義一個(gè)列表項(xiàng)...這個(gè)類只保存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); //定義一個(gè)適配器...
   popListView.setAdapter(mListPopAdapter); //為ListView設(shè)置一個(gè)適配器...
   
   mAbTitleBar.setTitleTextDropDown(popView); //設(shè)置TitleBar上的TextView被點(diǎn)擊的監(jiān)聽..
  }
 });

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

1.5 適配器...

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

/*
 * 
 * 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類中也就僅僅定義了一個(gè)TextView屬性...
 @Override
 public View getView(int position, View convertView, ViewGroup viewGroup) {

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

 static class ViewHolder {
 TextView itemText;
 }

}

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

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

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助。

相關(guān)文章

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

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

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

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

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

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

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

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

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

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

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

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

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

    android之datepicker控件的用法

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

    Android小程序?qū)崿F(xiàn)切換背景顏色

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

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

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

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

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

最新評論