Android 입문 Activity Group+GridView 탭 탭 구현 방법
6470 단어 AndroidActivityGroupGridViewTab
먼저 본 사례 가 실 행 된 효과 도 를 다음 과 같이 붙 입 니 다.
ImageAdapter 는 이 인 스 턴 스 의 관건 중 하나 로 BaseAdapter 에 계승 되 고 사용자 정의 방법 을 추가 합 니 다.ImageAdapter 의 원본 코드 는 다음 과 같 습 니 다.
package com.ActivityGroupDemo;
import android.content.Context;
import android.graphics.drawable.ColorDrawable;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;
/**
*
* @author GV
*
*/
public class ImageAdapter extends BaseAdapter {
private Context mContext;
private ImageView[] imgItems;
private int selResId;
public ImageAdapter(Context c,int[] picIds,int width,int height,int selResId) {
mContext = c;
this.selResId=selResId;
imgItems=new ImageView[picIds.length];
for(int i=0;i<picIds.length;i++)
{
imgItems[i] = new ImageView(mContext);
imgItems[i].setLayoutParams(new GridView.LayoutParams(width, height));// ImageView
imgItems[i].setAdjustViewBounds(false);
//imgItems[i].setScaleType(ImageView.ScaleType.CENTER_CROP);
imgItems[i].setPadding(2, 2, 2, 2);
imgItems[i].setImageResource(picIds[i]);
}
}
public int getCount() {
return imgItems.length;
}
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
/**
*
*/
public void SetFocus(int index)
{
for(int i=0;i<imgItems.length;i++)
{
if(i!=index)
{
imgItems[i].setBackgroundResource(0);//
}
}
imgItems[index].setBackgroundResource(selResId);//
}
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView;
if (convertView == null) {
imageView=imgItems[position];
} else {
imageView = (ImageView) convertView;
}
return imageView;
}
}
그 중에서 SetFocus(int)라 는 방법 은 선택 한 효 과 를 실현 하 는 관건 이다.예 를 들 어 ABCD 4 개의 아 이 템 이 있 는데 C 가 선택 되 었 다 면 C 를 제외 한 아 이 템 은 모두 선택 되 지 않 은 스타일 로 설정 되 고 C 는 선택 한 스타일 로 설정 된다.다음은 메 인 액 티 비 티 를 쓰기 시작 합 니 다.메 인 액 티 비 티 는 GridView 컨트롤 을 포함 하고 gvTopBar 라 는 이름 으로 두 가지 주의해 야 할 점 이 있 습 니 다.
1.SetNumColumns():setNumColumns 를 사용 하여 열 수 를 설정 해 야 합 니 다.이 GridView 는 한 줄 만 있 기 때 문 입 니 다.즉,모든 아 이 템 이 같은 줄 에 있 고 아 이 템 의 수량 은 열 수 입 니 다.
2.setSelector(new Color Drawable(Color.TRANSPARENT):시스템 이 기본적으로 선택 한 배경 색 을 투명 하 게 합 니 다.BaseAdapter 에 SetFocus()를 추가 하여 선택 한 스타일 을 바 꾸 었 기 때 문 입 니 다.
package com.ActivityGroupDemo;
import android.app.Activity;
import android.app.ActivityGroup;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.util.Log;
import android.view.Gravity;
import android.view.View;
import android.view.Window;
import android.view.ViewGroup.LayoutParams;
import android.widget.AdapterView;
import android.widget.GridView;
import android.widget.LinearLayout;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;
/**
*
* @author GV
*
*/
public class ActivityGroupDemo extends ActivityGroup {
private GridView gvTopBar;
private ImageAdapter topImgAdapter;
public LinearLayout container;// sub Activity
/** **/
int[] topbar_image_array = { R.drawable.topbar_home,
R.drawable.topbar_user, R.drawable.topbar_shoppingcart,
R.drawable.topbar_note };
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
gvTopBar = (GridView) this.findViewById(R.id.gvTopBar);
gvTopBar.setNumColumns(topbar_image_array.length);//
gvTopBar.setSelector(new ColorDrawable(Color.TRANSPARENT));//
gvTopBar.setGravity(Gravity.CENTER);//
gvTopBar.setVerticalSpacing(0);//
int width = this.getWindowManager().getDefaultDisplay().getWidth()
/ topbar_image_array.length;
topImgAdapter = new ImageAdapter(this, topbar_image_array, width, 48,
R.drawable.topbar_itemselector);
gvTopBar.setAdapter(topImgAdapter);// Adapter
gvTopBar.setOnItemClickListener(new ItemClickEvent());//
container = (LinearLayout) findViewById(R.id.Container);
SwitchActivity(0);// 0
}
class ItemClickEvent implements OnItemClickListener {
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
SwitchActivity(arg2);
}
}
/**
* ID Activity
* @param id GridView
*/
void SwitchActivity(int id)
{
topImgAdapter.SetFocus(id);//
container.removeAllViews();// View
Intent intent =null;
if (id == 0 || id == 2) {
intent = new Intent(ActivityGroupDemo.this, ActivityA.class);
} else if (id == 1 || id == 3) {
intent = new Intent(ActivityGroupDemo.this, ActivityB.class);
}
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
//Activity View
Window subActivity = getLocalActivityManager().startActivity(
"subActivity", intent);
// View
container.addView(subActivity.getDecorView(),
LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 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에 따라 라이센스가 부여됩니다.