效果如果,第一次发图不知道能不能发出来。
上面是个ImageSwitcher,可以左右滑动翻看图片,下面是个Gallery,一屏显示3张图片,点击图片时ImageSwitcher会同步显示。
现在的问题是ImageSwitcher左右滑动时,下面的Gallery是不动的,也就是Gallery不能跟ImageSwitcher同步。
下面是滑动手势的代码,请大牛指点下该如何实现。class MyGestureDetector extends SimpleOnGestureListener {
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
try {
if (Math.abs(e1.getY() - e2.getY()) > SWIPE_MAX_OFF_PATH)
return false;
// right to left swipe
if (e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE
&& Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
mSwitcher.setInAnimation(slideLeftIn);
mSwitcher.setOutAnimation(slideLeftOut);
System.out.println("向左滑动==============");
g_position++;
if (g_position > list.length)
g_position = 0;
if (0 > g_position)
g_position = list.length;
mSwitcher.setImageURI(Uri.parse(list[g_position]));
System.out.println("gallery的ID是什么呢===========>"+g.getId());
// mSwitcher.setImageResource(list[g_position]);
viewFlipper.showNext();
} else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE
&& Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) {
mSwitcher.setInAnimation(slideRightIn);
mSwitcher.setOutAnimation(slideRightOut);
System.out.println("向右滑动========向右滑动======");
g_position--;
if (0 > g_position)
g_position = list.length;
if (g_position > list.length)
g_position = 0;
mSwitcher.setImageURI(Uri.parse(list[g_position]));
// mSwitcher.setImageResource(mImageIds[g_position]);
viewFlipper.showPrevious();
}
} catch (Exception e) {
//nothing
}
return false;
}
} public boolean onTouchEvent(MotionEvent event) {
if (gestureDetector.onTouchEvent(event))
return true;
else
return false;
}

解决方案 »

  1.   

    木有人啊??????HELP~~~
      

  2.   

    建议你看看郑平的通讯录项目 里面涉及到这个部分  这里有一部分代码,希望有帮到你。
    //图片选择的确定与取消
    private void initImageChooseDialog() {
    AlertDialog.Builder builder =new AlertDialog.Builder(this);
    builder.setTitle("请选择图片");
    builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {

    @Override
    public void onClick(DialogInterface dialog, int which) {
    btn_img.setImageResource(images[imageposition%images.length]);
    }
    });
    builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {

    @Override
    public void onClick(DialogInterface dialog, int which) {

    }
    });
    LayoutInflater inflater=LayoutInflater.from(this);
    View view=inflater.inflate(R.layout.imageswitch,null);
    gallery=(Gallery)view.findViewById(R.id.img_gallery);
    gallery.setAdapter(new ImageAdapter(this));
    gallery.setSelection(images.length/2);
    is=(ImageSwitcher)view.findViewById(R.id.image_switcher);
    gallery.setOnItemSelectedListener(new OnItemSelectedListener() { public void onItemSelected(AdapterView<?> parent, View view,
    int position, long id) {
    imageposition=position;
    is.setImageResource(images[position%images.length]);
    } @Override
    public void onNothingSelected(AdapterView<?> parent) {

    }
    });
    is.setFactory(new MyViewFactory(this));
    builder.setView(view);
    imageChooseDialog=builder.create();
    }
    class ImageAdapter extends BaseAdapter{
            private Context context;
            public ImageAdapter(Context context){
             this.context=context;
            }
    @Override
    public int getCount() {
    return Integer.MAX_VALUE;
    } @Override
    public Object getItem(int position) {
    return null;
    } @Override
    public long getItemId(int position) {
    return 0;
    } @Override
    public View getView(int position, View convertView, ViewGroup parent) {
    ImageView iv=new ImageView(context);
    iv.setImageResource(images[position%images.length]);
    iv.setAdjustViewBounds(true);
    iv.setLayoutParams(new Gallery.LayoutParams(80,80));
    iv.setPadding(15, 10, 15, 10);
    //Log.i(TAG, "getView()");
    return iv;
    }

    }
    class MyViewFactory implements ViewFactory{
            private Context context;
            public MyViewFactory(Context context){
             this.context=context;
            }
    public View makeView() {
    ImageView iv=new ImageView(context);
    iv.setLayoutParams(new ImageSwitcher.LayoutParams(90,90));
    return iv;
    }

    }