Android/Etc.2010.12.17 15:15

참고 : http://developer.android.com/reference/android/graphics/drawable/AnimationDrawable.html

안드로이드는 animated GIF를 지원하지 않는다.

여러장의 PNG 이미지를 순차적으로 보여주는 형태로 Animation을 구성하여

animated GIF와 비슷한 효과를 줄 수가 있다.

public class Test extends Activity {
	private ImageView mLogoImageView;
	private AnimationDrawable logoAnimation;

	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.logo);

		mLogoImageView = (ImageView)findViewById(R.id.LogoImageView);
		mLogoImageView.setBackgroundResource(R.anim.logo_ani);
		
		logoAnimation = (AnimationDrawable) mLogoImageView.getBackground();

		new Handler().postDelayed(new Runnable() {
			public void run() {
				logoAnimation.start();
			}
		}, 100);
	}
}

딜레이를 주지 않고 start()를 할 경우 AnimationDrawable이 정상적으로 동작하지 않는다.
Activity에 GUI가 그려지고 이미지를 로드 하는데 시간이 걸리기 때문이다.

res/anim 폴더에 animation에 사용할 XML을 생성한다.

	
	
	
	


android:oneshot으로 반복 여부를 설정

사용할 PNG 파일은 drawable에 리소스 등록 되어 있어야 하며 android:drawable="PNG리소스ID"

android:duration="시간(ms)"로 한 프레임을 구성한다.

'Android > Etc.' 카테고리의 다른 글

animated GIF를 대체 AnimationDrawable(FrameAnimation)  (0) 2010.12.17
ProgressDialog를 이용한 Loading 구성  (0) 2010.12.17
App 종료  (0) 2010.11.25
SDCARD의 경로 가져오기  (0) 2010.11.25
앱에서 다른 앱을 실행  (0) 2010.11.25
Activity Lifecycle  (0) 2010.07.13
Posted by 회색꿈
Android/Etc.2010.12.17 14:06
네트워크로부터 데이터를 받아오거나 데이터베이스로부터 대용량의 정보를 받아올때

기다려달라는 메시지가 팝업으로 출력되고 완료시 사라지는것을 본적이 있을것이다.

ProgressDialog와 Thread, Handler를 사용하여 구성한다.

public class Test extends Activity {
    // Called when the activity is first created.
	private ProgressDialog mProgressDialog;
	private final int PROGRESS_DIALOG_COMPLET = 0;
	
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
		mProgressDialog = ProgressDialog.show(Test.this, "title",
				"content", false); // title에는 Dialog의 제목을 content에는 내용을 입력
		
		Thread thread = new Thread(new Runnable(){
			public void run(){
				//ProgressDialog가 돌아가는동안 thread로 작업할 내용 입력

				mHandler.sendEmptyMessage(PROGRESS_DIALOG_COMPLET );
				//thread 작업이 완료 되면 mHandler에 0값 전달
			}
		});
		thread.start();
    }
    
	private Handler mHandler = new Handler() {
		public void handleMessage(Message msg) {
			switch (msg.what) {
			case PROGRESS_DIALOG_COMPLET :
				mProgressDialog.dismiss(); // ProgressDialog 종료
				// ProgressDialog가 종료되고 작업할 내용 입력

				break;
			default:
				break;
			}
		}
	};

'Android > Etc.' 카테고리의 다른 글

animated GIF를 대체 AnimationDrawable(FrameAnimation)  (0) 2010.12.17
ProgressDialog를 이용한 Loading 구성  (0) 2010.12.17
App 종료  (0) 2010.11.25
SDCARD의 경로 가져오기  (0) 2010.11.25
앱에서 다른 앱을 실행  (0) 2010.11.25
Activity Lifecycle  (0) 2010.07.13
Posted by 회색꿈
Android/Etc.2010.11.25 13:30
참고 : http://developer.android.com/reference/android/app/ActivityManager.html#restartPackage(java.lang.String)

Activity Stack에 쌓여있는 Activity 및 실행중인 Activity를 종료 시키고 App을 종료 한다.
ActivityManager am = (ActivityManager)getSystemService(ACTIVITY_SERVICE);
am.restartPackage(getPackageName());
권한을 필요로 하니 아래 permission을 manifest에 추가하도록 하자


'Android > Etc.' 카테고리의 다른 글

animated GIF를 대체 AnimationDrawable(FrameAnimation)  (0) 2010.12.17
ProgressDialog를 이용한 Loading 구성  (0) 2010.12.17
App 종료  (0) 2010.11.25
SDCARD의 경로 가져오기  (0) 2010.11.25
앱에서 다른 앱을 실행  (0) 2010.11.25
Activity Lifecycle  (0) 2010.07.13
Posted by 회색꿈
Android/Etc.2010.11.25 13:18
참고 : http://developer.android.com/reference/android/os/Environment.html#getExternalStorageDirectory()

안드로이드폰이 다양한만큼 제조사마다 커스터마이징 한 부분이 많아 SDCARD로부터 I/O 처리를 할때

 "/sdcard/"를 사용한 경로 지정에서 몇몇 디바이스는 오류가 발생하는 경우가 있다.

그럴땐 아래의 코드를 통해 경로를 받아오도록 한다.

//SDCARD의 경로
Environment.getExternalStorageDirectory();

디바이스의 SDCARD 경로를 가져 올 수 있다.

특정 디바이스(갤럭시S)의 경우 위의 코드로 가져오는 경로가

외장메모리의 경로가 아니라 내장메모리의 경로를 가져오게 되니 위 코드에

"/sd" 혹은 "/external_sd"를 추가 하도록 한다.

'Android > Etc.' 카테고리의 다른 글

ProgressDialog를 이용한 Loading 구성  (0) 2010.12.17
App 종료  (0) 2010.11.25
SDCARD의 경로 가져오기  (0) 2010.11.25
앱에서 다른 앱을 실행  (0) 2010.11.25
Activity Lifecycle  (0) 2010.07.13
일정 시간후 Activity 이동(Handler)  (0) 2010.07.13
Posted by 회색꿈
Android/Etc.2010.11.25 12:12

참고 : http://developer.android.com/reference/android/content/pm/PackageManager.html#getLaunchIntentForPackage(java.lang.String)

독립된 다른 앱을 실행 해야 할 때 사용한다. 

public class Test extends Activity {
	private Intent intent;
	//실행할 다른 앱의 패키지명
	private final String appPackageName = "com.grayd.book";   
	
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        //intent에 패키지명 설정 string type
        intent = this.getPackageManager().getLaunchIntentForPackage(appPackageName);
        //다른앱을 실행
        startActivity(intent);
    }
}

startActivity(intent); 이 실행하는 부분이므로 Listener에 넣는다든지 하는식으로 사용하면 된다.

'Android > Etc.' 카테고리의 다른 글

App 종료  (0) 2010.11.25
SDCARD의 경로 가져오기  (0) 2010.11.25
앱에서 다른 앱을 실행  (0) 2010.11.25
Activity Lifecycle  (0) 2010.07.13
일정 시간후 Activity 이동(Handler)  (0) 2010.07.13
Status Bar와 Title Bar 숨기기  (0) 2010.07.13
Posted by 회색꿈
Android/View2010.07.13 16:12

TabHost의 디폴트 설정이 탭부분이 top에 위치하는 식으로 구성이 되어 있는데

구성상 탭부분을 bottom에 위치 시켜야 하는 경우가 있다.

그럴때에는 아래 xml 코드로 layout을 구성하여 사용하면 된다.

<TabHost
	android:id="@android:id/tabhost"
	android:layout_width="fill_parent"
	android:layout_height="fill_parent">
	<LinearLayout
		 android:orientation="vertical"
		 android:layout_width="fill_parent"
		 android:layout_height="fill_parent">
		<FrameLayout
		android:id="@android:id/tabcontent"
		android:layout_width="fill_parent"
		android:layout_height="wrap_content"
		android:layout_weight="1"/>
		<TabWidget
		android:id="@android:id/tabs"
		android:layout_width="fill_parent"
		android:layout_height="wrap_content"/>
	</LinearLayout>
</TabHost>

'Android > View' 카테고리의 다른 글

TabHost의 TabWidget 하단에 위치 시키기  (0) 2010.07.13
Posted by 회색꿈
Android/Etc.2010.07.13 13:51

참고 : 원문 -  http://developer.android.com/guide/topics/fundamentals.html#actlife
         번역 - http://www.kandroid.org/guide/topics/fundamentals.html#actlife

위 링크에 자세히 나와있으니 한번쯤은 꼭 읽어보길 바란다.

간략하게 상황에 따라 어떠한 메소드들이 호출 되는지만 다루도록 하겠다.

onCreate()
onStart()
onRestart()
onResume()
onPause()
onStop()
onDestroy()

Activity 최초 실행시(종료 후 재실행시)
onCreate()
onStart()
onResume()

Back Button
onPause() 
onStop()
onDestroy()

Home Button
onPause()
onStop()

재실행시(멀티테스킹중)
onRestart()
onStart()
onResume()

다른 Activity로 이동시
onPause()
onStop()

전화가 오거나 문자가 왔을시
onPause()
onStop()

통화 종료 혹은 문자 확인 후 복귀시
onRestart()
onStart()
onResume()

디바이스 회전시
onPause()
onStop()
onDestroy()
onCreate()

onStart()
onResume()

Screen Off
onPause()

Screen On
onResume()

Home Button을 길게 누를 시(최근 실행 앱 목록 호출)
onWindowFocusChanged(boolean hasFocus)

'Android > Etc.' 카테고리의 다른 글

SDCARD의 경로 가져오기  (0) 2010.11.25
앱에서 다른 앱을 실행  (0) 2010.11.25
Activity Lifecycle  (0) 2010.07.13
일정 시간후 Activity 이동(Handler)  (0) 2010.07.13
Status Bar와 Title Bar 숨기기  (0) 2010.07.13
PowerManager  (0) 2010.07.13
Posted by 회색꿈
Android/Etc.2010.07.13 11:50
참고 : http://developer.android.com/reference/android/os/Handler.html#postDelayed(java.lang.Runnable, long)

보통 앱의 첫화면에 로고를 보여주고 일정시간 후 자동으로 다음으로 넘어가거나

사용자가 터치할 경우 넘어가는 식으로 구성이 되어 있는것을 보았을 것이다.

일정 시간후 이동하는 방법에 대해서 알아보도록 하자.

Java의 timer를 사용해서도 할 수 있지만, Android에서도 Handler로 동일한 기능을

지원하니 이왕이면 Handler를 사용하도록 하자.

protected void onCreate(Bundle savedInstanceState) {
	// TODO Auto-generated method stub
	super.onCreate(savedInstanceState);
	setContentView(R.layout.index);

	Handler mHandler = new Handler();
	mHandler.postDelayed(new Runnable() {
		//Do Something
		@Override
		public void run() {
			// TODO Auto-generated method stub
			Intent i = new Intent(xxx.this, yyy.class); // xxx가 현재 activity,
								//yyy가 이동할 activity
			startActivity(i);
			finish();
		}
	}, 1000); // 1000ms
}

'Android > Etc.' 카테고리의 다른 글

앱에서 다른 앱을 실행  (0) 2010.11.25
Activity Lifecycle  (0) 2010.07.13
일정 시간후 Activity 이동(Handler)  (0) 2010.07.13
Status Bar와 Title Bar 숨기기  (0) 2010.07.13
PowerManager  (0) 2010.07.13
화면방향 전환  (0) 2009.06.28
Posted by 회색꿈
Android/Etc.2010.07.13 10:33

Status Bar와 Title Bar를 숨기는 방법은 두가지가 있다.

하나는 자바코드 내에서 또 다른 하나는 AndroidManifest.xml 파일을 통해서 가능하다.

우선 자바코드 내에서 숨기는 방법을 알아보자. 해당 Activity의 자바파일을 열어 아래

내용을 추가 하도록 하자.

protected void onCreate(Bundle savedInstanceState) {
	// TODO Auto-generated method stub
	super.onCreate(savedInstanceState);
	this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
		WindowManager.LayoutParams.FLAG_FULLSCREEN ); //Status Bar 숨기기
	this.requestWindowFeature(Window.FEATURE_NO_TITLE); //Title Bar 숨기기
	setContentView(R.layout.xxx);

자바코드에서 Title Bar를 숨길때에는 꼭 setContentView();보다 먼저 선언 하도록 하자.


AndroidManifest.xml을 통해서 숨길때에는 아래 코드를 추가 하도록 한다.

<activity...에 추가, 해당 activity에만 적용 된다.
android:theme="@android:style/Theme.NoTitleBar"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"

'Android > Etc.' 카테고리의 다른 글

앱에서 다른 앱을 실행  (0) 2010.11.25
Activity Lifecycle  (0) 2010.07.13
일정 시간후 Activity 이동(Handler)  (0) 2010.07.13
Status Bar와 Title Bar 숨기기  (0) 2010.07.13
PowerManager  (0) 2010.07.13
화면방향 전환  (0) 2009.06.28
Posted by 회색꿈
Android/Etc.2010.07.13 10:06

참고 : http://developer.android.com/reference/android/os/PowerManager.html

전원 상태를 제어하는 클래스로서 사용자로 부터 입력이 없을때 자동적으로 절전상태에 들어가는 것을

막거나 절전상태의 세부적인 사항을 조절 할 수 있다.


 Flag Value  CPU Screen Keyboard
PARTIAL_WAKE_LOCK On* Off Off
SCREEN_DIM_WAKE_LOCK On Dim Off
SCREEN_BRIGHT_WAKE_LOCK On Bright Off
FULL_WAKE_LOCK On Bright Bright

PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "My Tag");
wl.acquire();
//..screen will stay on during this section..
wl.release();
permission 에러가 발생 하니 AndroidManifest.xml에 아래 코드를 추가하여 권한을 주도록 하자.
<uses-permission android:name="android.permission.WAKE_LOCK" />

단순히 절전 모드로 들어가는것을 막으려면 아래 코드를 사용 하도록 하자.
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 

'Android > Etc.' 카테고리의 다른 글

앱에서 다른 앱을 실행  (0) 2010.11.25
Activity Lifecycle  (0) 2010.07.13
일정 시간후 Activity 이동(Handler)  (0) 2010.07.13
Status Bar와 Title Bar 숨기기  (0) 2010.07.13
PowerManager  (0) 2010.07.13
화면방향 전환  (0) 2009.06.28
Posted by 회색꿈