Android AndrBase 프레임 워 크 에서 다기 능 제목 표시 줄 구현(1)
9979 단어 AndroidAndBase 프레임 워 크제목 표시 줄
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 프레임 워 크 다목 적 제목 표시 줄 구현
이상 은 본문의 전체 내용 이 므 로 여러분 의 학습 에 도움 이 되 기 를 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Bitrise에서 배포 어플리케이션 설정 테스트하기이 글은 Bitrise 광고 달력의 23일째 글입니다. 자체 또는 당사 등에서 Bitrise 구축 서비스를 사용합니다. 그나저나 며칠 전 Bitrise User Group Meetup #3에서 아래 슬라이드를 발표했...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.