效果如果,第一次发图不知道能不能发出来。
上面是个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]);