Android GirdView写出TabActivity而已更加具有可定制性
来源:互联网 发布:网络正常朋友圈发不了 编辑:程序博客网 时间:2024/06/11 21:08
package com.xiaoqiu.ui;import com.xiaoqiu.adapter.ImageAdapter;import android.app.ActivityGroup;import android.content.Intent;import android.graphics.Color;import android.graphics.drawable.ColorDrawable;import android.os.Bundle;import android.view.Gravity;import android.view.View;import android.view.Window;import android.view.ViewGroup.LayoutParams;import android.view.WindowManager;import android.widget.AdapterView;import android.widget.GridView;import android.widget.LinearLayout;import android.widget.AdapterView.OnItemClickListener;/** * 主要是根据点最上方导航栏来决定显示哪个Activity * @author Tian * */@SuppressWarnings("deprecation")public class MainActivity extends ActivityGroup {private GridView gvTopBar;private ImageAdapter topImgAdapter;public LinearLayout container;// 装载sub Activity的容器/** 顶部按钮图片 **/int[] topbar_image_array = { R.drawable.frame_player_normal,R.drawable.frame_local_normal, R.drawable.frame_internet_normal,R.drawable.frame_menu_normal };@Overridepublic void onCreate(Bundle savedInstanceState) {setFullscreen();setNoTitle();super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initView();}private void initView(){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, 100,R.drawable.frame_internet_press);gvTopBar.setAdapter(topImgAdapter);// 设置菜单AdaptergvTopBar.setOnItemClickListener(new ItemClickEvent());// 项目点击事件container = (LinearLayout) findViewById(R.id.Container);SwitchActivity(0);//默认打开第0页}class ItemClickEvent implements OnItemClickListener {public void onItemClick(AdapterView<?> parent, View view, int i,long l) {SwitchActivity(i);}}/** * 根据ID打开指定的Activity * @param id GridView选中项的序号 */void SwitchActivity(int id){topImgAdapter.SetFocus(id);//选中项获得高亮container.removeAllViews();//必须先清除容器中所有的ViewIntent intent =null;if (id == 0 || id == 2) {intent = new Intent(MainActivity.this, ProfilesActivity.class);} else if (id == 1 || id == 3) {intent = new Intent(MainActivity.this, RuleActivity.class);} intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);//Activity 转为 ViewWindow subActivity = getLocalActivityManager().startActivity("subActivity", intent);//容器添加Viewcontainer.addView(subActivity.getDecorView(),LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);}//全屏 public void setFullscreen() { requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); } //无标题 public void setNoTitle() { requestWindowFeature(Window.FEATURE_NO_TITLE); }}
package com.xiaoqiu.adapter;import android.content.Context;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.GridView;import android.widget.ImageView;/** * * @author tian *@version */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].setPadding(2, 2, 2, 2); imgItems[i].setImageResource(picIds[i]); } }@Overridepublic int getCount() {return imgItems.length;}@Overridepublic Object getItem(int position) {return position;}@Overridepublic long getItemId(int position) {return position;}/** * 设置选中的效果 * 当选中选项A 则A设置成什么样式 其余的又设置成其余的样式 */ public void SetFocus(int index) { for(int i=0;i<imgItems.length;i++) { if(i!=index) { imgItems[i].setBackgroundResource(0);//恢复未选中的样式 } } imgItems[index].setBackgroundResource(selResId);//设置选中的样式 } @Overridepublic View getView(int position, View convertView, ViewGroup parent) {ImageView imageView;if (convertView == null) {imageView=imgItems[position];}else{imageView = (ImageView) convertView;}return imageView;}}