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

本文实例讲述了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程序设计有所帮助。

(0)

相关推荐

  • Android空心圆及层叠效果实现代码

    本文实例为大家分享了Android空心圆及层叠效果的具体代码,供大家参考,具体内容如下 package com.bwei.test.zidingyiview2; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.util.AttributeSet; import an

  • Android实现空心圆角矩形按钮的实例代码

    页面上有时会用到背景为空心圆角矩形的Button,可以通过xml绘制出来. drawrable文件夹下bg_red_hollow_rectangle.xml <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle&qu

  • Android模仿To圈儿个人资料界面层叠淡入淡出显示效果

    前几天做的一个仿To圈个人资料界面的实现效果 下面是To圈的效果Gif图: 做这个东西其实也花了一下午的时间,一开始思路一直没理清楚,就开始盲目的去做,结果反而事倍功半. 以后要吸取教训,先详细思考清楚其中的逻辑关系,然后再开始动手写代码,这样比较容易理顺. 可以看到实现这个效果还是不难的,得分成以下三个步骤: 1:首先要有一个可拖动的详细资料布局(下半部分). 2:上半部分可跟随移动. 3:标题栏由隐藏到显示. 涉及到的技术点有: 1:屏幕像素密度DP转化. 2:自定义视图的OnTouchLi

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

    本文实例讲述了Android编程实现图片背景渐变切换与图层叠加效果.分享给大家供大家参考,具体如下: 本例要实现的目的: 1.图片背景渐变的切换,例如渐变的从红色切换成绿色. 2.代码中进行图层叠加,即把多个Drawable叠加在一起显示在一个组件之上. 效果图: 代码很简单: (1)布局文件: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="

  • Android编程单击图片实现切换效果的方法

    本文实例讲述了Android编程单击图片实现切换效果的方法.分享给大家供大家参考,具体如下: 新建一个Android项目,命名为FrameLayout 此实例主要操作src文件夹下的MainActivity.Java类文件和res/layout下的activity_main.xml布局文件 1.布局主页面代码activity_main.xml↓ <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android&qu

  • Android编程实现图片的颜色处理功能示例

    本文实例讲述了Android编程实现图片的颜色处理功能.分享给大家供大家参考,具体如下: 先看效果图: 图片的颜色处理的基本步骤: 1.先拿到一张原图 2.拿到一张和原图一样的纸 3.把纸固定在画板上 4.颜色的取值 5.进度条的拖动与监听 代码编写: 布局: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.andro

  • Android编程中selector背景选择器用法实例分析

    本文实例讲述了Android编程中selector背景选择器用法.分享给大家供大家参考,具体如下: 在Android开发过程中,经常对某一View的背景在不同的状态下,设置不同的背景,增强用户体验.如果按钮,在按下时,背景变化,如果在代码中动态设置,相对比较麻烦.Android为我们提供了selector背景选择器可以非常方便的解决这一问题. Selector的结构描述: 1.android:state_pressed="true/false" true:表示按下状态下使用,false

  • Android编程实现图片的浏览、缩放、拖动和自动居中效果

    本文实例讲述了Android编程实现图片的浏览.缩放.拖动和自动居中效果的方法.分享给大家供大家参考,具体如下: Touch.java /** * 图片浏览.缩放.拖动.自动居中 */ public class Touch extends Activity implements OnTouchListener { Matrix matrix = new Matrix(); Matrix savedMatrix = new Matrix(); DisplayMetrics dm; ImageVie

  • Android编程之图片颜色处理方法

    本文实例讲述了Android编程之图片颜色处理方法.分享给大家供大家参考,具体如下: 你想做到跟美图秀秀一样可以处理自己的照片,美化自己的照片吗?其实你也可以自己做一个这样的软件,废话不多说了,直接上图,上代码了! 效果图如下: 没处理前: 处理之后: MainActivity.java的代码如下: package net.loonggg.test; import android.app.Activity; import android.graphics.Bitmap; import andro

  • Android编程将Activity背景设置为墙纸的简单实现方法

    本文实例讲述了Android编程将Activity背景设置为墙纸的简单实现方法.分享给大家供大家参考,具体如下: 1)代码方式 Drawable wallPaper = WallpaperManager.getInstance( this).getDrawable(); this.getWindow().setBackgroundDrawable(wallPaper); 2)XML配置 在该Activity的配置中,加上: 复制代码 代码如下: android:theme = "@android

  • Android编程中图片特效处理方法小结

    本文实例总结了Android编程中图片特效处理方法.分享给大家供大家参考,具体如下: 这里介绍的Android图片处理方法包括: 转换 -  drawable To  bitmap 缩放 -  Zoom 圆角 -  Round Corner 倒影 -  Reflected bitmapPrcess  code: package com.learn.games; import android.graphics.Bitmap; import android.graphics.Canvas; impo

  • Android编程实现图片的上传和下载功能示例

    本文实例讲述了Android编程实现图片的上传和下载功能.分享给大家供大家参考,具体如下: 在实现一个Android的WEB服务客户端,比如微博,论坛客户端时,经常会使用到图片的上传和下载.在这里介绍如何利用HttpClient实现图片的上传和下载功能. 1 图片上传:上传图片时,首先获得图片的路径,创建文件,并将图片转化为字节流写入到request,并发送该请求. 客户端代码: File file = new File(imageUrl); String httpUrl = httpDomai

  • Android编程实现播放视频时切换全屏并隐藏状态栏的方法

    本文实例讲述了Android编程实现播放视频时切换全屏并隐藏状态栏的方法.分享给大家供大家参考,具体如下: 1. Demo示例: @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); if (this.getResources().getConfiguration().ori

随机推荐