欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android编程实现图片背景渐变切换与图层叠加效果

程序员文章站 2024-02-15 08:51:46
本文实例讲述了android编程实现图片背景渐变切换与图层叠加效果。分享给大家供大家参考,具体如下: 本例要实现的目的: 1.图片背景渐变的切换,例如渐变的从红色切换成...

本文实例讲述了android编程实现图片背景渐变切换与图层叠加效果。分享给大家供大家参考,具体如下:

本例要实现的目的:

1.图片背景渐变的切换,例如渐变的从红色切换成绿色。

2.代码中进行图层叠加,即把多个drawable叠加在一起显示在一个组件之上。

效果图:

Android编程实现图片背景渐变切换与图层叠加效果

代码很简单:

(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程序设计有所帮助。