Develop - Create a Project with Eclipse

JAVA/Android_Tip 2013.11.12 15:30

Develop 시작.



먼저 안드로이드 이클립스 환경에서 프로젝트를 만들때이다.

설치야 뭐 다들 검색하면 미친듯이 많으니 알아서 하리라 생각한다.


Application Name : 말 그대로 그냥 이 어플리케이션 이름이다.

Project Name : 안드로이드 프로젝트 이름

Package Name : 안드로이드 패키지 이름이다.


*별다른 설정이 없을 경우 첫번째 어플리케이션 이름 정한대로 그대로 따라가진다.

*그리고 패키지 명에 경우 특정한 방식으로 해주길 바란다. 마켓에 올릴때는 저 패키지 네임으로 인식하여 올라가기 때문에 같을 경우 애써 만들어도 마켓에 올라가지는 않는다. 그리고 com.example머 이런식이면 안올라간다는것!



 Minimum Required SDK : 크게 중요한건 아니고 당신이 만드는 안드로이드 앱을 얼마만큼 낮은 버전까지 지원을 하게 해줄것인가에 대한 내용이며 이것을 정해주면 마켓에 업로드 했을 경우 마켓에서 최대한 소스를 포팅해주는 방식으로 진행된다.

가량 위에 처럼 프로요 까지 지원해준다고 쳤을때 2.1버전 사용자가 마켓에서 당신이 만든 앱을 검색해봐야 죽어도 안나온다는 사실.


Target SDK : 말 그대로 당신이 만드는 앱이 타겟으로 삼는 안드로이드 버전이다.

Compile With : 안드로이드의 경우 java로 코딩되므로 자바 코딩시 어떠한 안드로이드 버전으로 코딩할 것인지 정하는 것임. 디폴트 값으로는 최근에 나온 SDK 버전 컴파일러로 지정된다.


Theme : 말 그대로 테마.

*테마 부분은 나중에 Design 부분을 하면서 같이할 예정.

저작자 표시 비영리 변경 금지
신고

'JAVA > Android_Tip' 카테고리의 다른 글

Develop - Create a Project with Eclipse  (0) 2013.11.12
Design- Devices and Displays  (0) 2013.11.12
Android activity 구동방식  (0) 2012.07.23
Date클래스 이용 현재시간 구하기.  (0) 2012.07.16
Bitmap Canvas 스킬  (0) 2012.07.11
이미지 월 페이퍼 지정방법  (0) 2012.07.06

Design- Devices and Displays

JAVA/Android_Tip 2013.11.12 15:18

Devices and Displays

안드로이드를 다시 공부해야될 일이 생겨서..
책사기는 그렇고 .. 디벨로퍼 사이트에도 잘 설명이 되어 있다고하니..
영어로 된걸 읽기로 했다..
하루하루 번갈아서 Design과 Develop를 번갈아서 공부를 해보자.


Android powers millions of phones, tablets, and other devices in a wide variety of screen sizes and form factors. By taking advantage of Android's flexible layout system, you can create apps that gracefully scale from large tablets to smaller phones.


여러 폰과 태플릿이 사이즈가 다 다르다 그런데 안드로이드는 유연하게 이것을 표현할 수 있다고한다. 그래서 느그들이 만드는 앱도 어느곳에서나 유사하게 표현이 가능하다고 한다.


Be flexible

Stretch and compress your layouts to accommodate various heights and width

늘이고 줄여서 다양한 높이과 넓이를 수용 가능하게 한다~


아 해석하려니까.. 맞는거 같기도한거 같고 아닌거 같기도해서..

걍 보다가 중요한것만 쓸련다.







DPI를 단계별로 구분하였다. 화면 해상도에 따른 구분인거 같으며 이것으로 멀티 스크린에 대한 서비스를 할 수있고 유연하게 대처할 수 있다고 표현하는듯하다.


예전에는 weight로 LinearLayout을 구조를 이리저리 나누어서 표현을 했었는데 

DPI를 통해서 여러 화면 사이즈에 서비스를 할 수 있게 만드는거 같다.

쉽게 표현하면 레이아웃을 만들어 놓고 DPI 조정을 통해 만들수있는 것 말이다.



저작자 표시 비영리 변경 금지
신고

'JAVA > Android_Tip' 카테고리의 다른 글

Develop - Create a Project with Eclipse  (0) 2013.11.12
Design- Devices and Displays  (0) 2013.11.12
Android activity 구동방식  (0) 2012.07.23
Date클래스 이용 현재시간 구하기.  (0) 2012.07.16
Bitmap Canvas 스킬  (0) 2012.07.11
이미지 월 페이퍼 지정방법  (0) 2012.07.06

Android activity 구동방식

JAVA/Android_Tip 2012.07.23 14:40

 

이번시간 포스팅은 안드로이드 구동방식에 대한 Activity 생명 주기를 알아보도록 하겠습니다.

 

 

대체적으로 알려져 있는 액티비티 라이프 사이클이죠? 하지만 개발자들 중에는 이걸 중시하고 프로그래밍을 하는 사람도 있지만

일부 안드로이드 프로그래머들은 이걸 별로 생각하지 않는 사람이 많습니다.

위에 개념도만 봐도 어떻게 움직이는지 잘 보이실 겁니다. 특히 게임 만드실려고 하시는 분들은

저 개념도를 유념히 봐주시길 바랍니다. 왜냐! 사용자가 홈키를 눌렀는데 데이터를 보존해야되는데 그부분이 조기~

 

onPause에서 처리를 해주어야 하는데 안해놓으면 다시 사용자가 돌아왔을 때 해당 게임의 상태가 저장 안되어 있어서

다시 처음부터 해야되는 불상사가 벌어질 수도 있습니다.

 

이렇게 말만하면 무슨 말인지 모르겠죠?

그래서 코드를 준비했습니다. 별로 어려운 코드는 아니구여

안드로이드 기초정도 하신분이라면 코드만 올려도 알아서 xml 구성하셔서 할꺼라고 믿습니다.

 

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;

 

public class ActivityLifeCycle extends Activity {  
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
       
        Log.d("첫 시작!", "onCreate()");
       
        Button finishButton = (Button) findViewById(R.id.finish); // 액티비티 종료 버튼 객체 받아오기.
        finishButton.setOnClickListener(new View.OnClickListener() {            //리스너 설정
            @Override
            public void onClick(View v) {
                finish(); //버튼 클릭시 액티비티 종료
            }
        });
    }
   
    @Override
    protected void onSaveInstanceState(Bundle outState) { //값 유지 매소드(매소드 이름만 봐도 대충 알겟죠?)
        super.onSaveInstanceState(outState);
       
        Log.d("Activity", "onSaveInstanceState()");
    }
   
    @Override
    protected void onRestoreInstanceState(Bundle savedInstanceState) { //값 복구 매소드.
        super.onRestoreInstanceState(savedInstanceState);
       
        Log.d("Activity", "onRestoreInstanceState()");
    }

    @Override
    protected void onDestroy() { //종료 매소드
        super.onDestroy();
        Log.d("Activity", "onDestroy()");
    }

    @Override
    protected void onPause() { //일시 정지 매소드
        super.onPause();
        Log.d("Activity", "onPause()");
    }

    @Override
    protected void onRestart() { //재시작 매소드
        super.onRestart();
        Log.d("Activity", "onRestart()");
    }

    @Override
    protected void onResume() { //재계(개?) 매소드
        super.onResume();
        Log.d("Activity", "onResume()");
    }

    @Override
    protected void onStart() { //시작 매소드
        super.onStart();
        Log.d("Activity", "onStart()");
    }

    @Override
    protected void onStop() { //멈춤 매소드.
        super.onStop();
        Log.d("Activity", "onStop()");
    }
}

자 이제 스샷으로 확인해 봅시다.

 

처음 시작했을 때 입니다. 순서대로 딱 3개가 구동 되죠?

저 같은 경우는 딱히 사용자의 데이터를 모아두는걸 만들어 본적이 없는 관계로 OnCreate에 정의하면 땡이었지만

나중에 다른걸 만들걸 대비해서 여러 테스트는 해보고 있습니다.

 

이번엔 홈키를 눌렀을 때 입니다. 상태를 저장하고 일시 멈춤 뒤에 멈춤을 호출하는게 보이네여

 

다시 그 앱을 눌렀을 때의 반응 입니다.

 

그리고 백키를 눌렀을 때.

액티비티가 하나밖에 없어서 그런지 바로 종료가 되는 군여

 

다시 실행해서 액티비티 종료 버튼을 눌렀을때의 반응입니다.

 

저렇게 도식화된 표보다는 이렇게 스샷으로 로그캣을 찍어보는것도 확실히 알 수 있는 좋은 방법이라 생각됩니다.

 

 

 

저작자 표시 비영리 변경 금지
신고

'JAVA > Android_Tip' 카테고리의 다른 글

Develop - Create a Project with Eclipse  (0) 2013.11.12
Design- Devices and Displays  (0) 2013.11.12
Android activity 구동방식  (0) 2012.07.23
Date클래스 이용 현재시간 구하기.  (0) 2012.07.16
Bitmap Canvas 스킬  (0) 2012.07.11
이미지 월 페이퍼 지정방법  (0) 2012.07.06

Date클래스 이용 현재시간 구하기.

JAVA/Android_Tip 2012.07.16 12:32
class MyDate extends Date
{
 public int getYear()
 {
  return super.getYear() + 1900;
 };
 public int getMonth()
 {
  return super.getMonth() + 1;
 };
 public int getDate()
 {
  return super.getDate();
 };
 public int getHours()
 {
  return super.getHours();
 };
}

 

 

Date클래스를 이용하여 현재시간을 나타내는 클래스를 짜보았다..

너무 간단해서 머 어렵고 자시고 할게 없다..

그냥 쓰면 되겠다. Calendar클래스를 쓰라고 api에서는 권고하기는 하는데..

 

이게 좀더 편하지 않나 싶다.

저작자 표시 비영리 변경 금지
신고

Bitmap Canvas 스킬

JAVA/Android_Tip 2012.07.11 13:54

 

 

 

 

 

 

 

 

 

 

 

 

 

 

외국 성님들이 하는 방식이

 

Bitmap wallpaper = Bitmap.createBitmap(displayWidth*5,displayHeight, Config.ARGB_8888);
 
Canvas canvas = new Canvas(wallpaper);
 
Uri data = getIntent().getData();
 
Bitmap bmp = getBitmap(data, imagePosition, displayWidth, displayHeight);
 canvas
.drawBitmap(bmp, 0, 0,null);
 
WallpaperManager wallpaperManager = (WallpaperManager) SetterActivity.this.getSystemService(Context.WALLPAPER_SERVICE);
 wallpaperManager
.setBitmap(wallpaper);
 wallpaperManager
.suggestDesiredDimensions(bmp.getWidth()*2, bmp.getHeight());

커다란 비트맵 객체로 Wallpaper라는 큰 도화지를 만들어서

Canvas객체로 Bitmap객체를 연결한다. 그리고 이미지를 받아와서

그 도화지에 하나 하나 집어 넣는건데..

저기서 getBitmap이라는 메소드를 외국 성님께서 안적어주신 바람에

지금 골머리를 앓고 있다. 대충 느낌은 이미지의 위치를 정하는 부위인거 같은데..

여튼 이런식으로 하면 Bitmap위에 다른 Bitmap도 섞을 수 있다는거 .

 

[출처] http://javaexpert.tistory.com/376 [작성자] by 흑곰맨 in tistory

 

private Bitmap overlayMark(Bitmap baseBmp, Bitmap overlayBmp, int distanceLeft,

    int distanceTop)

{
    Bitmap resultBmp = Bitmap.createBitmap(baseBmp.getWidth() + distanceLeft,
                                                             baseBmp.getHeight() + distanceTop, 
                                                             baseBmp.getConfig());
    Canvas canvas = new Canvas(resultBmp);
    canvas.drawBitmap(baseBmp, distanceLeft, distanceTop, null);
    canvas.drawBitmap(overlayBmp, 0, 0, null);
    return resultBmp;
}

 

흔히 이런식으로 bitmap끼리의 위치를 조정하여 사용하기도 한다.

즉 저기 getBitmap이라는 곳이 위의 overlayMark랑 비슷한 효과인거 같은데 저부분에 대한 연구는 지금 하는 중..

이다.

저작자 표시 비영리 변경 금지
신고

이미지 월 페이퍼 지정방법

JAVA/Android_Tip 2012.07.06 15:40

월페이퍼 지정 방법 (코딩상으로)

 

 WallpaperManager myWallpaperManager
     = WallpaperManager.getInstance(getApplicationContext());
    try {
     myWallpaperManager.setResource(R.drawable.wallpaper);
    } catch (IOException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
    }

 

이렇게 지정한 후에 반드시 매닌페스트(아나..발음..)에 들어가셔서

android.permission.SET_WALLPAPER

꼭 한번이 아닌 두번 ㅋㅋㅋ 퍼미션 설정을 해주어야 한다.

 

안하면 안되는거 알져??

 

그리고 저기 보면 .setResource라는 부분이 있다. 저 부분은 굳이 Resource를 넣을 필요는 없는데..

이미지를 넣어 놓은걸로 바탕화면을 꾸리고 싶다 그러면 저 대로 쓰고

아니면 내부에 이미지를 가져다가 쓰고 싶다!!라면

setBitmap인가 ... (아마 아닐꺼다..)

그냥 set친 다음에 우리의 도우미 컨트롤 스페이스바를 누르시고 setXXX(bitmap)라고 되어있는걸

친절히 써주길바란다.

저작자 표시 비영리 변경 금지
신고

안드로이드 화면상태바 및 타이틀바 없애기

JAVA/Android_Tip 2012.07.04 13:57

이번 2012년 7월 4일 쯤 업데이트를 하고 프로젝트 생성결과

테마가 새로 지정되었다..

나름 괜찮더라.. 화이트와 블루의 조합..음...

 

그래서 이걸 살리면서 무지막자하게 큰 타이틀 바를 어떻게 지울까 하다가..

 

기존에 나와있는 방식 대로 xml에서 컨트롤 해보았다..

 

하지만.. 그럼 style적용 되어있던게 풀리면서 예전 디자인이 나오는 것이다...

 

그것보단 이번 적용 디자인을 살리면서 탭을 만들려고 했다..

 

그래서 찾아낸게 바로 이 밑에 줄 항목이다.

 

requestWindowFeature(Window.FEATURE_NO_TITLE);  // 이전 스타일 유지. 현 상황에서 타이틀 없앰

 

그럼 이렇게 나온다.

 

 

 

저작자 표시 비영리 변경 금지
신고

Android 바탕화면 풀 사이즈.

JAVA/Android_Tip 2012.07.02 17:27

 

 

바탕화면 풀사이즈는

중앙 홈화면 사이즈가 흔히 우리가 보는 스펙에 나와있는 사이즈이며

 

중앙 홈의 화면 사이즈 / 2 를 저장하고 그것을 중앙 화면 사이즈에 2배 곱해서 더하면

 

월페이퍼처럼 할 수 있다.

 

화면사이즈는 이렇게 구할 수 있으며

 

다른 방식도 있는 것 같지만 이것이 편한거 같으므로 활용해야 될듯..

 

 

Display dis = ((WindowManager) getSystemService(WINDOW_SERVICE)).getDefaultDisplay();
        Integer mDisWitdh = dis.getWidth();           
        Integer mDisHeight = dis.getHeight();         
        Integer side1 = 0,side2 = 0;
        side1 = mDisWitdh / 2;
        side2 = mDisWitdh / 2;
       
        mDisWitdh = mDisWitdh + side1 + side2;
       
       DisplayMetrics metrics = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(metrics);
        Float Dpi = metrics.density;  // 해상도
       
        Log.v("로그", mDisWitdh.toString()+" "+mDisHeight.toString());
        Log.v("로그2", Dpi.toString());

 

07-02 17:08:17.957: V/로그(21209): 480 800 <- 화면 독 하나의 사이즈.
07-02 17:08:17.961: V/로그2(21209): 1.5
07-02 17:10:29.996: V/로그(21389): 960 800 <- 전체 바탕화면 풀 사이즈.
07-02 17:10:29.996: V/로그2(21389): 1.5

 

<참고 사이트>

http://developer.android.com/intl/ko/reference/android/view/Display.html

 

http://dhna.tistory.com/entry/%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C-%ED%99%94%EB%A9%B4-%ED%81%AC%EA%B8%B0-%EA%B5%AC%ED%95%98%EA%B8%B0

 

저작자 표시 비영리 변경 금지
신고


티스토리 툴바