zoukankan      html  css  js  c++  java
  • activityGroup+gridView 实现tabhost的切换效果

    package com.ActivityGroupDemo;

     

    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.widget.AdapterView;  

    import android.widget.GridView;  

    import android.widget.LinearLayout;  

    import android.widget.AdapterView.OnItemClickListener;  

    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_home, R.drawable.topbar_home};  

     

       @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.app_icon);  

           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 ) {  

               intent = new Intent(ActivityGroupDemo.this, ActivityA.class);  

           } else if (id == 1 ) {  

            intent = new Intent(ActivityGroupDemo.this, ActivityB.class);  

           }   else if (id == 2) {  

               intent = new Intent(ActivityGroupDemo.this, ActivityC.class);  

           } else  {  

              

           }  

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

       }  

    }

     


    <?xml version="1.0" encoding="utf-8"?>  

        <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  

            android:orientation="vertical" android:layout_width="fill_parent"  

            android:background="#ff8866"

            android:layout_height="fill_parent">  

            <RelativeLayout android:layout_height="fill_parent"  

                android:layout_width="fill_parent">  

                <GridView android:layout_height="wrap_content" android:id="@+id/gvTopBar"  

                    android:layout_alignParentTop="true" android:layout_width="fill_parent"  

                    android:fadingEdgeLength="5dip" android:fadingEdge="vertical">  

                </GridView>  

                <LinearLayout android:id="@+id/Container"  

                    android:layout_below="@+id/gvTopBar" android:layout_width="fill_parent"  

                    android:layout_height="fill_parent">  

                </LinearLayout>  

            </RelativeLayout>  

        </LinearLayout>  

     


    package com.ActivityGroupDemo;

     

    import android.content.Context;

    import android.view.View;

    import android.view.ViewGroup;

    import android.widget.BaseAdapter;

    import android.widget.GridView;

    import android.widget.ImageView;

     

    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(2222);   

                imgItems[i].setImageResource(picIds[i]);   

            }  

        }   


    @Override

    public int getCount() {

    // TODO Auto-generated method stub

    return  imgItems.length;

    }

     

    @Override

    public Object getItem(int position) {

    // TODO Auto-generated method stub

    return position;

    }

     

    @Override

    public long getItemId(int position) {

    // TODO Auto-generated method stub

    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);//设置选中的样式  

        }    

          @Override

        public View getView(int position, View convertView, ViewGroup parent) {   

            ImageView imageView;   

            if (convertView == null) {   

                imageView=imgItems[position];  

            } else {   

                imageView = (ImageView) convertView;   

            }   

            return imageView;   

        }   

     

    }
    转载:http://hi.baidu.com/coolnote/blog/item/e726681830b0dea84bedbc42.html
  • 相关阅读:
    VueJS promise
    VueJS vue-router-keep-alive
    VueJS电商管理系统(Element-UI)B站学习笔记
    VueJS 对象更新
    CSS 类名选择器
    VueJS 全局导航守卫
    VueJS v-model 双向绑定
    JS 高阶函数 filter/map/reduce
    VueJS filters过滤器
    UVA1601-双向广度优先搜索
  • 原文地址:https://www.cnblogs.com/yourancao520/p/2260111.html
Copyright © 2011-2022 走看看