'GalleryView'에 해당되는 글 3건

  1. 2011.07.14 GalleryView 옵션
  2. 2010.07.07 Android]GalleryView에 Image 추가 하기
  3. 2010.07.05 [팁]GalleryView의 flick 민감도 조절하기 (2)
GalleryView 만들기 : http://bunhere.tistory.com/159
Flick없는 GalleryView : http://bunhere.tistory.com/154

옵션 설명.

android:unselectedAlpha="0.5" : 선택되어 있지 않은 항목을 흐리게 보여준다.
fadingEdge="none" : 가장자리에 fading을 없애준다.
spacing="10dp" : 각 아이템 사이의 간격을 늘려준다.
 
신고

'<안드로이드>개발 > 안드로이드/App' 카테고리의 다른 글

Preference 쓰기.  (0) 2011.12.13
[TIP] Activity  (0) 2011.11.09
GalleryView 옵션  (0) 2011.07.14
EditView 관련 정리  (0) 2011.07.11
[팁] 소스코드에서 해상도 처리하기.  (0) 2011.07.06
[TIP] WebView  (0) 2011.03.22
Posted by 소혼
출처 : http://psjin14.tistory.com/entry/AndroidGallery%EC%97%90-Image-%EC%B6%94%EA%B0%80-%ED%95%98%EA%B8%B0
ps> 예섬아, 이렇게 해도 되는 설정을 해놓고 있단다. CCL도 꼭 신경써서 보도록 하렴
약간의 코멘트 덧붙임
ps2> 궁금한 내용 있으시면 질문 주시면 답변 드립니다.

아래는 예섬이 장장 2시간 동안 적은 글 ㅋㅋ
근데 글자가 너무 많아서 읽기가 싫어진다 ;;
역시 난 소스 보는게 좋은 것 같다.

내가 Gallery에서 필요한 기능은 다음과 같다.
 Gallery 요구사항
  (1) Gallery에 내가 원하는 Image 추가하기
  (2) 사용자의 선택으로 인해, Gallery 중앙에 최정적으로 표시된 Image가 무엇인지 알기
    Ex>  Finger Flick을 하는 경우, Flick이 완료 될 때 화면에 선택된 Image 알기

이 2가지 요구사항을 만족할 수 있는 예제를 인터넷에서 찾았으니, 찾을 수가 없었다.

대신, Android Developer Guide에서 Hello, Gallery라는 예제를 찾았으나 !!

이런.. 그대로 작성하면, Error가 나거나 System이 오동작을 한다. ㅜ.ㅜ
  * Hello, Gallery url : http://developer.android.com/guide/tutorials/views/hello-gallery.html

몇 가지 시행착오 후,  요구사항을 만족할 수 있는 Android Code를 작성하였다.
 요구사항을 만족하여, 실행된 화면
 
  > Linear Layout에 Gallery와 Text View를 추가하였다.
> Gallery 상에서 Image의 위치를 표시하기 위해, Text View를 추가하였다.

(1) Layout으로 사용할 xml 파일 만들기
 파일명 : layout > my_gallery.xml
 

특별히 관계없는 기타 팁
  1)  Gallery에 Image View를 추가하지 않아도 된다.
     * Gallery에 Image를 추가하는 것은 Code 상에서 할 예정이다.

  2) Fling의 결과로 선택된 Image 위치(Position)를 알기 위해서, Text View를 추가하였다.

  3) Linear Layout의 default orientation은 horizontal이다.
     => 그러므로, 꼭 orientation을 vertical로 명시해 주자.
       -> 그렇지 않으면, Text View가 화면에 표시되지 않을 것이다.

(2) 실행화면의 각 Image에서 보이는 테두리 속성용 value 파일 만들기
 파일명 : values > gallery_attri.xml
 


(3) Activity 클래스 작성하기
 파일명 : src > ActMyGallery.java
 

  1) android.app.Activity를 Super Class로 지정하여, Class를 생성하자.

  2) OnCreate 함수를 Override하자.
       (a) 이 Activity가 실행될 때의 Layout을 설정하기 위해, setContentView 함수를 호출한다.
       (b) Gallery에 Image 추가 및 Image에 대한 정보를 알 수 있도록, Adapter를 설정해 준다.
            - Gallery 클래스의 setAdapter 함수 이용
            * ImageAdapter는 미작성 클래스임. 그래서 setAdapter 라인을 추가하는 순간, Error가 날 것이다

(4) ImageAdapter 클래스 추가하기
 파일명 : src > ActMyGallery.java
 

  1) BaseAdapter를 Super Class로 하는 Class를 작성한다.
    => 단, Activity 클래스 내에 작성해야 한다.
     -> 그렇지 않으면, 몇몇 함수들은 정의되지 않았다고 Error가 발생할 것이다.
    (꼭 그럴 필요는 없음)
  2) Gallery에 추가할 Image들을 res/drawable 폴더에 추가한다.

  3) 위 소스 코드의 핵심 함수는 getView가 되겠다.
    =>이 함수는 Gallery의 위치에 있는 Image View를 반환하는 함수이다.
      -> 이 함수에서, 각 Position에서 보여야 할 Image에 대한 설정을 해 주고 있다.
        (a) ImageView.setImageResource()
            : Image Resource ID를 설정하여, ImageView에서 표시 할 Image를 설정하고 있음

        (b) ImageView.setLayoutPrarms(new Gallery.LayoutParams(150, 100)
            : 150은 width이고, 100은 height임

        (c) ImageView.setScaleType(ImageView.ScaleType.FIT_XY)
           : Imae가 150X100에 맞도록, Scale을 조정함

       (d) ImageView.setBackgroudnResource(background)
          : 실행된 화면에서, 각각의 ImageView에 회색 테두리가 보이도록 함

  4) 생성자에 있는 아래 항목들은 이미 (2)번에서 작성한 내용들이다.
      - R.styleable.Theme
      - R.styleable.Theme_android_galleryItemBackground

  5) 수행하면, 1번째 요구사항이 만족된 것을 확인할 수 있음

(5) 2번째 요구사항을 만족하기 위해, onCreate 함수 수정
 파일명 : src > ActMyGallery.java
 onCreate 함수 안에 안의 내용을 추가하였음
  1) setOnItemSelectedListener 함수를 이용하면, 2번째 요구사항을 만족할 수 있다.
    => 정확히는 OnItemSelectedListener.onItemSelected() 이지만..
      -> 해당 함수의 3번째 인자로 들어오는 Int는 Galley 상의 Image 위치이다.
      -> 그래서 position value를 TextView에 표시되도록 설정하고 있다. [TexvView.setText() 이용]

  2) 주석 처리된 부분을 해제하면, 사용자가 Click(정확히는 Push)한 Image를 알 수 있다.
   * Hello, Gallery 예제에는 setOnItemClickListner 함수가 있음.
     => 그러나 내가 원한 것은 Press 할 때 클릭된 Image 정보가 아니다.
     => 요구사항은 Release할 때, 표시될 Image 정보이다.
      -> 그래서, 해당 소스를 주석처리하였다.
이상!!

허접한 글이지만, 도움이 되신다면 아래 손가락 꾹 눌러주세요.
신고
Posted by 소혼
GalleryView는 작은 이미지를 화면에 출력하는데에는 적합할 수 있으나 화면을 채운 아이템들을 움직이는데는 부적합한 것 같다.

예를 들어 화면을 꽉 채운 GalleryView에 이미지가 5개 있고, 현재 1번 이미지를 보고 있다고 가정하자.
사용자가 화면에 flick을 통해 2번, 3번 이미지를 보고 싶을 수 있겠으나
GalleryView에서 flick을 발생하면 거의 바로 5번 이미지로 이동해버린다.
아주 천천히 스크롤하는 경우가 아니면 2,3번 이미지를 보긴 매우 어려운데

만약 flick할 때마다 한개의 이미지만을 넘기고 싶은 거라면, GalleryView로는 불가능 할 것 같다.

그래도 GalleryView를 짜기 버거워 어쩔수 없이 쓰던 GalleryView에 약간의 트릭을 해보았다.

일단 GalleryView를 상속 받고 onFling을 override한다.
onFling의 인자 가운데 새번째 인자인 velocityX의 값을 절반으로 나누어 부모 클래스의 onFling을 호출한다.

생각한 것만큼 좋은 효과를 보여주진 못하지만,
당장 써먹을 수 있는 수준인 것 같다.

궁극적으로는 GalleryView를 다시 짜야 할 것 같다 ;;

허접한 글이지만, 도움이 되셨다면 아래 손가락 꾹 눌러주세요.
신고
Posted by 소혼
이전버튼 1 이전버튼

티스토리 툴바