안드로이드는 256 컬러를 지원하는 png 타입을 선호한다. 이유는 화면에 그릴때 가장 속도가 빠르기 때문이다.
비트맵 모형을 사용하는 방법은 안드로이드 내 'res/drawable/' 디렉터리 내에 이미지를 추가하고 XML 문서에서 '@[package:]drawable/some_file' 라고 지정하거나 자바 프로그램에서 다음과 같이 'R.drawable.some_file' 으로 지정하여 사용한다.
ImageView I = new ImageView().setImageResource(R.drawable.ic_launcher);
또는
Resources res = Context.getResources();
Drawable myImage = res.getDrawable(R.drawable.ic_launcher);
Resource 클래스는 다음과 같이 같이 애플리케이션 리소스에서 모형 객체를 읽거나 컬러와 같은 필요한 정보를 얻는데 사용한다. 리소스 클래스는 android.content.res 패키지에서 제공하며, android.content.Context 클래스내 getResources() 메서드를 사용하여 얻는다.
- public Drawable getDrawable(int id)
: /drawable 디렉터리내 모형을 얻는다.
- public int getColor(int id)
: /value 디렉터리내 컬러 모형을 얻는다.
- public DisplayMetrics getDisplayMetrics()
: 단말기가 제공하는 화면 해상도를 얻는다.
- public final AssetManager getAssets()
: Asset 디렉터리를 관리하는 AssetManager 객체를 얻는다.
- public Configuration getConfiguration()
: 단말기내 환경 설정 정보를 얻는다. 예를 들어 단말기가 쿼티 키보드를 제공하는지 아니면 터치 화면의 지원 여부 그리고 현재 단말기의 화면 방향 정보를 제공한다.
- android:src
: 비트맵 이미지 소스를 말한다.
- android:antialias
: 앤티얼라이스를 적용할 것인지 확인한다. true이면 적용을 의미한다.
- android:dither
: 디더링 효과를 적용할 것인지 확인한다.
- android:filter
: 이미지를 축소하거나 늘렸을 때 기본 이미지를 변환시켜 선명도를 높이는 필터링 효과를 적용할 것인지 확인한다.
- android:gravity
: 이미지의 위치를 나타낸다.
- android:tileMode
: 타일 모드를 나타낸다. 타일 모드를 적용하면 이미지의 위치를 나타내는 android:gravity 속성은 무시된다.
disabled : 타일 모드를 적용하지 않는다.
clamp : 이미지 밖의 영역은 경계 영역의 픽셀을 반복적으로 표현한다.
repeat : 이미지를 반복적으로 표현한다.
mirror : 이미지가 거울에 비친 것처럼 반복적으로 표현한다.
import android.app.Activity;
import android.content.Context;
import android.content.res.Resources;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.view.Gravity;
import android.view.Menu;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout.activity_main);
this.setTitle(R.string.hello_world);
LinearLayout root = new LinearLayout(this);
root.setOrientation(LinearLayout.VERTICAL);
root.setGravity(Gravity.CENTER);
LinearLayout layout = new LinearLayout(this);
addResourceDrawable(layout, R.drawable.ic_launcher);
addResourceDrawable(layout, R.drawable.ic_launcher);
addResourceDrawable(layout, R.drawable.ic_launcher);
addLabelToRoot(root, "자체 고유한 크기의 비트맵 모형");
addChildToRoot(root, layout);
setContentView(root);
}
private void addLabelToRoot(LinearLayout root, String text) {
TextView label = new TextView(this);
label.setText(text);
root.addView(label, new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT));
}
private void addChildToRoot(LinearLayout root, LinearLayout layout) {
root.addView(layout, new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT));
}
private void addResourceDrawable(LinearLayout layout, int resource) {
View view = new View(this);
final Drawable d = getResources().getDrawable(resource);
view.setBackgroundDrawable(d);
view.setLayoutParams(new LinearLayout.LayoutParams(d
.getIntrinsicWidth(), d.getIntrinsicHeight()));
layout.addView(view);
}
}
비트맵 모형은 getResources() 메서드와 getDrawable() 메서드를 사용하여 읽는다. 그리고 setBackgroundDrawable() 메서드를 사용하여 뷰의 백그라운드 형태로 모형으로 화면에 출력한다. 위 2개의 메서드들은 public void getBackgroundResource(int resid)로 대처할 수 있음. getIntrinsicWidth() 메서드와 getIntrinsicHeight() 메서드는 모형이 갖고 있는 기본적인 너비와 높이를 제공한다. getTile() 메서드는 타이틀바내 제목을 표시하는 메서드이다.
Bitmap bitmap;
BitmapFactory.Options opts = new BitmapFactory.Options();
opts.inScaled = true;
opts.inDither = true;
bitmap = BitmapFactory.decodeResource(getResources(), id, opts);
final BitmapDrawable d = new BitmapDrawable(bitmap);
[Android]상태 리스트 모형 (0) | 2013.04.20 |
---|---|
[Android]Shape 요소 (0) | 2013.04.20 |
[Android]자동완성텍스트뷰 (0) | 2013.04.08 |
[Android]그리드뷰 (0) | 2013.04.07 |
[Android]스피너 (0) | 2013.04.07 |
댓글 영역