2012-04-19 44 views
0

您好我需要將兩個不同的圖像數組傳遞到畫廊。 1陣列有13個圖像和2個陣列有16個圖像。當點擊1個按鈕時,我需要將012陣列相關圖像通過 一個活動,當點擊2按鈕時,我需要將012陣列相關圖像通過 進入一個活動。我treid某種方式使用此時,我單擊1按鈕我顯示1陣列相關的圖像和所有13圖像滾動,但我的問題是當我點擊2按鈕我顯示2陣列相關的圖像,如果我滾動那些圖像時間只有13圖像滾動,14圖像起不滾動,只有13圖像displyed.where我做錯了這段代碼,請任何建議我....如何添加不同大小的陣列使用相同的畫廊到一個活動在android

GalleryActivity的.class:

public class GalleryActivity extends Activity implements 
     AdapterView.OnItemSelectedListener, ViewSwitcher.ViewFactory{ 
    private TextSwitcher mSwitcher; 
    Gallery g; 
    static int nextbtn = 0; 
    static int prebtn = 0; 
    ImageAdapter iadapter; 
    int galpos; 
    int countk1=0; 
    public int ht; 
    public int wt; 

    public static int motiongal = 3000; 
    LinearLayout l1; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     requestWindowFeature(Window.FEATURE_NO_TITLE); 
     setContentView(R.layout.main); 

     DisplayMetrics displaymetrics = new DisplayMetrics(); 
     getWindowManager().getDefaultDisplay().getMetrics(displaymetrics); 
     ht = displaymetrics.heightPixels; 
     wt = displaymetrics.widthPixels; 
     l1=(LinearLayout)findViewById(R.id.linear); 
     mSwitcher = (TextSwitcher) findViewById(R.id.switcher); 
     mSwitcher.setFactory(this); 
     mSwitcher.setInAnimation(AnimationUtils.loadAnimation(this, 
      android.R.anim.fade_in)); 
     mSwitcher.setOutAnimation(AnimationUtils.loadAnimation(this, 
      android.R.anim.fade_out)); 
     mSwitcher.startLayoutAnimation(); 
     try 
     { 
      g = (Gallery) findViewById(R.id.gallery); 
      g.setAdapter(new ImageAdapter(this)); 
      g.setHorizontalScrollBarEnabled(false); 
      Bundle bundle = getIntent().getExtras(); 
      galpos = bundle.getInt("GALPOS"); 

      g.setSelection(galpos); 
      g.setAnimationDuration(motiongal); 

      countk1 = getIntent().getIntExtra("k", 0); 
     } catch(Exception e){ 
     } 
     g.setOnItemSelectedListener(this); 
     ImageButton nextButton = (ImageButton) findViewById(R.id.nextimage); 
     nextButton.setOnClickListener(nextButtonOnClick); 

     ImageButton preButton = (ImageButton) findViewById(R.id.preimage); 
     preButton.setOnClickListener(preButtonOnClick); 
    } 

    public void onItemSelected(AdapterView<?> parent, View v, int position, long id) { 
     mSwitcher.setText(mTextNames[position]); 
     nextbtn = position; 
    } 

    public OnClickListener nextButtonOnClick = new OnClickListener(){ 
     public void onClick(View v) { 
      if(nextbtn < (mTextNames.length-1)) 
      { 
       try 
       { 
        mSwitcher.setText(mTextNames[nextbtn+1]); 
        mSwitcher.startLayoutAnimation(); 
        mSwitcher.getDrawingTime(); 
        g.setSelection(nextbtn+1); 
        Thread.sleep(300); 
        g.scheduleLayoutAnimation(); 
        g.startLayoutAnimation(); 
        Thread.sleep(300); 
        g.setAnimationDuration(motiongal); 
       } 
       catch(Exception e) 
       {} 
      }else 
      { 
       try 
       { 
        mSwitcher.setText(mTextNames[0]); 
        mSwitcher.startLayoutAnimation(); 
        mSwitcher.getDrawingTime(); 
        g.setSelection(0); 
        Thread.sleep(300); 
        g.scheduleLayoutAnimation(); 
        g.startLayoutAnimation(); 
        Thread.sleep(300); 
        g.setAnimationDuration(motiongal); 
       } 
       catch(Exception e) 
       {} 
      } 
     } 
    }; 

    public OnClickListener preButtonOnClick = new OnClickListener(){ 
     public void onClick(View v) { 
      if(nextbtn > 0) 
      { 
       try 
       { 
        mSwitcher.startLayoutAnimation(); 
        mSwitcher.getDrawingTime(); 
        g.setSelection(nextbtn-1); 
        Thread.sleep(300); 
        g.scheduleLayoutAnimation(); 
        g.startLayoutAnimation(); 
        Thread.sleep(300); 
        g.setAnimationDuration(motiongal); 
       } 
       catch(Exception e) 
       {} 
      }else 
      { 
       try 
       { 
        mSwitcher.setText(mTextNames[mTextNames.length-1]); 
        mSwitcher.startLayoutAnimation(); 
        mSwitcher.getDrawingTime(); 
        g.setSelection(mTextNames.length-1); 
        Thread.sleep(300); 
        g.scheduleLayoutAnimation(); 
        g.startLayoutAnimation(); 
        Thread.sleep(300); 
        g.setAnimationDuration(motiongal); 
       } 
       catch(Exception e) 
       {} 
      } 
     } 
    }; 

    public void onNothingSelected(AdapterView<?> parent) { 
    } 

    public View makeView() { 
     TextView i = new TextView(this); 
     i.setTextSize(18); 
     i.setGravity(1); 
     return i; 
    } 

    public class ImageAdapter extends BaseAdapter { 
     public ImageAdapter(Context c) { 
      mContext = c; 
     } 

     public int getView() { 
      // TODO Auto-generated method stub 
      return 0; 
     } 

     public int getCount() { 
      return mPhotos1.size(); 
     } 

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

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

     public View getView(int position, View convertView, ViewGroup parent) { 
      ImageView i = new ImageView(mContext); 
      if(countk1==1) 
      { 
       i.setImageResource(mPhotos.get(position)); 
      } 
      if(countk1==2) 
      { 
       i.setImageResource(mPhotos1.get(position)); 
      } 

      i.setScaleType(ImageView.ScaleType.FIT_XY); 
      if(wt >= 480){ 
       if(wt == 480 && ht > 320) { 
        i.setLayoutParams(new Gallery.LayoutParams(
        LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT)); 
       } else { 
        i.setLayoutParams(new Gallery.LayoutParams(
        LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); 
       } 
      }else{ 
       i.setLayoutParams(new Gallery.LayoutParams(
       LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); 
      } 
      return i; 
     } 

     private Context mContext; 
    } 

    private boolean isScrollingLeft(MotionEvent e1, MotionEvent e2){ 
      return e2.getX() > e1.getX(); 
     } 

    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY){ 
     int kEvent; 
     if(isScrollingLeft(e1, e2)){ //Check if scrolling left 
      kEvent = KeyEvent.KEYCODE_DPAD_LEFT; 
     } 
     else{ //Otherwise scrolling right 
      kEvent = KeyEvent.KEYCODE_DPAD_RIGHT; 
     } 
     onKeyDown(kEvent, null); 
     return true; 
    } 

    private Integer[] mImageIds = { 
     R.drawable.bokstavslottet01, 
     R.drawable.bokstavslottet02, 
     R.drawable.bokstavslottet03, 
     R.drawable.bokstavslottet04, 
     R.drawable.bokstavslottet05, 
     R.drawable.bokstavslottet06, 
     R.drawable.bokstavslottet07, 
     R.drawable.bokstavslottet08, 
     R.drawable.bokstavslottet09, 
     R.drawable.bokstavslottet10, 
     R.drawable.bokstavslottet11, 
     R.drawable.bokstavslottet12, 
     R.drawable.bokstavslottet13 
    }; 
    private Integer[] mImageIdsf = { 
     R.drawable.f1, 
     R.drawable.f2, 
     R.drawable.f3, 
     R.drawable.f4, 
     R.drawable.f5, 
     R.drawable.f6, 
     R.drawable.f7, 
     R.drawable.f8, 
     R.drawable.f9, 
     R.drawable.f10, 
     R.drawable.f11, 
     R.drawable.f12, 
     R.drawable.f13, 
     R.drawable.f14, 
     R.drawable.f15, 
     R.drawable.f16, 
    }; 
    private static String[] mTextNames = { 
     "BOOKSTOVEN1", "BOOKSTOVEN2", "BOOKSTOVEN3", "BOOKSTOVEN4", "BOOKSTOVEN5", "BOOKSTOVEN6", "BOOKSTOVEN7", "BOOKSTOVEN8", "BOOKSTOVEN9", "BOOKSTOVEN10", "BOOKSTOVEN11", "BOOKSTOVEN12", "BOOKSTOVEN13"}; 

    private ArrayList<Integer> mPhotos = new ArrayList<Integer>(Arrays.asList(mImageIds)); 
    private ArrayList<Integer> mPhotos1 = new ArrayList<Integer>(Arrays.asList(mImageIdsf)); 
} 

回答

0
public int getCount() { 
    return mPhotos1.size(); 
} 

在此功能,如果第二個顯示 和第一個列表,如果顯示第一個列表,則必須計入第二個列表的計數

+0

泰克。我試過這種方式也.mphotos1相關的圖像都很好地顯示。但是當我顯示mphotos的相關圖片時,當第13張圖片出現的時候,我出現了錯誤。 – user1105975 2012-04-19 09:40:13

相關問題