반응형


안드로이드 개발을 하다보면 화면전환이 기본설정으로만 되어 있어서 밋밋함이 느껴질때가 많다.

그래서 좀 세련되면서도 이쁘고 깜찍하게(?).... 애니메이션효과를 넣을 수가 있다.


액티비티를 Intent에 담아서 전환할때 한줄소스와 애니메이션 xml파일만 있다면 너도 나도 멋지게 액비티비 전환을 구현가능하다.


일단 기본적으로 

Intent intent = new Intent(getApplicationContext(), FirstGame.class);
startActivity(intent);


기본적인 액티비티 전환방법이다!! 여기에다가 overridePendingTransition메소드 하나만 넣어주게되면 A->B로 전환될때 애니메이션이 들어가게된다.

 
Intent intent = new Intent(getApplicationContext(), FirstGame.class);
startActivity(intent);
overridePendingTransition(R.anim.fade, R.anim.cycle_7);


fade는 희미하게 조금씩 밝아지면서 cycle은 A->B로 갈때와 B->A로 갈때 모두 적용하게 만들수 있다. 

 애니메이션 xml은 파일은 첨부에다가 넣어두겠다!


xml폴더에 있는 효과들은 아마 영어를 해석한다면 사용하는데 큰 무리가 없을 것이다.

폴더의 위치는 res폴더에 넣어서 리소스로서 사용하면 된다.



anim.zip



반응형
블로그 이미지

Mr.비타민

,
반응형

안드로이드 어플을 개발하다보면 진동효과를 사용하고 싶을때가 있다.


기본적으로 모바일기기이다 보니 사운드효과보다는 손으로 잡고잇기에 진동효과가 더 감지하는 데에는 좋다.


이미 안드로이드에서는 그 방법에 대한 클래스가 만들어져있으므로 우리는 객체를 만들고 사용하기만 하면 된다.


Vibrator라는 클래스로부터 객체를 만들어서 거기에 맞는 사용법에 따라 사용하면된다.

사용법은 간단하다.!!!


아래처럼 진동값

Vibrator vibe = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);   

vibe.vibrate(값);                                                   //( 값 / 1000)초 동안 진동이 울린다.     

//vibe.vibrate(패턴, 0)                                          //패턴(진동,무진동)에 맞게 설정가능


기본적인 소스사용법은 이렇지만 빼먹으면 안돼는 설정이 있는데

AndroidManifest.xml에서 permission권한을 주어야한다.

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


이렇게 설정이 완료되면 어플에서도 개발하여 사용할 수 있다.


반응형
블로그 이미지

Mr.비타민

,
반응형

Thread를 이용하여 타이머를 만드는 방법중인 하나인 (마지막시간-시작한시간)을 계산하여 출력하는 방법을 사용해보려고한다.

 

Thread t = new Thread(new Runnable() {
	public void run() {
         //첫 시작한 현재시간
		final long start = System.currentTimeMillis();
         //시간포맷팅을 위한 포맷설정
		final SimpleDateFormat sdf = new SimpleDateFormat("mm:ss:SSS");
		
		while (!(t.isInterrupted())) {
			runOnUiThread(new Runnable() {
				public void run() {
                    //쓰레드가 돌때마다 계속 현재시간 갱신
					long end = System.currentTimeMillis();
                    //진행된시간을 계산하여 포맷에 맞게 TextView에 뿌리기
					dc.setText(sdf.format(end - start).substring(0, 8));
				}
			});
            //0.01초마다 Thread돌리기
			SystemClock.sleep(10);
		}
	}
});
t.start();
 이렇게 하게되면 00:00:00 의 형식으로 뷰에 뿌릴수가 있다
반응형
블로그 이미지

Mr.비타민

,
반응형

흔히 Java를 사용하다가 안드로이드로 넘어오게되면 Thread.stop(), Thread.destroy가 안먹히게 된다.

 

그래서 안드로이드에서는 interrupt()를 사용하게 되는데 이것마저 적용이 안될때가 있다.

 

그럴때는 Thread의 isInterrupt()를 while의 조건으로 넣어주면 interrupt()메소드를 실행했을때 멈추게 할수 있다.

 

Thread t = new Thread(new Runnable() {
	public void run() {
		while (!(t.isInterrupted())) {//Interrupt메소드가 호출되면 중지
			runOnUiThread(new Runnable() {
				public void run() {
					//Thread로 UI를 변경하고자한다면 
				}
			});
			SystemClock.sleep(10);
		}
	}
});
사용하고자하는 곳에서 Interrupt()를 호출하게 된다면 중지되게 된다.
반응형
블로그 이미지

Mr.비타민

,
반응형

안드로이드에서 서비스(Service)는 화면없이 동작하는 프로그램이라고 할 수 있다.

액비티비(Activity)는 화면이 종료되면 응용프로그램이 작동하지않지만 서비스는 백그라운에서 실행되기때문에 화면과 관계없이 동작한다.

일반적으로 서비스는 onStartService()로 요청을 받고 onCreate(), onStartCommand()가 기본적으로 실행되어 서비스가 계속적으로 백그라운드에서 돌게 된다. 서비스 중지 요청을 받게되면 onDestroy()가 호출되어 서비스가 종료되게 된다.

이 서술에 관한 내용은 다음 그림과 같다. 

왼쪽은 데몬형식이고, 오른쪽은 원격호출인터페이스 서비스의 경우이다.





Mservice.java

public class Mservice extends Service{
	@Override
	public IBinder onBind(Intent intent){
		return null;
	}
	@Override
	public void onCreate(){
		android.util.Log.i("서비스 테스트", "onCreate()");
		super.onCreate();
	}
	@Override
	public void onDestroy(){
		android.util.Log.i("서비스 테스트","onDestroy()");
		mp.stop();
		super.onDestroy();
	}
	@Override
	public void onStartCommand(Intent intent, int flags, int startId){
		android.util.Log.i("서비스 테스트","onStartCommand()");
		mp = MediaPlayer.create(this. R.raw.song1);
		mp.setLooping(true);
		mp.start();
		return super.onStartCommand(intent, flags, startId);
	}
}


MainActivity.java
public class MainActivity extends Activity{
	Intent intent;
	Button btnStart, btnStop;
	@Override
	public void onCreate(Bundle savedInstanceState){
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		setTitle("서비스 테스트 예제");

		intent = new Intent(this, Mservice.class);
		btnStart = (Button)findViewById(R.id.btnStart);
		btnStop = (Button)findViewById(R.id.btnStop);

		btnStart.setOnClickListener(new View.OnClickListener(){
			public void onClick(View v){
				startService(intent);
				android.util.Log.i("서비스 테스트","startService()");
			}
		});
		btnStop.setOnClickListener(new View.OnClickListener(){
			public void onClick(View v){
				stopService(intent);
				android.util.Log.i("서비스 테스트","stopService()");
			}
		});
	}
}
Service가 시작될경우는 startService()를 Service가 정지될경우 stopService()를 넣으면된다. LifteCycle은 startService()->onCreate()->onStartCommand()->stopService()->onDestroy() 순이 된다.
반응형
블로그 이미지

Mr.비타민

,
반응형

안드로이드 어플리케이션 개발언어

JAVA 언어의 특징

 

● 플랫폼에 독립적이다. 

● 거의 모든 것이 객체로 구성된 객체 지향 언어(OOP:Object Oriented Programming)이다.


● 다중 쓰레드 실행을 지원함으로 동시 작업이 가능하다.

● Garbage Collector를 사용하기 때문에 메모리 관리가 편하다.

● 예외 처리가 가능하다.

● 분산 환경을 기본으로 지원한다.

● 포인터 개념이 없고 유형 정의가 견고하여 실행 전에 프로그램의 검사가 가능하다.

반응형
블로그 이미지

Mr.비타민

,
반응형

안드로이드 어플리케이션 개발시 유의사항


오픈소스의 단점

안드로이드 OS는 소스자체가 모두 공개되는 플랫폼이므로 좋은 면으로 생각하면 많은 개발자들이 열광을 하지만 오픈 소스라고해서 반드시 좋은것만은 아니라는것에 유의해야한다. 오픈 소스이니만큼 개발자가아닌 일반 소비자나 사용자에게도 적용이 된다는 점이다. 사용자에게 개발자의 입장에서의 설명을 해도 용어를 모르는데 그 일을 해내는것은 불가능에 가깝다. 자동차의 동작원리를 잘몰라도 운전을 하는데 지장에 없다는것에 생각해보면 이해가 될것이다.

안드로이드 OS의 버전 문제

스마트폰의 경우 일반 PC와 유사한 개념으로 접근한다고 하더라도 잦은 운영체제의 변경은 결코 바람직한 현상이 아니다. 국내에서는 스마트폰을 포함한 휴대폰이라는 제품은 특성 상 사용기간이 1~2년 정도 밖에 안되는, 사용기간이 짧은 소비성상품이다. 그런 소비성 상품의 운영체제가 수시로 변경된다면, 사용자로 하여금 자신이 사용하고 있는 스마트폰이 금새 구형이 되어버린 것만 같은 느낌을 주게 되어 결과적으로 상품의 수명주기가 짧아진다. 또한 안드로이드가 현재 1.5버전에서부터 2.3버전까지 빠른시간에 업데이트가 되어왔다. 현재는 3.0을 바라보고있다. 이렇게 되면 해당 버전에서 개발된 프로그램은 그 해당버전에서 최적화 되어있지만 버전업이 될수록 그 해당 어플리케이션은 다음버전에서의 최적화를 위해서도 업그레이드가 필요하게 될것이다. 따라서, 개발자라면 이러한 부분을 감안하여 최신 버전의 안드로이드에서만 제공될 수 있는 기능을 사용하지 않는다면 가급적 낮은 버전을 기준으로 어플리케이션을 개발할 필요가 있다.

안드로이드폰을 만드는 제조사가 다른 문제

현재 가장 큰 문제 중의 하나는 같은 운영체제를 사용하지만, 적용된 하드웨어가 저마다 다르기때문에 하나의 하드웨어에서만 완벽하게 테스트를 할 수 없다는 점이다. 그나마 안드로이드의 경우에는 Windows Mobile에 비해서 하드웨어 접근 방법이 대부분 공통 API에 의해 통일되어 있기 때문에 상대적으로 나은 편이지만 그렇다고 해서 완벽한 해결책이 되어주지는 못한다. 안드로이드 어플리케이션 개발자라며 다양한 안드로이드폰이 출시된 시장 상황을 고려하여 다양한 디바이스에서 충분히 테스트할 수 있는 방안을 마련해야한다. 이러한 문제를 개인적으로 해결하기란 쉽지 않은데, 다행히 T스토어의 개발자로 등록되어있다면 SKT에서 운영하는 테스트센터를 이용할 수 있다. 테스트 센터를 사전에 예약하고 방문하면, SKTㅇ서 출시된 대부분의 안드로이드폰을 이용하여 개발하고 있는 어플리케이션의 테스트를 충분히 해 볼 수 있으니 많이 이용하도록 하자.

                                                                     참고서적 : 실전안드로이드프로그래밍(영진닷컴)
                                                                                                                    저자 : 정금호
반응형
블로그 이미지

Mr.비타민

,