效果如果,第一次发图不知道能不能发出来。
上面是个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;
}
//图片选择的确定与取消
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;
}
}