思路:
自定义控件ReflectTextView继承TextView,重写onDraw()方法,在onDraw()中得到canvas,将其转化为Bitmap,再创建Bitmap的倒影,最后将Bitmap倒影重绘到canvas上。
需要注意的是:要在onMeasure()中将高度增加为原来的2倍。而且只能支持文本长度为一行的情况。
/*
* Copyright (C) 2011 TC Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
* either express or implied. See the License for the specific language governing permissions and limitations under the
* License. This code is base on the Android TextView and was Created by titanchen2000@yahoo.com.cn
*
* @author TC
*/
package com.tc.reflect;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.LinearGradient;
import android.graphics.Matrix;
import android.graphics.Paint;
import android.graphics.PorterDuffXfermode;
import android.graphics.PorterDuff.Mode;
import android.graphics.Shader.TileMode;
import android.util.AttributeSet;
import android.widget.TextView;
public class ReflectTextView extends TextView {
private Matrix mMatrix;
private Paint mPaint;
public ReflectTextView(Context context) {
super(context);
init();
}
public ReflectTextView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init();
}
public ReflectTextView(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
private void init() {
//make the shadow reverse of Y
mMatrix = new Matrix();
mMatrix.preScale(1, -1);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
setMeasuredDimension(getMeasuredWidth(), getMeasuredHeight()*2);
}
@Override
protected void onDraw(Canvas canvas) {
//draw the text from layout()
super.onDraw(canvas);
int height = getHeight();
int width = getWidth();
//make sure you can use the cache
setDrawingCacheEnabled(true);
//create bitmap from cache,this is the most important of this
Bitmap originalImage = Bitmap.createBitmap(getDrawingCache());
//create the shadow
Bitmap reflectionImage = Bitmap.createBitmap(originalImage, 0,
0, width, height/2, mMatrix, false);
//draw the shadow
canvas.drawBitmap(reflectionImage, 0, height/2, null);
if (mPaint == null) {
//process shadow bitmap to make it shadow like
mPaint = new Paint();
LinearGradient shader = new LinearGradient(0, height/2, 0,
height, 0x7fffffff, 0x0fffffff, TileMode.CLAMP);
mPaint.setShader(shader);
mPaint.setXfermode(new PorterDuffXfermode(Mode.DST_IN));
}
canvas.drawRect(0, height/2, width, height, mPaint);
}
}
参考链接:
http://www.eoeandroid.com/forum.php?mod=viewthread&tid=74623
- 大小: 12.3 KB
分享到:
相关推荐
这个例子源码就是专门针对这两个功能的实现,通过它我们可以深入理解Android中如何操作字体以及实现文字倒影效果。 首先,让我们谈谈自定义字体的使用。在Android中,我们可以通过以下步骤来实现: 1. 将自定义...
在Android开发中,为文字添加倒影效果是常见的UI设计需求,这可以增强文本的视觉吸引力,让界面看起来更加精致。"textshadow"是实现这一效果的关键。在本篇文章中,我们将深入探讨如何在Android中创建文字倒影,以及...
本篇文章将详细讲解如何在Android中为TextView实现文字倒影的特效。 首先,我们需要了解的是TextView是Android中用于显示单行或多行文本的视图组件。在默认情况下,TextView仅能显示静态的文本内容,但通过自定义...
在Android开发中,实现独特的视觉效果是提升用户体验的重要手段之一,"android 字体倒影Reflect"就是一个这样的案例。倒影效果通常用于增加UI的美观度,使得文本在视觉上更吸引人。本教程将深入探讨如何在Android...
本文将详细讲解如何在Android编程中实现文字倒影效果,涉及的关键技术包括自定义View、图形绘制以及位图操作。 首先,我们要明白Android的视图系统是基于Canvas来绘制的。所有的View在屏幕上显示时,都会调用`...
在Android开发中,实现图片倒影是一种常见的视觉效果,它能为用户界面增添动态感和美学价值。要创建图片倒影,我们可以利用Android提供的Bitmap类和Canvas类进行图像处理。以下是一些关键知识点: 1. **Bitmap类**...
本教程将重点讲解如何在Android应用中实现一个类似于iOS相册的功能,包括滑动切换、倒影效果、3D视图转换以及图片倾斜和放大的动画效果。这个功能可以直接导入到你的项目中运行,为你的应用增添一份独特的视觉体验。...
在Android开发领域,"3D立体倒影Gallery"是一个引人入胜的示例,它展示了如何通过自定义控件实现具有创新视觉效果的图片浏览功能。Gallery是Android SDK提供的一种视图组件,用于展示可滚动的项目列表,通常用于图片...
Android Gallery是一个水平滚动的视图容器,可以用来展示一系列的项目,如图片或文字,用户可以左右滑动来浏览。在早期的Android版本中,Gallery是AdapterView家族的一员,但后来在API 17中被弃用,推荐使用...
- assets:用于放置非Android系统的资源文件,例如自定义字体或图片库。 - src:包含应用程序的源代码,可以在这里创建自定义View类来实现图形特效。 - AndroidManifest.xml:应用程序的配置文件,声明权限和组件等...
12. **自定义View**:自定义View可以满足特定的界面需求,例如实现文字倒影、阴影效果等,需要理解View的工作原理和绘制流程。 13. **嵌套组件**:如ScrollView嵌套ListView,处理好滚动冲突,可以实现更复杂的滚动...
综上所述,"雷达扫描特效+倒影效果+详细注释"这个压缩包提供了一个学习Android图形编程和特效实现的实战案例。通过研究其中的代码和注释,开发者可以提升自己的技能,理解如何利用Canvas、Paint、Path以及动画机制来...
总结来说,ReflectTextView是一个展示自定义字体时间倒影的Android源码示例,它结合了文字绘制、矩阵变换、时间处理等技术,为开发者提供了扩展Android UI功能的宝贵参考。通过深入理解并运用这些技术,我们可以为...
7. **图片写文字**:在图片上添加文字,同样使用Canvas的`drawText()`方法,需要设定字体、颜色、位置和对齐方式等属性。 8. **图片翻转**:可以使用Bitmap的`createBitmap()`方法,创建一个新的Bitmap并翻转源...
2. **倒影效果**:倒影效果是通过在每个图片上添加一个镜像图像来实现的。这通常需要自定义`ImageView`或者使用第三方库,通过处理图片并将其与原始图片叠加,创建出一种倒影的视觉效果。 3. **自动滚动**:实现...
《ReflectTextView:Android自定义字体时间倒影效果详解》 在Android开发中,为了实现独特的UI效果,我们经常需要对控件进行自定义。ReflectTextView就是这样一个实例,它通过使用特殊的字体和技巧,实现了时间显示...
根据提供的描述,我们可以了解到 `ImageUtils` 支持的功能包括但不限于:缩放图片、裁剪图片、倾斜图片、旋转图片、将图片转换为圆形或圆角图片、添加倒影、添加文字或图片水印以及快速模糊等。接下来,我们将深入...