검색결과 리스트
Android에 해당되는 글 61건
- 2011.12.16 [Android] Resource
- 2011.12.16 [Android] ContextMenu
- 2011.12.16 [Android] CheckMenu
- 2011.12.15 [Android] OptionMenu
- 2011.12.15 [Android] Timer Event
- 2011.12.15 [Android] Widjet Event
- 2011.12.15 [Android] Event
- 2011.12.13 [Android] MediaPlayer
- 2011.12.13 [Android] Toast
- 2011.12.13 [Android] Canvas
글
문자열, 이미지, 사운드 등이 그 예이다.
리소스 타입은 이클립스 왼편의 res 아래에 있는 내용들이다. 물론 추가를 하여 이용 할 수도 있다.
리소스 명칭은 복수형을 의미하는 s가 접미로 붙고 모두 소문자여야만 한다.
문자열은 strings, 색상은 colors, 스타일과 테마는 styles, 배열은 arrays, 크기 정보들은 dimens 에 정의 된다.
실제 예를 들어
strings에 문자열 하나, dimes에 크기 정보 하나를 넣어 두고 다음과 같은 코드를 실행 해 보면 그 결과를 확인 할 수 있다.
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
android:textSize="@dimen/size"
/>
설정
트랙백
댓글
글
Copy, Paste 등과 같은..
이것은 최초 registerForContextMenu(View view)를 통해 등록 한 후
onCreateContextMenu(ContextMenu menu, View view, ContextMenu.ConTextMenuInfo info) 를 통하여
그 화면 구성을 나타낸다.
물론 선택 내용에 대해서는 onContextItemSelected(MenuItem item) 을 통해서 그 이벤트를 정의 한다.
다음은 그 예제 코드이다.
main.xml
<Button
android:id="@+id/btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#ff0000"
android:text="Button"
android:textSize="20px"
/>
<EditText
android:id="@+id/edit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="edit"
/>
java
/** Called when the activity is first created. */
Button btn;
EditText edit;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btn = (Button)findViewById(R.id.btn);
edit = (EditText)findViewById(R.id.edit);
registerForContextMenu(btn);
registerForContextMenu(edit);
}
@Override
public void onCreateContextMenu(ContextMenu menu,View view, ContextMenu.ContextMenuInfo info){
super.onCreateContextMenu(menu,view,info);
if(view==btn){
menu.setHeaderTitle("Button menu");
menu.add(0,1,0,"Red");
menu.add(0,2,0,"Green");
menu.add(0,3,0,"Blue");
}
else if(view==edit){
menu.add(0,4,0,"텍스트1");
menu.add(0,5,0,"텍스트2");
}
}
@Override
public boolean onContextItemSelected(MenuItem item){
switch(item.getItemId()){
case 1:
btn.setTextColor(Color.RED);
return true;
case 2:
btn.setTextColor(Color.BLUE);
return true;
case 3:
btn.setTextColor(Color.GREEN);
return true;
case 4:
Toast.makeText(this, "1번", Toast.LENGTH_SHORT).show();
return true;
case 5:
Toast.makeText(this, "2번", Toast.LENGTH_SHORT).show();
return true;
}
return false;
}
다음을 실행 해 보면 버튼을 누르고 있을 떄와 에디트텍스트를 누르고 있을 때 서로 다른 점을 확인 할 수가 있을 것이다.
설정
트랙백
댓글
글
라디오 박스의 경우 group을 통하여 서로 꼭 묵어주는 것을 잊으면 안된다.
또한 이 메뉴는 컨텍스트 메뉴와 서브 메뉴에서만 사용이 가능하다.
다음은 그 예시 코드 이다.
main.xml
<Button
android:id="@+id/btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#ff0000"
android:text="Button"
android:textSize="20px"
/>
menu.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/submenu"
android:title="SubMenu">
<menu>
<group
android:id="@+id/checkble_group"
android:checkableBehavior="all">
<item
android:id="@+id/bigfont"
android:title="BigFont"
/>
</group>
<group
android:id="@+id/exclusive_checkable_group"
android:checkableBehavior="single">
<item android:id="@+id/red"
android:title="RED"
android:checked="true"/>
<item android:id="@+id/green"
android:title="GREEN"
android:checked="true"/>
<item android:id="@+id/blue"
android:title="BLUE"
android:checked="true"/>
</group>
</menu>
</item>
</menu>
java
Button btn;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btn = (Button)findViewById(R.id.btn);
}
@Override
public boolean onCreateOptionsMenu(Menu menu){
super.onCreateOptionsMenu(menu);
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu,menu);
return true;
}
@Override
public boolean onPrepareOptionsMenu(Menu menu){
if(btn.getTextSize()==40){
menu.findItem(R.id.bigfont).setChecked(true);
}
else{
menu.findItem(R.id.bigfont).setChecked(false);
}
int color = btn.getTextColors().getDefaultColor();
if(color==Color.RED){
menu.findItem(R.id.red).setChecked(true);
}
else if(color==Color.GREEN){
menu.findItem(R.id.green).setChecked(true);
}
else if(color==Color.BLUE){
menu.findItem(R.id.blue).setChecked(true);
}
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item){
switch(item.getItemId()){
case R.id.bigfont:
if(item.isCheckable()){
btn.setTextSize(20);
}
else{
btn.setTextSize(40);
}
return true;
case R.id.red:
btn.setTextColor(Color.RED);
return true;
case R.id.blue:
btn.setTextColor(Color.BLUE);
return true;
case R.id.green:
btn.setTextColor(Color.GREEN);
return true;
}
return false;
}
이 코드를 실행하면 서브 메뉴 선택에 따라서 버튼에 대한 상태가 바뀜을 확인 할 수 있다.
설정
트랙백
댓글
글
총 6개 까지만 적용이 가능하고 공간이 넘어 갈 경우 MORE를 통해서 넘겨 볼 수 있다.
옵션 메뉴 외에 컨텍스트 메뉴가 있는데 이것은 일정 시간 누르면 화면 중안에 나타나고, 서브 메뉴는 메뉴 항목을 가지는 일종의 팝업으로 화면 한 가운데 나타난다.
다음은 간단한 옵션 메뉴의 예이다.
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView text = new TextView(this);
text.setText("Click Menu");
setContentView(text);
}
@Override
public boolean onCreateOptionsMenu(Menu menu){
super.onCreateOptionsMenu(menu);
MenuItem item = menu.add(0,1,0,"1번");
//item.setIcon(R.drawable.calendar);
item.setAlphabeticShortcut('a');
menu.add(0,2,0,"2번");
//item.setIcon(R.drawable.calendar);
SubMenu sub = menu.addSubMenu("etc");
sub.add(0,3,0,"1번");
sub.add(0,4,0,"2번");
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item){
switch(item.getItemId()){
case 1:
Toast.makeText(this, "1", Toast.LENGTH_SHORT).show();
return true;
case 2:
Toast.makeText(this, "2", Toast.LENGTH_SHORT).show();
return true;
case 3:
Toast.makeText(this, "3", Toast.LENGTH_SHORT).show();
return true;
case 4:
Toast.makeText(this, "4", Toast.LENGTH_SHORT).show();
return true;
}
return false;
}
add(0,1,0,"1번") 에서 보면 처음의 인자는 그룹 아이디, 다음은 아이템 아이디, 다음은 메뉴의 순서를 말하는 것인데 0으로 두면 순차적으로 붙는다. 마지막은 캡션 문자열을 말한다.
또한 onCreateOptionsMenu 메서드는 최초 한번만 실행 되는 것이다.
다음은 XML로 구성한 경우를 살펴 보자.
먼저 res 폴더 아래에 menu 폴더를 생성하고 그곳에 menu.xml 파일을 생성한 후 다음과 같은 코드를 넣는다.
<item android:id="@+id/one"
android:title="1번"
/>
<item android:id="@+id/two"
android:title="2번"
/>
<item android:id="@+id/three"
android:title="etc">
<menu>
<item android:id="@+id/four"
android:title="3번"
/>
<item android:id="@+id/five"
android:title="4번"
/>
</menu>
</item>
다음으로 java 파일이다.
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView text = new TextView(this);
text.setText("Click Menu");
setContentView(text);
}
@Override
public boolean onCreateOptionsMenu(Menu menu){
super.onCreateOptionsMenu(menu);
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu,menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item){
switch(item.getItemId()){
case R.id.one:
Toast.makeText(this, "1", Toast.LENGTH_SHORT).show();
return true;
case R.id.two:
Toast.makeText(this, "2", Toast.LENGTH_SHORT).show();
return true;
case R.id.four:
Toast.makeText(this, "3", Toast.LENGTH_SHORT).show();
return true;
case R.id.five:
Toast.makeText(this, "4", Toast.LENGTH_SHORT).show();
return true;
}
return false;
}
이렇게 넣어주고 실행 해 보면 이전과 동일한 결과를 얻음을 확인 할 수 있을 것이다.
설정
트랙백
댓글
글
타이머는 각 시간에 따라 처리 하는 쓰레드이다.
사용 방법은 두가지가 있는데 먼저 핸들러를 이용한 것은 다음과 같은 코드이다.
public class ImageViewActivity extends Activity{
/** Called when the activity is first created. */
int time_count = 0;
TextView text;
Handler handler;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
text = (TextView)findViewById(R.id.text);
handler = new Handler(){
public void handleMessage(Message msg){
time_count++;
text.setText("Value" + time_count);
handler.sendEmptyMessageDelayed(0,1000);
}
};
handler.sendEmptyMessage(0);
}
}
이렇게 하면 카운트가 바뀌는 것을 확인 가능하다. 여담으로 하는 말이지만 setText에 int형 값만 넘길 경우에는 에뮬레이터에서 에러를 나타낸다.
다음은 CountDownTimer를 이용하는 방법이다.
public class ImageViewActivity extends Activity{
/** Called when the activity is first created. */
int time_count = 0;
TextView text;
CountDownTimer timer;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
text = (TextView)findViewById(R.id.text);
timer = new CountDownTimer(10 * 1000,1000){
public void onTick(long millisec){
time_count++;
text.setText("Value : " + time_count);
if(time_count==5){
cancel();
}
}
public void onFinish(){
text.setText("Finish");
}
}.start();
}
}
여기에서 onTick 메서드가 지정 시간 마다 돌면서 그 내용을 나타내며 전체 시간이 끝나면 onFinish 메서드에서 마무리 작업을 해 준다.
CountDownTimer의 인자에서 보면 총 10초 간격을 1초로 나누어 작업하게 되어 있다.
설정
트랙백
댓글
글
위젯을 이용하여 이벤트가 적용 된 것을 말한다.
버튼을 누른다던지 입력을 받는다던지..
간단한 코드를 먼저 보면 앞에서 했던 방식들을 그대로 포함하고 있는 것을 알 수가 있다.
public class ImageViewActivity extends Activity{
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
findViewById(R.id.btn1).setOnClickListener(listener);
findViewById(R.id.btn2).setOnClickListener(listener);
}
Button.OnClickListener listener = new Button.OnClickListener(){
public void onClick(View view){
TextView text = (TextView)findViewById(R.id.text);
switch(view.getId()){
case R.id.btn1 :
text.setText("1");
break;
case R.id.btn2 :
text.setText("2");
break;
}
}
};
}
위젯을 대상으로 했을 때는 저리 하면 되지만 키보드 입력의 경우 onCreate 내부에 setFocusable(true) 와 setFocusableTouchMode(true) 를 꼭!! 포함해야 한다. 그렇지 않으면 동작 하지 않는다!!
또한 xml 상에서 포커스를 이용하는 방법 중에는 nextFocusUp,Left,Right,Down 을 이용하여 포커스 작업을 지정 해 줄 수 있다.
쉽게 이해 하려면 Tab 키를 눌렀을 때 그 인덱스 순서를 지정하는 것과 유사하다.
설정
트랙백
댓글
글
콜백 메서드를 이용하거나 이벤트 리스너를 이용 할 수 있다.
콜백 메서드는 시스템에 의해 자동적으로 호출되는 메서드이고, 리스너는 이벤트에 대한 인터페이스 임을 알아두자.
콜백의 경우 다음과 같은 간단한 코드로 테스트 할 수가 있다.
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mView view = new mView(this);
setContentView(view);
}
protected class mView extends View
{
public mView(Context context){
super(context);
}
public boolean onTouchEvent(MotionEvent event){
super.onTouchEvent(event);
if(event.getAction()==MotionEvent.ACTION_DOWN){
Toast.makeText(ImageViewActivity.this, "touch", Toast.LENGTH_SHORT).show();
return true;
}
return false;
}
}
이 코드를 실행해서 아무 곳이나 누르면 토스트가 떠서 작동 됨을 확인 할 수 있다.
다음은 리스너를 이용하여 만든 코드를 보자.
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
View view = new View(this);
view.setOnTouchListener(listen);
setContentView(view);
}
class listener implements View.OnTouchListener
{
public boolean onTouch(View v, MotionEvent event){
if(event.getAction()==MotionEvent.ACTION_DOWN){
Toast.makeText(ImageViewActivity.this, "touch", Toast.LENGTH_SHORT).show();
return true;
}
return false;
}
}
listener listen = new listener();
처음 코드와 다른 점은 View를 생성해서 거기에 해당하는 리스너를 연결 해 준다는 것이다.
또한 인자 값에 View 객체를 받는 인자도 추가 된다. 별 다른 점은 크게 없는 것을 볼 수 있다.
다른 케이스로 액티비티가 리스너를 구현 할 수 있다. 그 방법은 다음과 같다.
public class ImageViewActivity extends Activity implements View.OnTouchListener{
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
View view = new View(this);
view.setOnTouchListener(this);
setContentView(view);
}
public boolean onTouch(View v, MotionEvent event){
if(event.getAction()==MotionEvent.ACTION_DOWN){
Toast.makeText(ImageViewActivity.this, "touch", Toast.LENGTH_SHORT).show();
return true;
}
return false;
}
}
다음은 뷰에서 리스너 구현 방법이다.
public class ImageViewActivity extends Activity{
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mView view = new mView(this);
view.setOnTouchListener(view);
setContentView(view);
}
protected class mView extends View implements View.OnTouchListener
{
public mView(Context context){
super(context);
}
public boolean onTouch(View v, MotionEvent event){
super.onTouchEvent(event);
if(event.getAction()==MotionEvent.ACTION_DOWN){
Toast.makeText(ImageViewActivity.this, "touch", Toast.LENGTH_SHORT).show();
return true;
}
return false;
}
}
}
다음은 이너 클래스를 쓰는 방법이다.
public class ImageViewActivity extends Activity{
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
View view = new View(this);
view.setOnTouchListener(listener);
setContentView(view);
}
private View.OnTouchListener listener = new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction()==MotionEvent.ACTION_DOWN){
Toast.makeText(ImageViewActivity.this, "touch", Toast.LENGTH_SHORT).show();
return true;
}
return false;
}
};
}
마지막으로 가장 함축된 형태를 나타내는 코드로 이벤트를 설정 할 때 그 순간 객체를 생성해서 넘기는 방법이다.
또한 이런 이벤트 핸들러들은 우선 순위를 가진다.
제일 처음 뷰의 리스너이고 다음이 뷰의 콜백 메서드, 마지막으로 액티비티의 콜백 메서드 순으로 호출이 된다.
설정
트랙백
댓글
글
안드로이드에서 음원을 재생하는 클래스이다.
먼저 android.Media 를 import 시키고 res 아래에 raw 를 생성한 뒤 그곳에 음원 파일을 import 한다.
단 안드로이드에서는 대문자를 지원하지 않음으로 전부 소문자 파일이어야 한다.
그렇게 준비하고 다음과 같은 코드를 실행 하면 음원이 재생 되는 것을 확인 할 수 있다.
(ain.xml 파일에는 버튼 4개를 준비한다.)
package imageview.test;
import android.app.Activity;
import android.os.*;
import android.view.*;
import android.widget.*;
import android.media.*;
import android.content.*;
public class ImageViewActivity extends Activity {
Beeper beeper1;
Beeper beeper2;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
beeper1 = new Beeper(this,R.raw.aid);
beeper2 = new Beeper(this,R.raw.kalimba);
findViewById(R.id.btn1).setOnClickListener(listener);
findViewById(R.id.btn2).setOnClickListener(listener);
findViewById(R.id.btn3).setOnClickListener(listener);
findViewById(R.id.btn4).setOnClickListener(listener);
}
Button.OnClickListener listener = new Button.OnClickListener(){
public void onClick(View v)
{
MediaPlayer player;
switch(v.getId())
{
case R.id.btn1 :
player = MediaPlayer.create(ImageViewActivity.this, R.raw.aid);
player.start();
break;
case R.id.btn2 :
player = MediaPlayer.create(ImageViewActivity.this, R.raw.kalimba);
break;
case R.id.btn3 :
beeper1.play();
break;
case R.id.btn4 :
beeper2.play();
break;
}
}
};
class Beeper
{
MediaPlayer player;
Beeper(Context context, int id)
{
player = MediaPlayer.create(context, id);
}
void play()
{
player.seekTo(0);
player.start();
}
}
}
위 코드에서 1번과 2번의 경우 무작위로 누를 경우 프로그램의 부하가 생기지만 3번과 4번의 경우는 거의 생기지 않는다. 반응과 안정성에서는 훨씬 좋다.
다음은 SoundPool을 이용한 방법이다.
SoundPool pool;
int flag=0;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
pool = new SoundPool(1,AudioManager.STREAM_MUSIC,0);
flag = pool.load(this,R.raw.aid,1);
findViewById(R.id.btn1).setOnClickListener(listener);
findViewById(R.id.btn2).setOnClickListener(listener);
findViewById(R.id.btn3).setOnClickListener(listener);
findViewById(R.id.btn4).setOnClickListener(listener);
}
Button.OnClickListener listener = new Button.OnClickListener(){
public void onClick(View v)
{
switch(v.getId())
{
case R.id.btn1 :
pool.play(flag, 1, 1, 0, 0, 1);
case R.id.btn2 :
pool.play(flag, 0.5f, 0.5f, 0, 0, 1);
case R.id.btn3 :
pool.play(flag, 1, 1, 0, 2, 1);
case R.id.btn4 :
pool.play(flag, 1, 1, 0, 0, 0.5f);
}
}
};
얼핏봐도 처음 코드 보단 단순하다. SoundPool의 생성자의 첫번재 인수는 스트림갯수이고, 그 다음은 타입, 그 다음은 품질에 해당하는 것이다.
play 메서드를 보면 재생할 사운드 지정하고, 그 다음이 좌측 볼륨, 우측 볼륨, 재생 우선 순위, 반복 횟수, 재생 속도를 나타낸다)
재생 반복 횟수에서 0은 한번만 재생하는 것이다.
설정
트랙백
댓글
글
토스트는 안드로이드의 시스템 차원에서 제공하는 팝업이다.
뭐.. 볼륨이 조절 되었다던가.. 메세지가 정상 처리 되었다거나.. 등등의 경우에 이용되고, 디버깅 용으로도 종종 이용이 된다.
이것들은 특정 시간이 지나면 자동으로 사라지며 사용자 작업에 대해서 방해 하지 않는다.
사용방법은 다음과 같다.
먼저 3개의 버튼을 만들고
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/btn1"
android:text="1번"
/>
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/btn2"
android:text="2번"
/>
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/btn3"
android:text="3번"
/>
java 파일 상에서 다음과 같은 소스 코드를 넣는다.
package imageview.test;
import android.app.Activity;
import android.os.*;
import android.view.*;
import android.widget.*;
public class ImageViewActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
findViewById(R.id.btn1).setOnClickListener(listener);
findViewById(R.id.btn2).setOnClickListener(listener);
findViewById(R.id.btn3).setOnClickListener(listener);
}
Button.OnClickListener listener = new Button.OnClickListener(){
public void onClick(View v)
{
switch(v.getId())
{
case R.id.btn1 :
Toast.makeText(ImageViewActivity.this, "잠깐 뿅~", Toast.LENGTH_SHORT).show();
break;
case R.id.btn2 :
Toast.makeText(ImageViewActivity.this, "오래 뿅~", Toast.LENGTH_LONG).show();
break;
case R.id.btn3 :
LinearLayout linear = (LinearLayout)View.inflate(ImageViewActivity.this, R.layout.main, null);
Toast toast = new Toast(ImageViewActivity.this);
toast.setView(linear);
toast.show();
break;
}
}
};
}
각기 버튼을 눌러 보면 약 2초, 4초 후에 사라지며,
맨 마지막 것은 현재 화면에 나온 것들을 Toast로 보여준다. 물론 이 역시 약간의 시간이 지나면 사라진다.
설정
트랙백
댓글
글
캔버스는 하나의 GUI 객체들을 표시 할 수 있는 화면이다.
다음은 간단한 캔버스 이용 방법이다.
import android.app.Activity;
import android.graphics.Color;
import android.graphics.Paint;
import android.os.*;
import android.view.*;
import android.widget.*;
import android.content.*;
import android.graphics.*;
public class ImageViewActivity extends Activity {
/** Called when the activity is first created. */
View page1, page2, page3;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mView view = new mView(this);
setContentView(view);
}
protected class mView extends View
{
public mView(Context context)
{
super(context);
}
public void onDraw(Canvas canvas)
{
Paint pnt = new Paint();
pnt.setColor(Color.BLACK);
//canvas.drawColor(Color.YELLOW);
//canvas.drawCircle(100,100,80,pnt);
canvas.drawPaint(pnt);
RectF rect = new RectF(10,10,100,100);
pnt.setColor(Color.WHITE);
canvas.drawRoundRect(rect,10,10, pnt);
//pnt.setColor(Color.WHITE);
//canvas.drawOval(new RectF(10,70,100,120), pnt);
//canvas.drawText("Text", 110, 40, pnt);
//pnt.setAntiAlias(true);
//canvas.drawOval(new RectF(10,70,100,120), pnt);
//canvas.drawText("Text", 110, 100, pnt);
}
}
}
위에서 보면 setAntiAlias 가 보이는데 이것은 글자를 표현 할 때 부드럽게 보이게 하는 효과를 나타낸다.
인자 값은 boolean 형태로 조절하여 쓸 수 있다.
RECENT COMMENT