안녕하세요. 안드로이드 공부를 하고 있는 학생입니다.
구글링해도 도통 문제를 해결하지 못해서 질문을 드리는데요...ㅠㅠ;
ViewPager 구현시 오른쪽 방향으로 빠르게 터치 모션을 주면 왼쪽 포지션이 스크롤이 되어야되는데
오른쪽 포지션이 ← 방향으로 스크롤이 됩니다. 똑같이 반대방향은 빠르게 터치모션을 줘도
아무런 문제가 없습니다. 제가 소스를 잘 못 짠건지, ViewPager의 자체버그인건지.. 도와주세요 ㅠㅠ
public class ViewPagerSample extends Activity {
private ViewPager vp;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
vp = (ViewPager) findViewById(R.id.pager);
vp.setAdapter(new ViewpagerAdapter(this));
}
private class ViewpagerAdapter extends PagerAdapter implements
View.OnClickListener {
private static final int ROOM_NUM = 0xf8000;
private int _addRoomNum = 0;
private int _addImageNum = 0;
private Context handler;
private LinearLayout mainLayout;
public ViewpagerAdapter(Context c) {
super();
handler = c;
}
@Override
public Object instantiateItem(View pager, int position) {
RoomSettings(position);
((ViewPager) pager).addView(mainLayout, 0);
return mainLayout;
}
private void RoomSettings(int position) {
mainLayout = new LinearLayout(handler);
mainLayout.setOrientation(LinearLayout.HORIZONTAL);
if (position == 0) {
_addRoomNum = 0;
_addImageNum = 0;
} else {
_addRoomNum = (3 * position) + (position);
_addImageNum = (3 * position) + (position);
}
for (int i = 0; i < 4; i++) {
Bitmap _chatRoomImage = Bitmap.createScaledBitmap(BitmapFactory
.decodeResource(handler.getResources(), R.raw.g1iu1
+ _addImageNum), 133, 200, false);
ImageView Rooms = new ImageView(handler); // 이미지뷰 생성
Rooms.setId(ROOM_NUM + _addRoomNum);
Rooms.setImageBitmap(_chatRoomImage);
Rooms.setOnClickListener(this);
_addImageNum++;
_addRoomNum++;
mainLayout.addView(Rooms);
}
}
public void onClick(View v) {
// TODO Auto-generated method stub
for (int i = 0; i < 40; i++) {
if (v.getId() == ROOM_NUM + i) {
Toast.makeText(handler, i + 1 + "", 100).show();
}
}
}
@Override
public int getCount() {
return 10;
}
@Override
public void destroyItem(View pager, int position, Object view) {
((ViewPager) pager).removeView((View) view);
}
@Override
public boolean isViewFromObject(View view, Object obj) {
return view == obj;
}
@Override
public void finishUpdate(View arg0) {
}
@Override
public void restoreState(Parcelable arg0, ClassLoader arg1) {
}
@Override
public Parcelable saveState() {
return null;
}
@Override
public void startUpdate(View arg0) {
}
}
}




ViewPager 자체 버그입니다.. 저도 해봤는데... 그거 고치려면 커스터마이징해야할겁니다.
스크롤링되는동안 터치못하게 막아야죠 모...