亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > Android > 正文

Android入門之ActivityGroup+GridView實現Tab分頁標簽的方法

2020-04-11 11:46:25
字體:
來源:轉載
供稿:網友

在Android程序中很多客戶端軟件和瀏覽器軟件都喜歡用Tab分頁標簽來搭建界面框架。讀者也許會馬上想到使用TabHost 與 TabActivity的組合,其實最常用的不是它們,而是由GridView與ActivityGroup的組合。每當用戶在GridView選中一項,ActivityGroup就把該項對應的Activity的Window作為View添加到ActivityGroup所指定的容器(LinearLayout)中。

先來貼出本例運行的效果圖如下:

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)這個方法是個關鍵點,即實現選中的效果。例如有ABCD4個Item,其中C被選中了,那么除C以外的Item都被設置為未被選中的樣式,而C則設置為選中的樣式。

接下來就開始寫主Activity,主Activity包含GridView控件,名為gvTopBar,有2點是需要注意一下的。

1.SetNumColumns():必須要使用setNumColumns來設置列數,因為這個GridView只有一行,即所有的Item都在同一行,Item數量即為列數。

2.setSelector(new ColorDrawable(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); }}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久成人人人人精品欧| 日本精品一区二区三区在线播放视频| 国产日韩欧美中文在线播放| 97精品视频在线观看| 久久久久国产精品www| 日本精品视频在线| 欧美日韩亚洲激情| 亚洲aa在线观看| 国产精品福利片| 日韩视频免费中文字幕| 国产精品免费在线免费| 欧美日韩一二三四五区| 亚洲片av在线| 亚洲自拍高清视频网站| 中文字幕日韩综合av| 日韩精品一二三四区| 欧美在线视频观看| 欧美极品少妇xxxxⅹ裸体艺术| 亚洲专区中文字幕| 国产激情视频一区| 欧美大片在线看免费观看| 日韩美女在线观看一区| 久久久电影免费观看完整版| 欧美黑人视频一区| 日韩中文字幕国产| 91久久精品美女| 亚洲人成网站999久久久综合| 欧美激情视频网| 性欧美xxxx| 国产精品自拍视频| 日本精品视频在线观看| 久久久久久亚洲精品不卡| 国产成人免费av| 久久久精品久久| 亚洲人成电影网站色www| 亚洲毛片一区二区| 欧美激情中文字幕乱码免费| 91亚洲精品久久久久久久久久久久| 亚洲精品xxx| 久久久成人的性感天堂| 亚洲亚裔videos黑人hd| 日韩一级裸体免费视频| 色多多国产成人永久免费网站| 亚洲欧美自拍一区| 大胆欧美人体视频| 欧美高清视频在线观看| 国产精品女主播| 欧美成人亚洲成人日韩成人| 久久久久久久久久久久久久久久久久av| 欧美精品aaa| 亚洲男人天堂手机在线| 这里只有精品视频| 亚洲乱码一区二区| 成人a在线观看| 亚洲深夜福利视频| 国产女精品视频网站免费| 国产视频在线一区二区| 热久久99这里有精品| 亚洲激情在线观看视频免费| 亚洲福利视频在线| 不卡av电影在线观看| 亚洲国产精品推荐| 久久精品国产一区二区三区| 午夜伦理精品一区| 欧美日本在线视频中文字字幕| 日韩视频免费看| 欧美大胆a视频| 久久精品久久精品亚洲人| 日产精品久久久一区二区福利| 久久久视频免费观看| 黄色成人av在线| 欧美日本高清一区| 欧美性高潮床叫视频| 日韩最新av在线| 高清亚洲成在人网站天堂| 日韩精品黄色网| 久久精品国产清自在天天线| 亚洲精品美女久久久久| 深夜福利亚洲导航| 国产综合在线视频| 日韩最新av在线| 国产精品免费视频久久久| 国产成人综合久久| 日本久久久久久| 国产精品久久久久久久av电影| 国产91成人在在线播放| 久久国产精品网站| 久久视频在线免费观看| 日本一区二区在线播放| 亚洲国产精品va在线观看黑人| 欧美午夜影院在线视频| 欧美精品国产精品日韩精品| 国产精品成人一区| www.亚洲成人| 在线视频欧美日韩| 欧美裸体xxxx极品少妇软件| 91精品视频一区| 国产精品久久网| 亚洲最大的成人网| 亚洲日韩欧美视频| 国产极品精品在线观看| 日韩在线中文字幕| 国产精品久久久久久av| 欧美在线观看视频| 91色琪琪电影亚洲精品久久| 欧美性色视频在线| 亚洲视频免费一区| 最近2019中文字幕在线高清| 久久久久久久91| 日本高清+成人网在线观看| 欧美日韩亚洲视频| 黄色精品在线看| 日韩美女主播视频| 一区三区二区视频| 精品夜色国产国偷在线| 国产精品久久久久久婷婷天堂| 91久久国产综合久久91精品网站| 久久影视免费观看| 国产精品久久二区| 日韩av资源在线播放| 性色av一区二区三区红粉影视| 亚洲精品福利在线观看| 亚洲中国色老太| 日韩人在线观看| 日韩免费观看高清| 麻豆国产va免费精品高清在线| 国产区精品在线观看| 欧美性xxxx极品hd满灌| 国产日韩精品在线| 久久久久久久久久久免费精品| 久久亚洲精品小早川怜子66| 亚洲白拍色综合图区| 亚洲免费精彩视频| 亚洲第一页在线| 亚洲国产欧美一区二区三区久久| 欧美特级www| 色爱av美腿丝袜综合粉嫩av| 亚洲日韩中文字幕在线播放| 欧美大片在线影院| 91在线免费看网站| 国产最新精品视频| 色哟哟亚洲精品一区二区| 日本一区二区三区四区视频| 国产精品久久av| 国产精品久久久久久五月尺| 色99之美女主播在线视频| 久久国产精品久久久久| 国产91色在线|| 国内精品久久久久久中文字幕| 欧美裸身视频免费观看| 日韩影视在线观看| 国产精品免费一区二区三区都可以| 成人a视频在线观看| 国产99久久精品一区二区 夜夜躁日日躁| 国产丝袜一区二区| 欧美激情a在线| 亚洲欧美日韩精品| 国产亚洲精品久久久久动| 777777777亚洲妇女| 中文字幕不卡av| 日韩av中文字幕在线免费观看| 亚洲第一男人av| 欧美理论片在线观看| 亚洲人成电影在线|