Android AndrBase 프레임 워 크 에서 다기 능 제목 표시 줄 구현(1)

본 고 는 앤 드 베이스 프레임 워 크 학습 정 리 를 위 한 첫 번 째 노트 로 앤 드 베이스 프레임 워 크 를 알 고 싶 은 분 들 은 본문 을 읽 고 함께 공부 하 실 수 있 습 니 다.
1.AndBase 를 사용 하여 다기 능 제목 표시 줄 구현
AndBase 프레임 워 크 내부 에서 더 좋 은 제목 표시 줄 을 설정 하고 동적 인 변 화 를 할 수 있 는 많은 방법 을 제공 합 니 다.정적 으로 제목 표시 줄 화면 을 죽 이 는 것 이 아니 라 제목 표시 줄 을 더욱 아름 답 게 할 수 있 습 니 다.전체적으로 동적 으로 구 조 를 가 져 온 다음 에 포 국 의 조작 을 통 해 좋 은 제목 표시 줄 을 사용자 정의 할 수 있 습 니 다.
AndBase 프레임 워 크 를 사용 할 때 우리 의 주 함 수 는 Activity 에 계승 되 는 것 이 아니 라 AbActivity 에 계승 되 는 것 입 니 다.그 종 류 를 떠 나 지 않 습 니 다.아니면 Activity...
public class MainActivity extends AbActivity
AbActivity 를 계승 하면 자신의 Activity 가 하나의 프레임 워 크 를 가지 게 됩 니 다.............................................................................이 변 수 는 현재 Activity 의 제목 표시 줄 변수 가 될 것 입 니 다.우 리 는 이 변 수 를 관련 속성 으로 설정 하여 우리 자신의 제목 표시 줄 을 쓸 수 있 습 니 다.
1.1 제목 표시 줄 의 유 무 설정...
제목 표시 줄 에 설정 이 있 는 지 없 는 지 는 현재 mAbTitleBar 가 표시 할 지 여 부 를 설정 하 는 것 입 니 다.SetVisiable 함 수 를 호출 하여 관련 설정 을...

public void setVisiable(boolean b){
 if(b){
  titleBar.setVisibility(View.VISIBLE); //           ..
 }else{
  titleBar.setVisibility(View.GONE);//            ..
 }
}
1.2 제목 표시 줄 에 새 컨트롤 추가...
  제목 표시 줄 이 든 Activity 든 동적 으로 컨트롤 을 추가 하려 면 반드시 View 를 추가 하 는 과정 입 니 다.View 를 추가 하기 전에 View 에 컨트롤 을 추가 한 다음 에 View 를 Activity 에 추가 해 야 합 니 다.그러면 동적 으로 보 기 를 추가 하 는 효 과 를 완성 할 수 있 습 니 다.View 는 사실 빈 선반 일 뿐 입 니 다.좀 더 형상 적 으로 는 못 치 는 풍선 처럼...껍데기 만 있 고,물건 이 없다 면,물건 이 있 으 려 면 바람 을 넣 어야 한다.바람 을 넣 은 뷰 만 이 우리 가 불 러 오고 싶 은 것 이다...그렇지 않 으 면 소 용이 없다.................................................
  바람 을 넣 는 과정 은 LayoutInflater.inflater(R.layot.XXX,root)를 사용 하 는 것 입 니 다.함수 로 완 성 된...ListView 에 익숙 한 것 을 사용 하면 이 과정 을 잘 알 수 있 을 것 입 니 다...ListView 를 사용 할 때 저 희 는 ListView 의 Item 에 대해 서 만 레이아웃 을 작성 하지만 레이아웃 에 죽은 Item 레이아웃 에 있 는 것 은 절대 쓰 지 않 습 니 다.Item 에 있 는 것 은 동적 으로 추 가 됩 니 다.그래서 저 희 는 보통 ListView 의 ID 를 가 져 옵 니 다.그리고 모든 Item 을 동적 으로 불 러 옵 니 다.이것 은 보통 ListView 를 조작 합 니 다.사실은 똑 같 습 니 다.보 기 를 추가 하 는 것 은 동적 으로 추 가 됩 니 다.View 를 추가 한 후에 도 저 희 는 컨트롤 을 가 져 와 감청 을 연결 하여 더 많은 작업 을 할 수 있 습 니 다.
  이 함 수 는 제 가 정의 한 함수 입 니 다.arg 0 과 arg 1 은 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);
 
 //        ,      ,         ...
 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, "    ", Toast.LENGTH_LONG).show();
  }
 });

 }

  이렇게 해서 보기 의 추가 가 완 료 됩 니 다...사실 제목 표시 줄 의 동작 은 기본적으로 이 과정 입 니 다.가장 중요 한 것 은 그 중의 함수 가 어떻게 사용 되 는 지,제목 표시 줄 에 관련 속성 을 어떻게 설정 하 는 지 알 아야 합 니 다.예 를 들 어 배경 색,제목 표시 줄 의 텍스트,제목 표시 줄 의 로고 와 관련 속성 설정 등 입 니 다.사실은 xml 같은 레이아웃 방식 을 자바 코드 를 통 해 더욱 유연 하 게 활용 하 는 것 입 니 다.레이아웃 상의 컨트롤 을 더욱 유연 하 게 할 수 있 습 니 다.
1.3 작업 표시 줄 변환...
  우 리 는 하나의 함 수 를 통 해 mAbTitleBar 에 어떤 함수 가 view 보 기 를 동적 으로 설정 할 수 있 는 지 살 펴 보 겠 습 니 다.여 기 는 관련 함수 의 응용 을 소개 하기 위해 서 입 니 다.완전한 코드 과정 이 없습니다.소스 코드 과정 은 제 가 마지막 으로 드 리 겠 습 니 다.

btn5.setOnClickListener(new View.OnClickListener() {
   
  @Override
  public void onClick(View v) {//                   ...                ,,,
  mAbTitleBar.setLogo(R.drawable.button_selector_delete); //      logo..
  mAbTitleBar.setLogo2(R.drawable.button_selector_app); //         Logo..  setLogo       ..  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      ...
   @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 을 초기 화 함으로써,그러면 자 연 스 럽 게 이런 효과 가 생 긴 다...........................................................

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      ..
  }
 });

  이러한 설정 을 통 해 이러한 효 과 를 쉽게 만 들 수 있 습 니 다.여 기 는 AbMenuItem 류 를 사 용 했 습 니 다.소스 코드 를 통 해 우 리 는 이 류 에 두 개의 구조 함수 가 있 음 을 알 수 있 습 니 다.하 나 는 int ID 와 String Text 두 가지 속성 을 저장 하 는 것 입 니 다.하 나 는 하나의 String Text 속성 만 저장 하 는 것 입 니 다.....................................................................
1.5 어댑터...
  어댑터 라 는 것 을 간단하게 말씀 드 리 겠 습 니 다.어댑터 는 주로 ListView 의 모든 Item 을 동적 으로 설정 하여 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         ..  *  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;
 }

}

다기 능 메뉴 를 실현 하 는 것 은 사실 매우 간단 합 니 다.대부분의 함 수 는 다 쓴 함수 입 니 다.우 리 는 호출 만 하면 제목 표시 줄 의 관련 스타일 을 설정 할 수 있 습 니 다.다기 능 메뉴 를 실현 합 니 다.마지막 으로 제 가 쓴 코드 를 추가 합 니까?아니면 완전한 코드 가 우 리 를 더욱 신속하게 발전 시 킬 수 있 습 니까?그래서 그 중의 호출 과정 과 원 리 를 이해 할 수 있 습 니 다.
원본 다운로드:Android AndrBase 프레임 워 크 다목 적 제목 표시 줄 구현
이상 은 본문의 전체 내용 이 므 로 여러분 의 학습 에 도움 이 되 기 를 바 랍 니 다.

좋은 웹페이지 즐겨찾기