GridView 底部菜单 进入程序默认选中第一个菜单并点亮

解决方案 »

  1.   

    我只改动了这一个类,由于时间紧我的事情也比较多,代码有些地方比较繁琐,楼主可以优化下,功能是没有问题的,代码我只发了改动的地方,太多了发不上来public class MainActivity extends Activity {
    private static final String TAG = "MainActivity";
    private WebSettings ws = null;
    List<MenuObject> listmenus = null;
    PauseXML pullPauseXML;
    String[] img;// 图片名称
    String[] imgselected;// GridView选中图片
    String[] text;// 菜单文字
    String[] url;// 菜单连接
    int itemIndex = 0;
    int mCount = 0;
    int mPosition = 1;
    boolean removeFirstIcon = true;
    private int[] idArray = new int[]{R.drawable.toolbar_home, R.drawable.toolbar_product,  
         R.drawable.toolbar_search, R.drawable.toolbar_good,R.drawable.toolbar_more};
    public List getMenuConfig() {
    try {
    InputStream inputStream = this.getResources().getAssets().open(
    "config.xml");
    listmenus = pullPauseXML.getMenusFromXml(inputStream);
    img = new String[listmenus.size()];// Image
    text = new String[listmenus.size()];// text
    url = new String[listmenus.size()];
    imgselected = new String[listmenus.size()];
    for (int i = 0; i < listmenus.size(); i++) {
    img[i] = listmenus.get(i).getImg();// image
    text[i] = listmenus.get(i).getTitle();// text
    url[i] = listmenus.get(i).getUrl();
    imgselected[i] = listmenus.get(i).getImgselected();
    }
    } catch (Exception e) {
    e.printStackTrace();
    }
    return listmenus;
    } public GridView gridview;
    WebView webView;
    final Activity context = this;
    // ImageView imageView;
    LinearLayout ll; int startId;
    int lastId; /**
     * 通过文件名称和ImageView得到图片
     */
    public void ShowImageFileFromAsset(String imagename, ImageView image) {
    try {
    BufferedInputStream bis = new BufferedInputStream(getAssets().open(
    imagename));
    Bitmap bm = BitmapFactory.decodeStream(bis);
    if (mPosition == 0){
    Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.toolbar_home2);
    image.setImageBitmap(bitmap);
    }else{
    image.setImageBitmap(bm);
    }
    // if (removeFirstIcon == false){
    // Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.toolbar_home);
    // image.setImageBitmap(bitmap);
    // }
    } catch (Exception e) {
    System.out.println("==========file not found======");
    }
    } public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    getWindow().requestFeature(Window.FEATURE_LEFT_ICON);
    getWindow().requestFeature(Window.FEATURE_RIGHT_ICON);
    getWindow().requestFeature(Window.FEATURE_PROGRESS);
    setContentView(R.layout.main);
    getMenuConfig();
    // 添加统计器接口
    AppConnect.getInstance(this);
    // imageView = (ImageView) this.findViewById(R.id.imageView);
    webView = (WebView) this.findViewById(R.id.ww1);
    ll = (LinearLayout) this.findViewById(R.id.ll);
    ws = webView.getSettings();
    // webView.requestFocus();
    ws.setPluginsEnabled(true);// 要播放flash
    ws.setSavePassword(true);// 保存密码
    ws.setJavaScriptEnabled(true);
    gridview = (GridView) this.findViewById(R.id.GridView01);
    // gridview.setSelector(R.drawable.menuitemshape);
    // gridview.setSelector(R.drawable.grid_selector);
    webView.loadUrl("http://www.baidu.com");// WebView默认链接地址
    gridview.setGravity(Gravity.CENTER);// 设置水平居中
    // gridview.setSelector(new ColorDrawable(Color.TRANSPARENT));
    gridview.setSelector(new ColorDrawable(Color.TRANSPARENT));
    // gridview.setClickable(true);
    gridview.setVerticalSpacing(0);// 垂直间隔
    gridview.setHorizontalSpacing(10);// 水平间隔
    gridview.setBackgroundResource(R.drawable.title_bar);// 底部菜单栏的背景颜色
    webView.setWebViewClient(new WebViewClientDemo());
    webView.setWebChromeClient(new WebChromeClient() {
    // 设置网页加载的进度条
    public void onProgressChanged(WebView view, int newProgress) {
    context.setProgress(newProgress * 100);
    }
    });

    gridview.setAdapter(new ImageAdapter());
    gridview.setOnItemClickListener(new OnItemClickListener() {
    public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
    long arg3) {
    mPosition = 1;
    mCount ++;
    // if (arg0.getChildAt(0) != arg1){
    //
    // }
    if (mCount != 1){
    LinearLayout linearLayout;
    linearLayout = (LinearLayout)arg0.getChildAt(itemIndex);
    ImageView imageView = (ImageView)linearLayout.getChildAt(0);
    Bitmap bitmap = BitmapFactory.decodeResource(getResources(), idArray[itemIndex]);
    imageView.setImageBitmap(bitmap);
    }else{
    if (arg0.getChildAt(0) != arg1){
    LinearLayout linLayout;
    linLayout = (LinearLayout)arg0.getChildAt(itemIndex);
    ImageView imgView = (ImageView)linLayout.getChildAt(0);
    Bitmap bmap = BitmapFactory.decodeResource(getResources(), R.drawable.toolbar_home);
    imgView.setImageBitmap(bmap);

    LinearLayout linearLayout;
    linearLayout = (LinearLayout)arg1;
    ImageView imageView = (ImageView)linearLayout.getChildAt(0);
    Bitmap bitmap = BitmapFactory.decodeResource(getResources(), idArray[itemIndex]);
    imageView.setImageBitmap(bitmap);
    }
    }

    ImageView iv = new ImageView(arg0.getContext());
    ShowImageFileFromAsset(listmenus.get(arg2).getImgselected(), iv);// 图片点亮
    LinearLayout ll = (LinearLayout) arg1;
    TextView ltext = (TextView) ll.getChildAt(1);
    ll.removeAllViews();
    ll.addView(ltext, 0);
    ll.addView(iv, 0);
    itemIndex = arg2;// 记录点亮图片的id
    gridview.setSelection(arg2);
    }
    });

    }
    private class WebViewClientDemo extends WebViewClient {
    // 在WebView中而不是默认浏览器中显示页面
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
    view.loadUrl(url);
    return true;
    }
    } private class ImageAdapter extends BaseAdapter {
    // private ImageView[] imgItems;
    private int selResId;
    @Override
    public int getCount() {
    return listmenus.size();
    } @Override
    public Object getItem(int arg0) {
    return arg0;
    } @Override
    public long getItemId(int position) {
    return position;
    }  public void SetFocus(int index)    
        {    
            for(int i=0;i<listmenus.size();i++)    
            {    
                if(i!=index)    
                {    
    //                 imgItems[i].setBackgroundResource(0);//恢复未选中的样式  
    //              ShowImageFileFromAsset(listmenus.get(1).getImg(), imageView, true);
                }    
            }    
    //         imgItems[index].setBackgroundResource(selResId);//设置选中的样式  
    //         ShowImageFileFromAsset(listmenus.get(1).getImgselected(), imageView, true);
        } 
    @Override
    public View getView(final int position, View convertView,
    ViewGroup parent) {
    mPosition = position;
    gridview.setNumColumns(listmenus.size());
    ViewHolder viewHolder;
    if(convertView == null){
    convertView = LayoutInflater.from(getApplicationContext()).inflate(
    R.layout.menu_item, null);
    viewHolder = new ViewHolder();
    viewHolder.icon = (ImageView) convertView.findViewById(R.id.imageView);
    viewHolder.text = (TextView) convertView.findViewById(R.id.textview);
    convertView.setTag(viewHolder);
    }else{
    viewHolder = (ViewHolder)convertView.getTag();
    }

    // imageView = new ImageView(MainActivity.this);
    viewHolder.icon.setScaleType(ImageView.ScaleType.CENTER_CROP);
    viewHolder.icon.setAdjustViewBounds(false);

    // TextView mTextView = (TextView) convertView
    // .findViewById(R.id.textview);
    viewHolder.text.setText(listmenus.get(position).getTitle());
    // imageView = (ImageView) convertView.findViewById(R.id.imageView);

    // if (position == 0){
    // ShowImageFileFromAsset(listmenus.get(position).getImg(), null);
    // }

    ShowImageFileFromAsset(listmenus.get(position).getImg(), viewHolder.icon);
    gridview.setSelection(position);
    return convertView; }

     public class ViewHolder
        {
           public TextView text;
           public ImageView icon;
        }
    }
      

  2.   

    up,1L的可以解决楼主的问题了。