블로그 이미지
언제나 늘 푸른 소나무처럼. 자신의 의지로 오롯이 서기
예섬수진

공지사항

최근에 받은 트랙백

글 보관함

calendar

  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      

Android]Convert Drawable to Bitmap

2010.07.09 23:05 | Posted by 예섬수진
아래는 Drawable 객체를 Bitmap 객체로 변환하는 방법이다.
Drawable d; // 특정 값 대입
Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGV_8888);
Canvas canvas = new Canvas(bitmap);
d.setBounds(0, 0, width, height);
d.draw(canvas);

그럼 이 소스를 이용하여 작성된 코드를 살펴 보자.
 소스 코드
 
     => 이 코드에는 ImageView 2개가 있다.
       1) original_iv는 Drawble\icon.png를 이미지로 설정하였다. [setImageResource( ) 활용]
       2) copy_iv에서는 original_iv의 Drawable 값을 Bitmap 객체로 변화하여, 이를 이미지로 설정하였다.
          [setImageBitmap( ) 활용]

실행 화면을 살펴 보면, 아래와 같다.
상단의 이미지가 원본, 하단의 이미지가 Bitmap으로 변환된 것을 표시한 것이다.
 실행된 화면
1.  상단의 그림은 Drawable\icon.png를 직접 설정해서 표시한 것.
2. 하단의 그림은 상단 이미지의 Drawble 값을 Bitmap 객체로 변환하여 표시한 것

Android]Gallery에 Image 추가 하기

2010.07.07 23:31 | Posted by 예섬수진
내가 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) Finger Flick의 결과로 선택된 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 정보이다.
      -> 그래서, 해당 소스를 주석처리하였다.

이상!!

Android]E-mail 작성 화면으로 전환하기

2010.06.26 00:24 | Posted by 예섬수진
(1) ImageView 클릭 시, 메일 작성 화면으로 전환하기
  - 역시 화면 전환을 위해, Intent(Intent.ACTION_SEND)를 사용함


(2) 실행 화면
  - Email 로그인 계정을 설정한 뒤에 소스를 수행하여야, 아래와 같은 화면이 보임


(3) 소스 설명

Line

Line 설명

Intent emailIntent = new Intent(Intent.ACTION_SEND);

Intent 객체 생성

emailIntent.setType("plain/text");

Type 설정

emailIntent.putExtra(Intent.EXTRA_EMAIL, new String[]{"receiver@gmail.com"});

수신자 주소 설정

//emailIntent.putExtra(Intent.EXTRA_SUBJECT, "");

메일 제목 설정

//emailIntent.putExtra(Intent.EXTRA_TEXT, "");

메일 내용 설정 

startActivity(Intent.createChooser(emailIntent, "send email"));

화면 전환


(1) Error 상황
  - 소스 상에 문제가 없는데 Emulator 실행 시, 아래와 Error 메시지가 보임

(2) 해결 방법
  - Project Clean 후, 빌드 수행 (Eclipse > Project > Clean)


(1) ImageView에 Hyper Link 거는 방법
  1) 화면 간의 이동을 위해, 사용하는 Intent를 이용
  2) ImageView 클릭 시 Web Browser를 실행하여, Naver로 이동하도록 함
 
(2) 실행 결과
  - Page Loading 완료 후, Naver가 실행된다.


Android]MediaPlayer(mp3 재생)

2010.06.20 22:47 | Posted by 예섬수진
(1) MP3 재생 방법
  1) MP3 파일 저장
    - res/raw 폴더 내에 MP3 파일 Import
     Ex> 파일명 : mp3_file.mp3

  2) 재생
 MediaPlayer mp = MediaPlayer.create(ActTeacherIntro.this, R.raw.mp3_file);

 mp.start();

  3) 재생 멈추고 처음부터 다시 재생
 mp.stop();

 try {                        
      mp.prepare();
 } catch (IllegalStateException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
 } catch (IOException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
 }

 mp.start();


(2) MP3 재생 시, Status Diagram

(3) 참고 자료
  http://developer.android.com/reference/android/media/MediaPlayer.html
[Error 상황]
  -Emulator를 동작 시켰으나, 아래와 같은 문구가 뜨면서 Emulator가 실행되지 않음 

[해결 방법]
  - user data를 저장하는 파일을 삭제 해줌
    1) 저장 위치 : C:\Documents and Settings\User Name\.android\avd\myavd.avd
    2) 삭제할 폴더 : userdata-qemu.img.lock


(1) 증상
  - Emulator 실행 시, Console 창에 보이는 Error Message
 Re-installation failed due to different application signatures.
 You must perform a full uninstall of the application.

(2) 원인
  - 폰에 이미, 어플리케이션과 동일한 이름의 프로그램이 설치되어 있기 때문

(3) 해결책
  1) 폰에서 Settings > Application > Manage Applications에서 해당 Application 선택
  2) 프로그램 소개 창에서 Uninstall 버튼을 누른다.


   
Source 상에 Error가 발생하지 않았는데, 아래와 같은 Error로 소스를 실행할 수 없는 경우가 있다.

(1) 문제 상황


(2) 해결책
  1) C:\Documents and Settings\User Name\.android 폴더에서 debug.keystore 삭제

  2) Project Clean 후, 재빌드

Android]Back Button 동작 API

2010.06.13 13:22 | Posted by 예섬수진
Image Click 시, Back Button을 누른 것처럼 동작하기 위해서는 아래와 같이 하면 된다.

(1) Layout xml에 ImageView를 추가함

(2) Activity Class에서, id에 해당하는 ImageView 객체를 가져옴
         ImageView view = (ImageView) this.findViewById(R.id.img_back);

(3-1) 이 ImageView에 setOnClickListener를 설정함.
(3-2) Listener 내에의 onClick 함수에서 onBakcPress API 호출함
        view.setOnClickListener(new OnClickListener() {
            
            public void onClick(View v) {
                // TODO Auto-generated method stub
                onBackPressed();
            }
        });





이전 1 2 다음

티스토리 툴바