0

嗨,我需要将两个不同的图像数组传递到图库中。1 个数组包含 13 个图像,2 个数组包含 16 个图像。当单击 1 个按钮时,我需要将 1 个数组相关图像传递到画廊中的一个活动中,当单击 2 个按钮时,我需要将 2 个数组相关图像传递到画廊中的一个活动中。当我单击 1 个按钮时,我尝试了某种方式,我显示了 1 个与数组相关的图像,并且所有 13 个图像都被滚动,但我的问题是当我单击 2 个按钮时,我显示了 2 个与数组相关的图像,如果我当时只滚动了 13 个图像滚动,14 图像向前不滚动,仅显示 13 图像。我在此代码中做错了请任何建议我....

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

1 回答 1

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

在此函数中,如果显示第二个,则必须计算第二个列表的计数;如果显示第一个,则必须计算第一个列表

于 2012-04-19T09:06:44.477 回答