当前位置: 代码迷 >> Android >> 怎么实现Gallery和ImageSwitcher的同步?
  详细解决方案

怎么实现Gallery和ImageSwitcher的同步?

热度:57   发布时间:2016-05-01 21:47:44.0
如何实现Gallery和ImageSwitcher的同步???

效果如果,第一次发图不知道能不能发出来。
上面是个ImageSwitcher,可以左右滑动翻看图片,下面是个Gallery,一屏显示3张图片,点击图片时ImageSwitcher会同步显示。
现在的问题是ImageSwitcher左右滑动时,下面的Gallery是不动的,也就是Gallery不能跟ImageSwitcher同步。
下面是滑动手势的代码,请大牛指点下该如何实现。
Java code
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;    }


------解决方案--------------------
建议你看看郑平的通讯录项目 里面涉及到这个部分 这里有一部分代码,希望有帮到你。
//图片选择的确定与取消
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]);