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 회색꿈