Вставить изображение, чтобы дать изображение в Android
Я пытаюсь вставить изображение в статическое изображение (что-то вроде изображения внутри кадра). Я мог бы получить это в какой-то степени, но не смог правильно выразить это в данном изображении.
Оранжевая рамка - это рамка и заполнитель, которые необходимо динамически вставить в маркер на моей карте.
Вот что я попробовал:
Bitmap pic = BitmapFactory.decodeResource(getResources(),
R.drawable.bluepic);
Bitmap orangeframe = BitmapFactory.decodeResource(getResources(),R.drawable.orangeborder);
Bitmap out = combineImages(orangeframe, pic);
public Bitmap combineImages(Bitmap frame, Bitmap image)
{
Bitmap cs = null;
Bitmap rs = null;
rs = Bitmap.createScaledBitmap(frame, image.getWidth(),
image.getHeight(), true);
cs = Bitmap.createBitmap(rs.getWidth(), rs.getHeight(),
Bitmap.Config.RGB_565);
Canvas comboImage = new Canvas(cs);
comboImage.drawBitmap(image,0, 0, null);
comboImage.drawBitmap(rs, 0, 0, null);
if (rs != null) {
rs.recycle();
rs = null;
}
Runtime.getRuntime().gc();
return cs;
}
Я получаю это:
Заполнитель динамический, изображение кадра orage статическое. Я хотел бы вставить изображение непосредственно внутри оранжевого изображения программно.
Это возможно?
2 ответа
Оранжевая рамка - это изображение, верно? Вы можете наложить другой вид изображения поверх этого следующим образом:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
>
<ImageView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/map_marker"/>
<ImageView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="8dp"
android:layout_gravity="center"
android:background="@drawable/my_placeholder"/>
</FrameLayout>
Вы можете использовать 9-патч для этого.
http://developer.android.com/tools/help/draw9patch.html
Просто определите пределы на оранжевом изображении.
А затем построить иерархию следующим образом:
<FrameLayout
background="static 9patch image" >
<ImageView
src="dynamic image"/>
</FrameLayout>