Массив изображений, сложенных рядом друг с другом, используя LayerDrawable.(Отображение нескольких изображений в одном изображении)

У меня есть 5 изображений, мне нужно отображать это по горизонтали один за другим. Вместо того, чтобы использовать 5 разных изображений для отображения этих 5 изображений в LinearLayout с горизонтальной ориентацией, я хотел бы использовать один вид изображения. С LayerDrawable я могу добиться этого? Если да, то как?

Все, что я хочу, это разместить изображения, как в примере ниже, где каждый из "Querstions", "Tags", "Users", "Badges", "Unanspted" будет изображением.

1 ответ

Решение

Я нашел ответ, так я и сделал

каждое изображение имеет размер 48*48. Я начинаю с левого края imageivew, поэтому значение l для 1-го слоя равно l = 0 и r = 52, потому что я добавляю 4 единицы, а ширина изображения составляет 48 единиц (48+4 = 52), затем для второго изображения я использую l = 52 (начинается там, где заканчивается 1-й слой) и снова 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 и отобразить полученное объединенное изображение в режиме просмотра одного изображения.

Другие вопросы по тегам