2011-04-25 62 views
2

我一直在尋找如何解決幾個問題,並對我的一些問題得到了幾個答案,但有一點仍在構建中,如果你們中的任何一方都不能完成幫我。 :/在同一活動中的兩個GridView之間切換

我一直在試圖放大和縮小一個GridView,但轉到另一個解決方案,因爲我只需要兩個狀態:一個概述和一個詳細的視圖。爲此,我製作了兩個Gridviews。第一個是gridview內部的圖像縮小和顯示而不滾動的圖像。另一個是以原始大小顯示圖像的地方。您可以在該內容中水平和垂直滾動。

我的問題是這兩個gridviews之間的切換。如果我點擊其中的一個,我試圖將「可見性」設置爲「已消失」或「可見」。

這裏是我的代碼:

入門:

package test.scroll; 

import android.app.Activity; 
import android.os.Bundle; 
import android.widget.GridView; 
import android.view.View; 
import android.view.View.OnClickListener; 

public class TestScrollActivity extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

    final GridView grd_overview = (GridView)this.findViewById(R.id.grd_overview); 
    grd_overview.setAdapter(new OverviewImageAdapter(this)); 
    final GridView grd_detailed = (GridView)this.findViewById(R.id.grd_detailed); 
    grd_detailed.setVisibility(2); 
    grd_detailed.setAdapter(new DetailedImageAdapter(this)); 

    grd_overview.setOnClickListener(new OnClickListener() { 
     public void onClick(View view) { 
      grd_overview.setVisibility(2); 
      grd_detailed.setVisibility(0); 
     } 
    }); 

    grd_detailed.setOnClickListener(new OnClickListener() { 
     public void onClick(View view) { 
      grd_detailed.setVisibility(2); 
      grd_overview.setVisibility(0); 
     } 
    }); 
    } 
} 

OverviewAdapter:

package test.scroll; 

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 OverviewImageAdapter extends BaseAdapter { 
    private Context mContext; 

     public OverviewImageAdapter(Context c) { 
      mContext = c; 
     } 

     public int getCount() { 
      return mThumbIds.length; 
     } 

     public Object getItem(int position) { 
      return null; 
     } 

     public long getItemId(int position) { 
      return 0; 
     } 

     // create a new ImageView for each item referenced by the Adapter 
     public View getView(int position, View convertView, ViewGroup parent) { 
      ImageView imageView; 
      if (convertView == null) { // if it's not recycled, initialize some attributes 
       imageView = new ImageView(mContext); 
       imageView.setLayoutParams(new GridView.LayoutParams(82, 82)); 
       imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); 
      } else { 
       imageView = (ImageView) convertView; 
      } 

      imageView.setImageResource(mThumbIds[position]); 
      return imageView; 
     } 

     // references to our images 
     private Integer[] mThumbIds = { 
       R.drawable.memory_1, R.drawable.memory_1,R.drawable.memory_1,R.drawable.memory_1,R.drawable.memory_1,R.drawable.memory_1, 
       R.drawable.memory_1,R.drawable.memory_1,R.drawable.memory_1,R.drawable.memory_1,R.drawable.memory_1,R.drawable.memory_1, 
       R.drawable.memory_1,R.drawable.memory_1,R.drawable.memory_1,R.drawable.memory_1,R.drawable.memory_1,R.drawable.memory_1, 
       R.drawable.memory_1,R.drawable.memory_1,R.drawable.memory_1,R.drawable.memory_1,R.drawable.memory_1,R.drawable.memory_1, 
       R.drawable.memory_1,R.drawable.memory_1,R.drawable.memory_1,R.drawable.memory_1,R.drawable.memory_1,R.drawable.memory_1, 
       R.drawable.memory_1,R.drawable.memory_1,R.drawable.memory_1,R.drawable.memory_1,R.drawable.memory_1,R.drawable.memory_1 
     }; 

    } 

DetailedAdapter:

package test.scroll; 

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 DetailedImageAdapter extends BaseAdapter { 
    private Context mContext; 

     public DetailedImageAdapter(Context c) { 
      mContext = c; 
     } 

     public int getCount() { 
      return mThumbIds.length; 
     } 

     public Object getItem(int position) { 
      return null; 
     } 

     public long getItemId(int position) { 
      return 0; 
     } 

     // create a new ImageView for each item referenced by the Adapter 
     public View getView(int position, View convertView, ViewGroup parent) { 
      ImageView imageView; 
      if (convertView == null) { // if it's not recycled, initialize some attributes 
       imageView = new ImageView(mContext); 
       imageView.setLayoutParams(new GridView.LayoutParams(82, 82)); 
      } else { 
       imageView = (ImageView) convertView; 
      } 

      imageView.setImageResource(mThumbIds[position]); 
      return imageView; 
     } 

     // references to our images 
     private Integer[] mThumbIds = { 
       R.drawable.memory_2, R.drawable.memory_2,R.drawable.memory_2,R.drawable.memory_2,R.drawable.memory_2,R.drawable.memory_2, 
       R.drawable.memory_2,R.drawable.memory_2,R.drawable.memory_2,R.drawable.memory_2,R.drawable.memory_2,R.drawable.memory_2, 
       R.drawable.memory_2,R.drawable.memory_2,R.drawable.memory_2,R.drawable.memory_2,R.drawable.memory_2,R.drawable.memory_2, 
       R.drawable.memory_2,R.drawable.memory_2,R.drawable.memory_2,R.drawable.memory_2,R.drawable.memory_2,R.drawable.memory_2, 
       R.drawable.memory_2,R.drawable.memory_2,R.drawable.memory_2,R.drawable.memory_2,R.drawable.memory_2,R.drawable.memory_2, 
       R.drawable.memory_2,R.drawable.memory_2,R.drawable.memory_2,R.drawable.memory_2,R.drawable.memory_2,R.drawable.memory_2 
     }; 

    } 

XML:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/app_layout" 
     android:orientation="vertical" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     > 

     <!-- PLAYGROUND --> 
     <test.scroll.TwoDScrollView 
       android:id="@+id/scene_scroller" 
       android:drawingCacheQuality="low" 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent" 
       > 
       <LinearLayout 
         android:id="@+id/grds" 
         android:drawingCacheQuality="low" 
         android:layout_width="fill_parent" 
         android:layout_height="wrap_content" 
         > 
         <GridView 
           android:id="@+id/grd_overview" 
           android:drawingCacheQuality="low" 
           android:layout_width="fill_parent" 
           android:layout_height="wrap_content" 
           /> 
         <GridView 
           android:id="@+id/grd_detailed" 
           android:drawingCacheQuality="low" 
           android:layout_width="fill_parent" 
           android:layout_height="wrap_content" 
           /> 

       </LinearLayout> 
     </test.scroll.TwoDScrollView> 

     <!-- ATTRIBUTES --> 
     <Button 
       android:id="@+id/btn_cancel" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_below="@+id/scene_scroller" 
       android:text="cancel" 
       />  

</RelativeLayout> 

你對我如何在這兩個gridview之間切換有什麼建議嗎?讓我知道:)

巴斯蒂

回答

1

Imho你可以很好地實現ViewFlipper來切換你的2個網格!

從機器人參考指南

ViewFlipper是一個簡單的ViewAnimator將已 被添加到它的兩個或多個視圖之間動畫 。每次只顯示一個孩子 。如果有要求, 會定期在每個子女 之間自動翻轉。

這裏是an example關於如何實現這個。
這是another example演示這個(帶動畫)

+1

沒想到一個ViewFlipper>。<也謝謝! – JustBasti 2011-04-25 18:16:35

0

你應該能夠刪除你不希望看到的網格,從app_layout並添加你想看到的一個。例如:

RelativeLayout rl = (RelativeLayout) findViewById(R.id.app_layout); 
GridView gv = (GridView) findViewById(R.id.grid01); // Replace the ID 
GridView gv2 = (GridView) findViewById(R.id.grid02); // Replace too 

//... 
rl.removeView(gv); 
rl.addView(gv2); 

// ... 
rl.removeView(gv2); 
rl.addView(gv); 

等等。

+0

啊,不知道我也可以通過父元素隱藏/顯示他們:]謝謝! – JustBasti 2011-04-25 18:16:13

+0

不客氣。 @kcoppock也是一個很好的選擇。 – 2011-04-25 18:16:48

1

爲什麼不把兩個GridView放在ViewSwitcher/ViewFlipper中,然後在它們之間翻轉呢?