我有 5 张图像,我需要一个接一个地显示这个水平间隔的图像。我不想使用 5 个不同的图像在具有水平方向的 LinearLayout 中显示这 5 个图像,而是使用单个图像视图。使用 LayerDrawable 我可以做到这一点吗?如果是怎么办?
我想要的只是将图像放在下面的示例中,其中每个“问题”、“标签”、“用户”、“徽章”、“未回答”都是一个图像。
我有 5 张图像,我需要一个接一个地显示这个水平间隔的图像。我不想使用 5 个不同的图像在具有水平方向的 LinearLayout 中显示这 5 个图像,而是使用单个图像视图。使用 LayerDrawable 我可以做到这一点吗?如果是怎么办?
我想要的只是将图像放在下面的示例中,其中每个“问题”、“标签”、“用户”、“徽章”、“未回答”都是一个图像。
我找到了答案,我就是这样做的
每个图像的尺寸为 48*48。我从 imageivew 的左边缘开始,因此第一层的 l 值是 l = 0 和 r = 52,因为我提供 4 个单位填充和图像宽度是 48 个单位(48+4 = 52),然后对于第二个图像我使用 l = 52 (从第一层结束的地方开始),再次 r = 52 。如果存在尺寸为 48*48 的第三张图像,则第三层的 l 和 r 值为 l = 104 r = 52,依此类推
活动类
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_layer_list_main);
LayerDrawable drw = createHorizontallyStackedImages();
ImageView iv1 = (ImageView)findViewById(R.id.imageView1);
iv1.setImageDrawable(drw);
}
private LayerDrawable createHorizontallyStackedImages(){
BitmapDrawable d1 = (BitmapDrawable) getResources().getDrawable(R.drawable.abcgo_48_48_2x);
d1.setGravity(Gravity.LEFT);
BitmapDrawable d2 = (BitmapDrawable) getResources().getDrawable(R.drawable.amazon_48x48_2x);
d2.setGravity(Gravity.LEFT);
//BitmapDrawable d3 = (BitmapDrawable) getResources().getDrawable(R.drawable.hulu_48x48_2x);
//d3.setGravity(Gravity.LEFT);
Drawable drawableArray[]= new Drawable[]{d1,d2};
LayerDrawable layerDraw = new LayerDrawable(drawableArray);
layerDraw.setLayerInset(0, 0, 0, 52, 0);
layerDraw.setLayerInset(1,52,0,52,0);
return layerDraw;
}
活动-xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".LayerListMainActivity" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world" />
<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/textView1"
android:layout_marginTop="105dp"
android:layout_toRightOf="@+id/textView1"
android:src="@drawable/ic_launcher" />
</RelativeLayout>
结果如下所示
使用这种方法,我们可以将多个图像合并到单个 LayerDrawable 中,并在单个 imageview 中显示合并后的图像