Skip to main content

Drawables in Android - Layer drawable

Let us see how to use layer drawable. You can have two or more bitmaps on different layers to create such a drawable

Using xml:

You should use layer-list in your xml file to create layerdrawable. Here is layer.xml
 <?xml version="1.0" encoding="utf-8"?>  
 <layer-list xmlns:android="http://schemas.android.com/apk/res/android">  
 <item>  
 <bitmap android:src="@drawable/whiteicon"  
 android:gravity="top|left"/>  
 </item>  
 <item>  
 <bitmap android:src="@drawable/blueicon"  
 android:gravity="top|left"/>  
 </item>  
 <item>  
 <bitmap android:src="@drawable/redicon"  
 android:gravity="top|left"/>  
 </item>  
 </layer-list>  

We are using three different bitmaps whiteicon.png, redicon.png and blueicon.png which are present in /res/drawable/mdpi folder. All these are of different sizes and aligned to top left. This drawable can be used as a background to any widget in your program.

Button b = (Button)findViewById(R.id.button1);
b.setBackgroundResource(R.drawable.layer);

Now the button would look like this




Using code:

Next let us see how to create layerdrawable using the code.
  private LayerDrawable createBmp(){  
     BitmapDrawable d1 = (BitmapDrawable) getResources().getDrawable(R.drawable.blueicon);  
     d1.setGravity(Gravity.LEFT);  
     BitmapDrawable d2 = (BitmapDrawable) getResources().getDrawable(R.drawable.redicon);  
     d1.setGravity(Gravity.LEFT);  
     BitmapDrawable d3 = (BitmapDrawable) getResources().getDrawable(R.drawable.blueicon);  
     d3.setGravity(Gravity.LEFT);  
     Drawable drawableArray[]= new Drawable[]{d3,d2,d1};  
     LayerDrawable layerDraw = new LayerDrawable(drawableArray);  
     layerDraw.setLayerInset(1, 15, 15, 0, 0);//set offset of 2 layer  
     layerDraw.setLayerInset(2,40,40,0,0);//set offset for third layer  
     return layerDraw;  
   }  


 
It is important to arrange your bitmaps properly and give offsets so that bigger bitmap does not overlap smaller one completely.


And in code add this drawable as a background to some widget.

LayerDrawable ld = createBmp();
b.setBackgroundDrawable(ld);


Now here is our layer drawable image


Comments

  1. Heya i'm for the fіrst time here. I found thiѕ
    board and I find It reɑlly useful & іt hslped mе out
    a lot. I hope too givee ѕomething back and helρ others like ʏou aided
    me.

    ReplyDelete

Post a Comment

Popular posts from this blog

Simple ListView Adapter and list item select

When you are using a listview in your applications many a times you will write your own adapter to display item. But if your list is very simple showing a list of strings, you can use inbuilt adapters like ArrayAdapter, SimpleCursorAdapter etc.

ArrayAdapterLet us look at an example

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <ListView android:layout_height="wrap_content" android:id="@+id/listView1" android:layout_width="match_parent" android:layout_margin="20dp"> </ListView> </LinearLayout>

And add these lines to the onCreate method of the activity.

super.onCreate(savedInstanceState); …

DatePickers in Android

DatePicker is a view which lets the user select a date showing a calendar or 3 spinners for dd, mm and yy.

Let us see how to use this.
Easy Method: To use a DatePicker you can use DatePickerDialog. This can be created and shown programmatically too.

publicvoidonCreate(Bundle b){/*********/ Button btn =(Button)findViewById(R.id.btn); btn.setOnClickListener(new View.OnClickListener(){@OverridepublicvoidonClick(View v){ showPickerDialog();}});}privatevoidshowPickerDialog(){ DatePickerDialog dtPickerDlg =new DatePickerDialog(this,this, 2017,10,20); dtPickerDialog.show();}

In our xml file, let us have a button and in the onclick listener of the button, let us display the date picker dialog - we call showPickerDialog.

In showPickerDialog,  we are using a random date to initialize.

The first  parameter is the context. Second parameter is the class which implements the interface OnDateSetListener. Next three parameters are year, month (Jan is 0) and …