안드로이드 스튜디오를 이용하여 


Android Material Design 적용하기!!


Android Material Design이 적용된 TextInputLayout을 알아보겠습니다!!




먼저 안드로이드 스튜디오를 이용하여 새로운 Andriod Project를 생성합니다.


- 라이브러리 추가

Material Design을 적용하기 위해서 android-support-v7 라이브러리를 21.0.0 이상 버전을 추가해줘야합니다.

최신 버전의 안드로이드 스튜디오의 경우 자동으로 android-support-v7:21.0.0 이상 버전이 추가되어있습니다.


만일 21.0.0 버전 이하거나 없다면 gradle에 추가해주세요.


dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.1.1'
compile 'com.android.support:design:23.1.1'
}

- TartgetSDK 변경

 android-support-v7 라이브러리 사용을 위해서는 TargetSDK가 21버전 이상으로 설정되어야 합니다.

defaultConfig {
applicationId "tsis.co.kr.androidstudiotest"
minSdkVersion 11
targetSdkVersion 21
versionCode 1
versionName "1.0"
}




- Layout

<android.support.design.widget.TextInputLayout
android:id="@+id/txtIptLayout_id"
android:layout_width="match_parent"
android:layout_height="wrap_content">

<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="id를 입력하세요"/>
</android.support.design.widget.TextInputLayout>

<android.support.design.widget.TextInputLayout
android:id="@+id/txtIptLayout_pw"
android:layout_width="match_parent"
android:layout_height="wrap_content">

<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="password를 입력하세요."
android:password="true"/>
</android.support.design.widget.TextInputLayout>


정말 간단하게 TextInputLayout을 적용해보았습니다.


코드 한 줄 없이 xml으로만 적용할 수 있습니다.


정말 쉽죠잉~?




요즘 안드로이드 샘플 앱들을 보면 Library가 jar파일이 아닌 프로젝트 형태로 제공되는 경우가 많다. 안드로이드 프로젝트를 Library로 추가하는 방법에 알아보자~


1. Properties > Android > Library 추가





추가할 수 있는 Library들이 나타나고 추가할 Library를 선택 후 저장합니다.


2. project.properties 경로 추가





직접 project.properies 파일에 경로를 입력하여 추가할 수 있습니다.


샘플 프로젝트를 받았는데 엑박 표시가 뜨면서 실행이 안된다면 당황하지 말고 먼저 프로젝트 Library 추가할 게 있는지 확인해보시기 바랍니다~






채팅 앱을 개발하다 보면 채팅 activity가 백그라운드에 내려가 있을 때 현재 채팅중인 상대방이 아닌 다른 사람에게 메세지가 와서 nofitication을 누르게 되면 같은 activity가 두 개 뜨는 현상이 발생한다.

이런 현상을 막기 위해 Acitivty LaunchMode를 변경하여 단일 activity만 활성화 되도록 설정한다.

<activity android:name="ChattingAcitivity"

android:screenOrientation="portrait" 

android:windowSoftInputMode="adjustResize"

android:launchMode="singleTask" />


activity 설정을 singleTask로 설정하여 단일 activity 설정 적용 완료!


단 이렇게 설정했을 때 onResume에서 intent 데이터를 받을 시에 

getIntent 값이 변경되지 않는 문제점이 발생한다..

Intent 값 변경은 다음 포스팅에 계속!



드로이드에서 리스트 알림창 List AlertDialog를 띄우는 방법에 대해 포스팅합니다.

Summary


 Public Constructors

 

 AlertDialog.Builder(Context context)

Constructor using a context for this builder and the AlertDialog it creates.

 

 AlertDialog.Builder(Context context, int theme)

Constructor using a context and theme for this builder and the AlertDialog it creates.

스타일을 지정하여 생성할 수 있습니다.


- 실행화면



- 코드 



final String[] items = { "One", "Two", "Three" };

AlertDialog.Builder builder = new AlertDialog.Builder(this);

builder.setTitle("Title");

builder.setItems(items, new DialogInterface.OnClickListener() {

@Override

public void onClick(DialogInterface dialog, int which) {

if (which == 0) {

} else if (which == 1) {

}

}

});

builder.create();

builder.show();



참고 사이트 : developer.android.com


궁금한 사항이나 수정은 댓글로 남겨주세요~


드로이드에서 알림창 AlertDialog를 띄우는 방법에 대해 포스팅합니다.

Summary


 Public Constructors

 

 AlertDialog.Builder(Context context)

Constructor using a context for this builder and the AlertDialog it creates.

 

 AlertDialog.Builder(Context context, int theme)

Constructor using a context and theme for this builder and the AlertDialog it creates.

스타일을 지정하여 생성할 수 있습니다.

다이얼로그 만들기

AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Dialog")
        .setMessage("This is Dialog")
        .setCancelable(true)
        .setPositiveButton("OK", new DialogInterface.OnClickListener() {
            // 확인 버튼 클릭시 설정
            public void onClick(DialogInterface dialog, int whichButton) {
                dialog.dismiss();
            }
        })
        .setNegativeButton("Cancle", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int whichButton) {
                dialog.cancel();
            }
        });
builder.create();
builder.show();



참고 사이트 : developer.android.com


궁금한 사항이나 수정은 댓글로 남겨주세요~

드로이드에서 화면 사이즈를 구하는 방법에 대해 포스팅합니다.


DisplayMetrics Class를 이용하여 화면 사이즈를 구합니다.

Class Overview


A structure describing general information about a display, such as its size, density, and font scaling.

To access the DisplayMetrics members, initialize an object like this:

 DisplayMetrics metrics = new DisplayMetrics();
 getWindowManager
().getDefaultDisplay().getMetrics(metrics);

- 가로 사이즈 구하기

deviceWidth = displaymetrics.widthPixels;

- 세로 사이즈 구하기 

deviceHeight = displaymetrics.heightPixels;


참고 사이트 : developer.android.com


궁금한 사항이나 수정은 댓글로 남겨주세요~


안드로이드에 google analystics를 적용하는 방법에 대해 포스팅합니다.

google analystics를 적용하는데 한참 헤매서 다음에 하시는 분들은 조금 편하게 하실수 있기를 바랍니다. ㅎㅎ


1. google Analytics 가입하기 

google Analytics를 사용하시려면 가입을 먼저 하셔야겠죠? ㅎㅎ

가입 후 새 계정을 만들고 계정에 발급된 UA-XXXXXXXX-X 로 시작하는 번호를 확인합니다.


2. 라이브러리 다운로드

libGoogleAnalyticsServices.jar

라이브러리를 다운 받고 프로젝트에 추가시켜줍니다.


3. Initialization

Before any data can be measured, you must initialize at least one tracker via GoogleAnalytics singleton by providing a Context and a Google Analytics property ID:

// Initialize a tracker using a Google Analytics property ID.
Tracker tracker = GoogleAnalytics.getInstance(this).getTracker("UA-XXXX-Y")

먼저 계정에 발급된 속성 번호로 tracker를 초기화합니다.

이제 모든 준비가 끝났습니다~ 참 쉽죠?!

4. 데이터 전송

-. HashMap 형태로 데이터를 보낼 수 있습니다.

Data is sent to Google Analytics by setting maps of parameter-value pairs on the tracker and sending them via the set and sendmethods:

/*
 * Send a screen view to Google Analytics by setting a map of parameter
 * values on the tracker and calling send.
 */

Tracker tracker = GoogleAnalytics.getInstance(this).getTracker("UA-XXXX-Y");

HashMap<String, String> hitParameters = new HashMap<String, String>();
hitParameters
.put(Fields.HIT_TYPE, "appview");
hitParameters
.put(Fields.SCREEN_NAME, "Home Screen");

tracker
.send(hitParameters);


-. Screen 이름을 설정하여 보낼 수 있습니다.

-. 가장 많이 사용하고 단순해서 추천하는 방식이라는 거 같습니다. ㅎㅎ


The MapBuilder class simplifies the process of building hits and is recommended for most use cases. Here we can send the same screen view with fewer lines of code:

// Sending the same screen view hit using MapBuilder.createAppView()
tracker
.(MapBuilder
 
.createAppView()
 
.set(Fields.SCREEN_NAME, "Home Screen")
 
.build()
);


-. Applying Values to Multiple Hits

-. 화면 이름을 설정하고 안에서 화면에서 이벤트에 대한 tracker를 설정하여 전송할 수 있습니다.

Any values set on the tracker directly will be persisted and applied to muliple hits, as in this example:

// Set screen name on the tracker to be sent with all hits.
tracker
.set(Fields.SCREEN_NAME, "Home Screen");

// Send a screen view for "Home Screen"
tracker
.send(MapBuilder
   
.createAppView()
   
.build()
);

// This event will also be sent with &cd=Home%20Screen.
tracker
.send(MapBuilder
   
.createEvent("UX", "touch", "menuButton", null)
   
.build()
);

// Clear the screen name field when we're done.
tracker
.set(Fields.SCREEN_NAME, null);

An event consists of four fields that you can use to describe a user's interaction with your app content:

Field NameTracker FieldTypeRequiredDescription
CategoryFields.EVENT_CATEGORYStringYesThe event category
ActionFields.EVENT_ACTIONStringYesThe event action
LabelFields.EVENT_LABELStringNoThe event label
ValueFields.EVENT_VALUELongNoThe event value

이벤트에 대한 field는 category와 action은 꼭 넣어주시구요!


아래 퍼미션 추가는 이전 버전인거 같으나 혹시 몰라 추가해두었습니다.

안되면 추가해주세요(필수인지는 확인 안해봤습니다 ㅎㅎ;)


Update your AndroidManifest.xml file by adding the following permissions:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />


코드 적용이 완료 되면 가입하신 google Analysics 사이트에서 실시간 탭에서 바로바로 확인이 가능합니다.


참고 사이트 : developer.android.com


궁금한 사항이나 수정은 댓글로 남겨주세요~



 

+ Recent posts