«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

올해는 머신러닝이다.

무조건 한장씩 스크롤되는 gallery 본문

Android/Tip&Tech

무조건 한장씩 스크롤되는 gallery

행복한 수지아빠 2011. 5. 17. 11:00

출처 : http://devlog.thoth.kr/?mid=blog&document_srl=6248231

android.widget.Gallery는 드래그하는 속도에 따라서 스크롤되는 길이가 달라진다.

Gallery가 제공하는 속성이나 메소드로는 드래그속도에 관계없이 하나의 View만 스크롤되도록 설정할 수 없다.

Touch Event Callback 메소드나 ImageSwitcher, 애니메이션 등을 이용하여 비슷한 이펙트를 구현하는 등 방법은 여러 가지가 있겠지만

코드가 복잡해 지고 Gallery가 제공하는 기능을 포기하거나 구현해주어야 한다.

하지만, onFling메소드를 오버라이드하여 드래그속도에 따른 스크롤기능 대신 하나의 View만 스크롤되도록 fling 기능만을 수정할 수 있다.

 


  1. public class GalleryForOneFling extends Gallery {
  2. public GalleryForOneFling(Context context, AttributeSet attrs) {
  3. super(context, attrs);
  4. }

  5. @Override
  6. public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
  7. int keyCode;
  8. if(e2.getX() > e1.getX()){
  9. keyCode = KeyEvent.KEYCODE_DPAD_LEFT;
  10. }
  11. else{
  12. keyCode = KeyEvent.KEYCODE_DPAD_RIGHT;
  13. }
  14. onKeyDown(keyCode, null);
  15. return true;
  16. }
  17. }




Gallery에는 키코드로 좌측, 우측, 클릭에 대한 핸들링을 할 수 있도록 onKeyDown메소드가 마련되어 있다.

 

 

public boolean onKeyDown (int keyCode, KeyEvent event)

Since: API Level 1

Handles left, right, and clicking

Parameters
keyCodeA key code that represents the button pressed, from KeyEvent.
eventThe KeyEvent object that defines the button action.
Returns
  • If you handled the event, return true. If you want to allow the event to be handled by the next receiver, return false.
See Also
  • onKeyDown(int, KeyEvent)


또한, 키코드 대신 다음과 같이 AdapterView와 AbsSpinner에서 제공하는 메소드들을 이용할 수도 있다


  1. @Override
  2. public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
  3. int position = getSelectedItemPosition();
  4. if(e2.getX() > e1.getX()){
  5. if(position > 0) setSelection(position - 1, true);
  6. }
  7. else{
  8. if(position < getCount()) setSelection(position + 1, true);
  9. }
  10. return true;
  11. }

'Android > Tip&Tech' 카테고리의 다른 글

android google map api 참고문서  (0) 2011.05.17
android gallery left,reight move tip  (0) 2011.05.17
android tip  (0) 2011.05.16
canvas를 bitmap , png 저장  (0) 2011.05.16
view 를 bitmap으로 저장  (0) 2011.05.16