Android编程实现图片背景渐变切换与图层叠加效果
程序员文章站
2024-02-15 08:51:46
本文实例讲述了android编程实现图片背景渐变切换与图层叠加效果。分享给大家供大家参考,具体如下:
本例要实现的目的:
1.图片背景渐变的切换,例如渐变的从红色切换成...
本文实例讲述了android编程实现图片背景渐变切换与图层叠加效果。分享给大家供大家参考,具体如下:
本例要实现的目的:
1.图片背景渐变的切换,例如渐变的从红色切换成绿色。
2.代码中进行图层叠加,即把多个drawable叠加在一起显示在一个组件之上。
效果图:
代码很简单:
(1)布局文件:
<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/activity_horizontal_margin" android:paddingright="@dimen/activity_horizontal_margin" android:paddingtop="@dimen/activity_vertical_margin" android:paddingbottom="@dimen/activity_vertical_margin" 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="点击颜色块,切换图片背景" /> <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代码:
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); //初始颜色 changecolor(color.parsecolor("#6696aa39")); } private void changecolor(int newcolor) { drawable colordrawable = new colordrawable(newcolor); //图层叠加 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); } }
更多关于android相关内容感兴趣的读者可查看本站专题:《android图形与图像处理技巧总结》、《android开发入门与进阶教程》、《android调试技巧与常见问题解决方法汇总》、《android基本组件用法总结》、《android视图view技巧总结》、《android布局layout技巧总结》及《android控件用法总结》
希望本文所述对大家android程序设计有所帮助。