Bitamp生成倒影

main.activity如下:

package c.c;
import android.os.Bundle;
import android.widget.ImageView;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.LinearGradient;
import android.graphics.Matrix;
import android.graphics.Paint;
import android.graphics.PorterDuff.Mode;
import android.graphics.PorterDuffXfermode;
import android.graphics.Shader.TileMode;
/**
 * Demo:生成Bitmap的倒影
 */
public class MainActivity extends Activity {
	private ImageView mImageView;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		mImageView=(ImageView) findViewById(R.id.imageView);
		Bitmap rawBitmap=BitmapFactory.decodeResource(getResources(), R.drawable.a);
		Bitmap newBitmap=getBitmapReflection(rawBitmap);
		mImageView.setImageBitmap(newBitmap);
	}

	private Bitmap getBitmapReflection(Bitmap rawBitmap) {
		final int gap = 4;
		int width = rawBitmap.getWidth();
		int height = rawBitmap.getHeight();
		Matrix matrix = new Matrix();
		//逆置
		matrix.preScale(1, -1);
		//倒影
		Bitmap reflectionBitmap =
		Bitmap.createBitmap(rawBitmap, 0, height/2,width, height/2, matrix, false);
		//带有倒影的图片
		Bitmap bitmapWithReflection =
		Bitmap.createBitmap(width,(height + height/2), Config.ARGB_8888);

		Canvas canvas = new Canvas(bitmapWithReflection);

		//画原图
		canvas.drawBitmap(rawBitmap, 0, 0, null);
		Paint paint=new Paint();
		//画分界线
		canvas.drawRect(0, height, width, height + gap, paint);
		//画倒影
		canvas.drawBitmap(reflectionBitmap, 0, height + gap, null);
		//沿Y轴渐变效果
		LinearGradient shader =
		new LinearGradient(0, rawBitmap.getHeight(), 0,
		bitmapWithReflection.getHeight() + gap, 0x70ffffff,0x00ffffff, TileMode.CLAMP);
		paint.setShader(shader);
		//因为有两层(倒影层和渐变),所以设置过渡模式
		paint.setXfermode(new PorterDuffXfermode(Mode.DST_IN));
		//画一个具有渐变效果的矩形
		canvas.drawRect(0, height, width, bitmapWithReflection.getHeight()+ gap, paint);
		return bitmapWithReflection;
	}	

}

main.xml如下:

<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"
    tools:context=".MainActivity" >

    <ImageView
        android:id="@+id/imageView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
      />

</RelativeLayout>

 

时间: 2024-09-13 03:38:35

Bitamp生成倒影的相关文章

图片倒影助手使用方法

图片倒影助手是一个绿色软件,不用安装,下载下来解压后即可使用;解压后双击 "ReflectionMaker1.4.exe"执行程序启动程序,这时将打开图片倒影助手的注册窗口,在此单击"继续试用"按钮即可启动图片倒影助手.如图1所示. 图片倒影助手注册窗口 图1 接下来,进入图片倒影助手的主界面,这时我们可以发现图片倒影助手的主界面非常漂亮,看起来也非常的简单.如图2所示. 图片倒影助手主界面 图2 在"单张处理"面板下的图片路径后面单击"

使用CSS3制作文字、图片倒影

box-reflect语法: box-reflect:none | <direction> <offset>? <mask-box-image>?     <direction> = above | below | left | right     <offset> = <length> | <percentage>     <mask-box-image> = none | <url> | <

用CSS3实现图片倒影教程

在Web制作中,有些时候需要实现一些倒影的效果.比如说,你看到一个美女,你想从另一个角度来看这个MM的风姿,如下图:   在早前要实现这样的效果我们都必须借助于类似于Photoshop这样的制作图软件来实现,然后通过引入一张image.那么除了图片,我们有没有别的方法能实现呢?值得庆幸的是,到目前为之,CSS3有一个属性box-reflect可以实现.那么今天我们要给大家介绍的就是这个属性的应用. 虽然目前仅在Chrome.Safari和Opera浏览器下支持,但这并不影响我们来学习这个属性的应

Android的改进版CoverFlow效果控件

最近研究了一下如何在Android上实现CoverFlow效果的控件,其实早在2010年,就有Neil Davies开发并开源出了这个控件,Neil大神的这篇博客地址http://www.inter-fuser.com/2010/02/android-coverflow-widget-v2.html.首先是阅读源码,弄明白核心思路后,自己重新写了一遍这个控件,并加入了详尽的注释以便日后查阅:而后在使用过程中,发现了有两点可以改进:(1)初始图片位于中间,左边空了一半空间,比较难看,可以改为重复滚

Android 使用Gallery实现3D相册(附效果图+Demo源码)

今天主要是说说如何实现Gallery的3D显示切换,Demo的代码很多是基于网上一些现成效果,感谢这些分享成果的开发者   今天因为要做一个设置开机画面的功能,主要是让用户可以设置自己的开机画面,应用层需要做让用户选择开机画面图片的功能.所以需要做一个简单的图片浏览选择程序.最后选用Gallery作为基本控件.加入了一些炫一点的元素,做成3D滑动效果.下面是Demo例子截图:   这个效果网上已经很多人做出来了,只是这次需要用到,所以自己也实践了一下(这里例子我也是根据网上一些资料编写).特意找

Swift教程_零基础学习Swift完整实例(八)_swift完整实例(添加View的动画效果、添加View的阴影)

6.添加View的动画效果 本章节主要来做明细页面点击后翻转的动画效果,该效果可以进行多种改变,以达到想要的效果. 1.首先我们需要进行翻转的正反两个view,前面我们已经做好了,分别是PKOElementDetailImageView和PKOElementDetailImageFlippedView,具体翻转动画在明细页面的控制其中进行,触发当然是PKOElementDetailImageView中的点击事件,前文已经提到.2.PKOElementDetailImageView中的点击事件调用

我的Android进阶之旅------&amp;gt;android之向Gallery中添加倒影3D效果

        在上一篇Android之Gallery和GridView两种方式与ImageSwitcher实现带预览的和幻灯片方式的两种图片浏览器后,偶然看到了一些介绍Gallery 3D效果的事例,学习了一下,现在将事例写出来,供大家分享.       大家可看http://blog.csdn.net/leehong2005/article/details/8070538和http://android.tgbus.com/Android/tutorial/201108/362438.shtm

使用Imagick绘图 文字换行 生成二维码例子

二维码的生成使用的QRcode库: http://phpqrcode.sourceforge.net/ 感觉最烦的就是文字的换行了, 处理函数来源于网络. 下面代码中的使用的函数不完整,完整代码上传 github 了 : https://github.com/zhoumengkang/imagick-demo 模板图和效果图如下: Imagick 绘图 文字换行 生成二维码 function createUserCard($username,$num,$desc,$id,$url){     /

php实现在线生成条形码示例

 php实现在线生成条形码,可以做一个条形码生成器,大家参考使用吧   代码如下:                  <?php define('IN_CB',true); include('header.php');   $keys = array('0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U',