Android: Implements gradient switching between image backgrounds and layer superposition,
The purpose of this example is as follows:
1. Switching the gradient of the image background, for example, switching the gradient from red to green.
2. overlay the layers in the code, that is, to display multiple Drawable together on one component.
:
The code is simple:
(1) Layout file:
<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: paddingLeft = "@ dimen/plugin" android: paddingRight = "@ dimen/plugin" android: paddingTop = "@ dimen/activity_vertical_margin" android: paddingBottom = "@ dimen/plugin" tools: ignore = "ContentDescription" tools: context = ". mainActivity "> <ImageView android: id =" @ + id/color_iv "android: layout_width =" 200dp "android: layout_height =" 200dp "android: layout_centerHorizontal =" true "android: src = "@ drawable/image_bg_2" android: layout_margin = "20dp"/> <TextView android: id = "@ + id/note_text" android: layout_below = "@ + id/color_iv" android: layout_width = "wrap_content" android: layout_height = "wrap_content" android: textSize = "16sp" android: layout_margin = "10dp" android: text = "click the color block to switch the image background"/> <LinearLayout android: layout_width = "match_parent" android: layout_height = "48dip" android: layout_below = "@ + id/note_text" android: layout_marginBottom = "8dip" android: layout_marginLeft = "4dip" android: layout_marginRight = "4dip" android: orientation = "horizontal"> <ImageView android: layout_width = "0dip" android: layout_height = "match_parent" android: layout_margin = "4dip" android: layout_weight = "1" android: background = "#99666666" android: onClick = "onColorClicked" android: tag = "#99666666"/> <ImageView android: layout_width = "0dip" android: layout_height = "match_parent" android: layout_margin = "4dip" android: layout_weight = "1" android: background = "#9996AA39" android: onClick = "onColorClicked" android: tag = "#9996AA39"/> <ImageView android: layout_width = "0dip" android: layout_height = "match_parent" android: layout_margin = "4dip" android: layout_weight = "1" android: background = "#99C74B46" android: onClick = "onColorClicked" android: tag = "#99C74B46"/> <ImageView android: layout_width = "0dip" android: layout_height = "match_parent" android: layout_margin = "4dip" android: layout_weight = "1" android: background = "# 99F4842D" android: onClick = "onColorClicked" android: tag = "# 99F4842D"/> <ImageView android: layout_width = "0dip" android: layout_height = "match_parent" android: layout_margin = "4dip" android: layout_weight = "1" android: background = "#993F9FE0" android: onClick = "onColorClicked" android: tag = "#993F9FE0"/> <ImageView android: layout_width = "0dip" android: layout_height = "match_parent" android: layout_margin = "4dip" android: layout_weight = "1" android: background = "# 995161BC" android: onClick = "onColorClicked" android: tag = "# 995161BC"/> </LinearLayout> </RelativeLayout>
(2) Activity code:
Package com. sinatj. colorgradientanim; import android. graphics. color; import android. graphics. drawable. colorDrawable; import android. graphics. drawable. drawable; import android. graphics. drawable. layerDrawable; import android. graphics. drawable. transitionDrawable; import android. OS. build; import android. OS. handler; import android. support. v7.app. actionBarActivity; import android. OS. bundle; import android. view. view; import android. widget. imageView; public class MainActivity extends ActionBarActivity {private ImageView imageView; private Drawable oldBackground = null; private Drawable bgDrawable; @ Override protected void onCreate (Bundle savedInstanceState) {super. onCreate (savedInstanceState); setContentView (R. layout. activity_main); imageView = (ImageView) findViewById (R. id. color_iv); bgDrawable = getResources (). getDrawable (R. drawable. image_bg_1); // initial Color changeColor (Color. parseColor ("#6696AA39");} private void changeColor (int newColor) {Drawable colorDrawable = new ColorDrawable (newColor ); // layer superposition LayerDrawable ld = new LayerDrawable (new Drawable [] {bgDrawable, colorDrawable}); if (oldBackground = null) {imageView. setBackgroundDrawable (ld);} else {// TransitionDrawable td = new TransitionDrawable (new Drawable [] {oldBackground, ld}); imageView. setBackgroundDrawable (td); td. startTransition (300);} oldBackground = ld;} public void onColorClicked (View v) {int color = Color. parseColor (v. getTag (). toString (); changeColor (color );}}