진형아빠이야기

안녕하세요.

진형아빠입니다.


책의 6장 부분이 소스가 작동하지 않는다는 말씀들이 있으셔서 내용을 작성하였습니다.


Onclick Event에 대한 부분을 정리하였습니다.


Step1.

메뉴의 new project를 선택하여 Android Application project를 선택합니다.


Step2. 

애플리케이션 명 및 프로젝트명, 패키지명을 입력하고 Next를 클릭합니다.


Step3. 

아이콘은 굳이 건드리지 않을거라서 체크 해제하고 바로 Next를 클릭합니다.


Step4.

화면을 빈 액티비티를 만들예정입니다. Blank Activity를 선택합니다.


Step5.

액티비티명 및 레이아웃 프레그먼트 명을 입력하게 됩니다. 기본으로 설정하고 Next를 클릭합니다.


Step6. 

생성된 MainActivity.java를 보시면 기본적인 Activity의 상속이 아닌 ActionBarActivity로 설정이 되어있을겁니다.

extends ActionBarActivity 를 extends Activity로 변경하고 onCreate하단의 onCreateOptionsMenu메서드 및 onOptionItemSelected 메서드와 PlaceholderFragment 이너클래스를 삭제해주세요.


그리고 import를 적절히 해주시면 에러메세지가 사라질겁니다. import 시는 ctrl+shift+o 를 눌르시면 됩니다.


Step7.

activity_main.xml을 선택하시면 백지의 화면이 나올겁니다. 왼쪽의 Form Widgets에서 button을 드래그 하셔서 올려놓으시면 됩니다. 

버튼을 더블클릭하면 해당 소스코드로 이동을 하게 되는데 해당 버튼의 아이디가 button1이라는것을 확인할 수 있습니다.


Step8. 

Button btn = (Button)findViewById(R.id.button1);

코드로 버튼에 대해서 inflate시키시고 익명명 이너클래스 사용예제 처럼 

button.setOnClickListener(new OnClickListener(){

public void onClick(View v) {
//
버튼을 클릭했을 경우 처리해야 할 로직 삽입

Toast.makeText(getApplicationContext(), "test", Toast.LENGTH_SHORT).show();

} });

위와 같이 코딩을 하시면 OnClickListener에 대한 import문제로 에러가 발생할겁니다.

ctrl+shift+o 버튼을 눌러서 import를 해줍니다. import시는 View.OnClickListener를 선택합니다. 


Step9. 

해당 프로젝트를 마우스 우클릭을 하신후 Run as -> android application을 선택하시면 단말기 또는 에뮬레이터에서 실행이 될겁니다.

에뮬레이터는 느리니 단말기를 추천합니다.


다음에 보시는것과 같이 버튼을 클릭했을때 메세지가 뜨는것을 확인하실수 있을겁니다.


신고

Comment +1

안녕하세요.

진형아빠입니다.


개발중에 call to OpenGL ES API with no current context와 같은 에러가 DDMS에 나타날 경우 딱히 눈에 보이는것은 없지만 왠지 찜찜해서 해결을 하려고 하시거든...다음과 같이 매니페스트에 추가를 해주시면 됩니다.


<application

  android:hardwareAccelerated="true" 

        android:icon="@drawable/ic_launcher"

        android:label="@string/app_name"

        android:theme="@style/AppTheme" >


application 단 혹은 activity단에서 하드웨어 가속을 설정해주시면 없어지더군요.


androidside의 사우람님의 댓글을 보고 해결을 했었습니다.

신고

Comment +0

안녕하세요.

진형아빠입니다.


몬스터 디자인 블로그라는 곳에서 모바일 디자인 참고 사이트 15개를 정리하셧네요.

http://monsterdesign.tistory.com/1630

어떤 앱을 개발하시기 전에 한번 쯤은 살펴볼만한 곳인듯 싶습니다.

신고

Comment +0

안녕하세요.

진형아빠입니다.


구글 플레이 게임스의 새로운 개발자 기능이라는 글이 올라와서 읽다가 이렇게 정리해봅니다.

번역이 개판 오분전이니 참고바랍니다.

http://android-developers.blogspot.kr/2013/10/new-developer-features-in-google-play.html


구글플레이 게임의 새로운 개발자 기능

Posted by Greg Hartrell, Google Play Games team

모바일 게인은 현재 최대의 격전지입니다.(제일 핫하다는 의미) 사실 4대의 안드로이드 사용자 중에서 3이 게임을 플레이하고 있습니다. 이러한 사용자의 대세 흐름에서 분명 이점으로 도움이  되기위해 우리는 Android, iOS, web에 걸치는 게임을 위한 구글 플랫폼인 구글 플레이 게임을 년초에 출시했었었습니다. 구글 플레이 게임스에서 개발할 때, 게임에 손 쉽게 소셜 기능을 추가할 수 있으며, 플렛폼 독립적으로 사용자의 교전이나 획득을 사용 할 수 있는 더욱더 풍부한 게임 경험을 제공합니다.


오늘 게임에서 플레이어가 무었을 해야하는 지 쉽게 만들고, 게임 기능을 좀더 효과적으로 관리하며, 구글 클라우드에서 게임 데이터를 저장하는 구글 플레이 게임에서 3가지의 새로운 기능을 발표할려고 합니다.


개발자 콘솔에서 게임 서비스 분석

구글 플레이 개발자 콘솔의 구글 플레이 게임 영역에서 게임 플레이어의 활동에 관현 상태를 확인 할 수 있다. 얼마나 많은 유저들이 구글을 통해서 로그인 되었는지, 몇 퍼센트의 플레이어가 업적을 해결하였는지, 리더보드에서 얼마나 많은 점수가 등록되었는지 확인 할 수 있다. 


개발자 콘솔에서 게임 서비스 경고

업적과 리더보드를 위해서 ID 세탁 등을 해본적이 있나요?  배포버튼을 클릭하는것을 잊어버린적은요? tight loop에서 갑작스런 메서드 호출때문에 당신의 게임이 버틀넥(쓰로틀상태)에 빠지는것을 아나요? 두려워마세요. 새로운 기능은 개발자콘솔에서 당신이 실수를 저지르거나, 그것들을 수정하기 위한 대답으로 당신을 가이드 하기 위해서  알려주고 경고를 보여줍니다.


클라우드 저장 공간 두배~~

클라우드 세이브가 소개된 이래로 유저당, 게임당 512KB를 제공했던 클라우드 세이브는 게임 개발자에게 가장 인기있는 항목중 하나입니다. 여러분들이 더 많은 저장 공각을 요청했었으며, 우리는 그에 대한 답을 가져왔습니다. 2013.10.14부터 저장 공간은 슬롯당 256KB까지해서 총 유저당 1메가까지의 공간을 사용할 수 있습니다. 


구글 플레이 게임즈에 관해서 더 알고 싶으시다면~

구글 플레이 게임에 대해서 더 알고 싶으시고, 어떻게 시작하시는지 알고 싶으시다면  Google Play Games Services 개발자 문서를 참고하세요.


원문은 다음과 같습니다.

New Developer Features in Google Play Games

Posted by Greg Hartrell, Google Play Games team

Mobile games are on fire right now; in fact, three out of every four Android users are playing games. Earlier in the year we launched Google Play Games— Google’s platform for gaming across Android, iOS, and the web — to help you take advantage of this wave of users. Building on Google Play Services, you can quickly add new social features to your games, for richer game experiences that drive user acquisition and engagement across platforms.

Today we’re announcing three new features in Google Play Games that make it easier to understand what players are doing in your game, manage your game features more effectively, and store more game data in the Google cloud.

Game services statistics in the Developer Console

Now you can see stats about your game’s player activity in Google Play Games right in the Google Play Developer Console. You can see how many players have signed into your game through Google, the percentage of players who unlocked an achievement, and how many scores are posted to your leaderboards.

Game services alerts in the Developer Console

Did you mangle the ID for an achievement or leaderboard? Forget to hit the publish button? Do you know if your game is getting throttled because you accidentally called a method in a tight loop? Fear not! New alerts will now show up in the Developer Console to warn you when these mistakes happen, and guide you quickly to the answers on how to fix them.

Double your Cloud Save storage

Cloud Save is one of our most popular features for game developers, providing up to 512KB of data per user, per game, since it was introduced. You asked for more storage, and we are delivering on that request. Starting October 14th, 2013, you’ll be able to store up to 256KB per slot, for a total of 1MB per user. Game saves have never been happier!

More about Google Play Games

If you want learn more about what Google Play Games offers and how to get started, take a look at the Google Play Games Services developer documentation.


신고

Comment +0

안녕하세요.

진형아빠입니다.


APK빌드를 위해서 Export Wizard를 사용했더니 그 동안 볼수 없었던 알수 없는

Conversion to dalvik format failed with error 1

에러가 발생하였습니다.

에러도 없는데 말이죠.

구글링을 하니 단서를 찾을 수 잇었는데요.


우선 이런 상황이라면 분명히 이클립스를 사용하고 계실겁니다.

해결방법은 다음과 같습니다.

1. Project - Build Automatically 해제

2. Project - Clean 해당 프로젝트 선택

3. Export Wizard로 앱 패키징


잘되시나요?


신고

Comment +4

안녕하세요.

진형아빠입니다.


오늘은 "The hierarchy of the type MainActivity is inconsistent" 에러를 해결하는 방법을 알아보려합니다.

원인: 여러가지 원인이 있을수 있지만 주된 원인중 하나는 라이브러리 충돌입니다.

해결방법: 저의 경우는 프로젝트를 클릭하고 마우스 우클릭 - [Android Tool -> add Support Library]를 선택하여 해결했습니다.


신고

Comment +0

안녕하세요.

진형아빠입니다.


맘에 드셧다면 +1 버튼한번 클릭해주세요~~^^


개발중에 3G, 4G, WIFI, network not available 등을 구분하여 처리하기 위한 코드입니다.

안드로이드 펍의 아즈라엘 님의 글을 참고했습니다.

http://www.androidpub.com/index.php?mid=android_dev_info&category=108970&document_srl=2513436


private int NETWORK_WIFI 			= 1;
	private int NETWORK_MOBILE 			= 2;
	private int NETWORK_NOT_AVAILABLE 	= 0;
	
	private int getOnlineType() {
		try {
			ConnectivityManager conMan = (ConnectivityManager) getApplication().getSystemService(Context.CONNECTIVITY_SERVICE);
	
			State wifi = conMan.getNetworkInfo(1).getState(); // wifi
			if (wifi == NetworkInfo.State.CONNECTED || wifi == NetworkInfo.State.CONNECTING) return NETWORK_WIFI;
	
			State mobile = conMan.getNetworkInfo(0).getState(); 
			if (mobile == NetworkInfo.State.CONNECTED || mobile == NetworkInfo.State.CONNECTING) return NETWORK_MOBILE;

		} catch (NullPointerException e) {
			return NETWORK_NOT_AVAILABLE;
		}
		return NETWORK_NOT_AVAILABLE;
	}



신고

Comment +0

안녕하세요.

진형아빠입니다.


PackageInfo i = getApplication().getPackageManager().getPackageInfo(getApplication().getPackageName(), 0);

int versionCode = i.versionCode;

String versionName = i.versionName;

         

이렇게 사용하시면 됩니다. 뭐..try문으로 감싸줘야하는데 귀차니즘으로 생략했습니다. 

참고하세요.

신고

Comment +0

안녕하세요.

진형아빠입니다.


가장 간단하게 액티비티의 full screen을 설정하는 법을 알아보도록 하겠습니다.

<activity
       android:name=".Foo"   
       android:label="@string/foo" 
       android:theme="@android:style/Theme.NoTitleBar.Fullscreen">

이렇게 theme에 notitlebar.fullscreen을 설정해주시면 됩니다.


참 쉽죠~~

신고

Comment +0

안녕하세요.

진형아빠입니다.


이번에는 안드로이드 오픈소스 프로젝트들에 대하여  소개해드릴까합니다.

원글은 Williams Donahue란 외국블로거 분의 글입니다. 주소는 아래와 같습니다.

http://wdonahue.com/blog/files/Awesome-Android-Open-Source.html


Core Libraries


ActionBarSerlock
ActionBarSherlock is an extension of the support library designed to facilitate the use of the action bar design pattern across all versions of Android with a single API.

두말이 필요없는 최고의 라이브러리~~액션바 셜록입니다. 액션바를 안드로이드 버전에 상관없이 사용할 수 있게 해주는 라이브러리로 JakeWharton형님의 라이브러리입니다.

Android Support Library
Includes Backwards Compatible: Fragments, Notifications, View Pager, Sliding Layout, Accessibility, Loaders

하위버전의 안드로이드에서도 프레그먼트, 노티피케이션, 뷰페이저, 슬라이딩 레이아웃등을 사용할 수 있게 해주는 라이브러리입니다.



View Pager
Backwards compatible view paging with customizable tabs.

뷰페이저 라이브러리입니다. 화면을 손가락으로 swipe하면 뷰를 바꿔주는 거죠~~


NineOldAndroids
Android library for using the Honeycomb (Android 3.0) animation API on all versions of the platform back to 1.0! 

허니컴의 애니메이션을 낮은 버전에서도 사용할 수 있게 해주는 라이브러리입니다.


HoloEverywhere
Bringing Holo Theme from Android 4.1 to 2.1 and above.

네임에서도 느낄수 있듯이...홀로테마를 2.1이상에서 사용할 수 있도록 하는 라이브러리입니다. 


Otto
An enhanced Guava-based event bus with emphasis on Android support.
Otto is an event bus designed to decouple different parts of your application while still allowing them to communicate efficiently.

Downloaders


Android-Universal-Image-Loader
This project aims to provide a reusable instrument for asynchronous image loading, caching and displaying. It is originally based on Fedor Vlasov's project and has been vastly refactored and improved since then.

http통신으로 이미지를 다운 받아서 사용하는데 최고의 솔루션이죠~~


OkHttp
OkHttp is an HTTP client that’s efficient by default:
  • SPDY support allows all requests to the same host to share a socket.
  • Connection pooling reduces request latency (if SPDY isn’t available).
  • Transparent GZIP shrinks download sizes.
  • Response caching avoids the network completely for repeat requests.

JakeWharton형님의 회사에서 만든 라이브러리로 알고 있습니다. 복잡하고 귀찮은 Http통신을 라이브러리로 해결할 수 있고 SPDY프로토콜도 지원합니다.


Volley
Volley is a library that makes networking for Android apps easier and most importantly, faster.
Video Tutorial

구글에서 2013IO에서 소개햇던것으로 기억합니다. okhttp처럼 Http통신 라이브러리입니다.


Picasso
Images add much-needed context and visual flair to Android applications. Picasso allows for hassle-free image loading in your application—often in one line of code! 

UI


AndroidViews
Large collection of open source UI libraries organized nicely


App Rater
Allows your users to rate your application.
Shows a customizable rate dialog according to your chosen settings.


Asset Studio
Icon Generators 
  • Launcher icons
  • Action bar and tab icons
  • Notification icons
  • Navigation drawer indicator
  • Generic icons

Other Generators
  • Device frame generator
  • Simple nine-patch generator

Community Tools
  • Android Action Bar Style Generator
  • Android Holo Colors Generator

Graphics Packs
Collection of stencils and action bar icon that can be used in your app

New User Experience


Showcase View
The ShowcaseView library is designed to highlight and showcase specific parts of apps to the user with a distinctive and attractive overlay. This library is great for pointing out points of interest for users, gestures, or obscure but useful items.


ckChangeLog
This library provides an easy way to display a change log in your app.


Sliding Menus


https://github.com/jfeinstein10/SlidingMenu
http://developer.android.com/training/implementing-navigation/nav-drawer.html
https://github.com/SimonVT/android-menudrawer
https://github.com/eddieringle/android-undergarment


Data Processing


GSON
Gson is a Java library that can be used to convert Java Objects into their JSON representation. It can also be used to convert a JSON string to an equivalent Java object.

Json을 사용해본적이 있으시다면 이걸 모를수는 없겟죠? ㅎㅎㅎ


Jackson
High-performance JSON processor.
Now also supports XML.
Good Tutorial

GSON도 있는데 Jackson이라는 라이브러리도 있네요. 구글에서 JSON파싱에 사용하는 라이브러리입니다.


Parcelabler
Auto generates the parcelable implementation for a java class.
Very useful when you want to be able to pass an object in a bundle.


신고

Comment +0

티스토리 툴바