이미지 중첩
그림을 겹쳐서 보여주고 싶은 거 있죠?
예를 들어, 아이콘에 New 플래그를 추가하거나 리본에 이미지를 중첩하려는 욕구를 나타냅니다.
e.g.
twitter.및 png
new.pg(사이즈를 50x50으로 조정)를 함께 조정
라고 말했다.
icons via
http://designdeck.co.uk/a/1212/Shiny-Twitter-Icon-with-PSD
http://findicons.com/icon/177290/label_new_red?id=177560
XML로 정의된 Layer Drawable
리소스 이미지의 경우 Layer Drawable을 XML로 정의합니다.
twitter_merge.xml<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:id="@+id/twitter">
<bitmap android:src="@drawable/twitter" />
</item>
<item android:id="@+id/new_icon">
<bitmap android:src="@drawable/new_icon" />
</item>
</layer-list>
그런데 이렇게 되면...
뜻대로 되지 않다.
안에 있는 비트맵에Gravity를 설정해야 합니다.
twitter_merge.xml<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:id="@+id/twitter">
<bitmap android:src="@drawable/twitter" />
</item>
<item android:id="@+id/new_icon">
<bitmap
android:gravity="top|left"
android:src="@drawable/new_icon" >
</bitmap>
</item>
</layer-list>
당분간
라고 표현했다.
또한 item 요소의left,top,right,bottom 각 요소에 여유를 설정할 수 있다.
twitter_merge.xml<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:id="@+id/twitter">
<bitmap android:src="@drawable/twitter" />
</item>
<item
android:id="@+id/new_icon"
android:left="50dp">
<bitmap
android:gravity="top|left"
android:src="@drawable/new_icon" >
</bitmap>
</item>
</layer-list>
새 아이콘은 왼쪽에서 50dp까지의 위치에 표시됩니다.
코드 설정
자바 코드로 설정할 때 이런 느낌이에요.Context appContext = getApplicationContext();
ImageView image = new ImageView(appContext);
BitmapDrawable newIcon = (BitmapDrawable) getResources().getDrawable(R.drawable.new_icon);
newIcon.setGravity(Gravity.LEFT | Gravity.TOP);
Drawable[] drawables = {
getResources().getDrawable(R.drawable.twitter),
newIcon
};
LayerDrawable ld = new LayerDrawable(drawables);
image.setImageDrawable(ld);
RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(WC, WC);
lp.addRule(RelativeLayout.ALIGN_TOP | RelativeLayout.ALIGN_LEFT);
mRootLayout.addView(image, lp);
하지만 XML처럼 특정 항목에 여유를 설정하는 방법은...
ForegroundImageView 사용
Foreground ImageView라는 제이크 신이 공개한 반이 있어요.
이것은 소개 문장이다.
http://qiita.com/yyaammaa/items/30fa39f39a461d59418e
그런데 대부분의 경우 Layer Drawarble이면 충분한가요?
ForegroundImageView를 만든 경과를 알고 싶은데...
Reference
이 문제에 관하여(이미지 중첩), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kuchinashi_r/items/eca7107914e00262d241
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:id="@+id/twitter">
<bitmap android:src="@drawable/twitter" />
</item>
<item android:id="@+id/new_icon">
<bitmap android:src="@drawable/new_icon" />
</item>
</layer-list>
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:id="@+id/twitter">
<bitmap android:src="@drawable/twitter" />
</item>
<item android:id="@+id/new_icon">
<bitmap
android:gravity="top|left"
android:src="@drawable/new_icon" >
</bitmap>
</item>
</layer-list>
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:id="@+id/twitter">
<bitmap android:src="@drawable/twitter" />
</item>
<item
android:id="@+id/new_icon"
android:left="50dp">
<bitmap
android:gravity="top|left"
android:src="@drawable/new_icon" >
</bitmap>
</item>
</layer-list>
Context appContext = getApplicationContext();
ImageView image = new ImageView(appContext);
BitmapDrawable newIcon = (BitmapDrawable) getResources().getDrawable(R.drawable.new_icon);
newIcon.setGravity(Gravity.LEFT | Gravity.TOP);
Drawable[] drawables = {
getResources().getDrawable(R.drawable.twitter),
newIcon
};
LayerDrawable ld = new LayerDrawable(drawables);
image.setImageDrawable(ld);
RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(WC, WC);
lp.addRule(RelativeLayout.ALIGN_TOP | RelativeLayout.ALIGN_LEFT);
mRootLayout.addView(image, lp);
Reference
이 문제에 관하여(이미지 중첩), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kuchinashi_r/items/eca7107914e00262d241텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)