`
zxl_ong
  • 浏览: 128763 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

制作TextView的倒影

 
阅读更多
package com.javaeye.graphics;

import android.app.Activity;
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.Bitmap.Config;
import android.graphics.PorterDuff.Mode;
import android.graphics.Shader.TileMode;
import android.graphics.drawable.BitmapDrawable;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;

public class BitmapReflect extends Activity
{
	private static final String TAG = "***BitmapFactoryOptionsTest***";
	
	LinearLayout ly;
	TextView name;
	TextView phone;
	
	public void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);
        
        name = new TextView(this);
        phone = new TextView(this);
        
        name.setText("bruce zhang");
        phone.setText("13739188962");
        
        ly = new LinearLayout(this);
        ly.setOrientation(LinearLayout.VERTICAL);
        LinearLayout.LayoutParams llp = new LinearLayout.LayoutParams(
        		LinearLayout.LayoutParams.WRAP_CONTENT,
        		LinearLayout.LayoutParams.WRAP_CONTENT);
        ly.setLayoutParams(llp);
        ly.addView(name);
        ly.addView(phone);
        
        Button button = new Button(this);
        button.setText("OK");
        button.setOnClickListener(new View.OnClickListener()
		{
			@Override
			public void onClick(View v)
			{
				 int width = phone.getWidth();
			        int height = name.getHeight() + phone.getHeight();
			        Log.e(TAG, "width: " + width + " height: " + height);
			        
			        Bitmap.Config bc = Bitmap.Config.ARGB_8888;
			        Bitmap bitmap = Bitmap.createBitmap(width, height, bc);
			        
			        Canvas canvas = new Canvas(bitmap);
			        ly.draw(canvas);
			        
			        Bitmap bitmap2 = createReflectedImage(bitmap);
			        
			        ImageView image = new ImageView(BitmapReflect.this);
			        image.setBackgroundDrawable(new BitmapDrawable(bitmap2));
			        ly.addView(image);
			        ly.postInvalidate();
			}
		});
        ly.addView(button);
        
       
        setContentView(ly);
	}
	
	public static Bitmap createReflectedImage(Bitmap originalImage) {  
	    final int reflectionGap = 4;  //倒影和原图片间的距离
	    int width = originalImage.getWidth();   
	    int height = originalImage.getHeight();
	    
	    Matrix matrix = new Matrix();   
	    matrix.preScale(1, -1);  
	    
	    //倒影部分
	    Bitmap reflectionImage = Bitmap.createBitmap(originalImage, 
	    		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(originalImage, 0, 0, null);  
	    
	    Paint defaultPaint = new Paint();   
	    //倒影和原图片间的距离
	    canvas.drawRect(0, height, width, height + reflectionGap, defaultPaint);  
	    //画倒影部分
	    canvas.drawBitmap(reflectionImage, 0, height + reflectionGap, null);  
	    
	    Paint paint = new Paint();   
	    LinearGradient shader = new LinearGradient(0, originalImage.getHeight(), 
	    		0, bitmapWithReflection.getHeight() + reflectionGap, 
	    		0x70ffffff, 0x00ffffff,   
	            TileMode.MIRROR);  
	    paint.setShader(shader);  
	    paint.setXfermode(new PorterDuffXfermode(Mode.DST_IN));  
	    canvas.drawRect(0, height, width, bitmapWithReflection.getHeight() + reflectionGap, paint);  
	    return bitmapWithReflection;   
	}  
}

 

 

分享到:
评论

相关推荐

    android显示TextView文字的倒影效果实现代码

    本篇文章将详细讲解如何在Android中为TextView实现文字倒影的特效。 首先,我们需要了解的是TextView是Android中用于显示单行或多行文本的视图组件。在默认情况下,TextView仅能显示静态的文本内容,但通过自定义...

    安卓textView相关-Android去掉TextView的上下边距.zip

    在Android开发中,`TextView` 是一个非常基础且重要的组件,用于显示文本。然而,在实际应用中,我们可能会遇到`TextView`默认带有上下边距的问题,这可能不符合我们的设计需求或者影响界面布局的美观性。标题"安卓...

    Android通过textview设置状态

    在Android开发中,TextView是用于显示单行或多行文本的视图组件,它在界面设计中扮演着重要的角色。为了使TextView更具交互性,我们常常需要根据用户操作或特定条件来改变其显示状态,比如选中、聚焦或者按下等。在...

    安卓textView相关-TextView中文本的处理.rar

    在Android开发中,TextView是显示文本的基本控件,它的使用非常广泛,无论是显示简单的文字信息,还是复杂的格式化文本,TextView都是不可或缺的一部分。这个压缩包文件"安卓textView相关-TextView中文本的处理.rar...

    旋转TextView文字显示方向

    在Android开发中,TextView是用于显示文本的基本组件。然而,有时候我们可能需要让TextView中的文字以特定的角度旋转显示,比如垂直显示或者倾斜显示,来满足界面设计的需求。这就是"旋转TextView文字显示方向"这一...

    旋转TextView文字显示

    在Android开发中,TextView是用于显示文本的基本组件。在某些设计需求中,我们可能需要让TextView的文字呈现旋转状态,比如创建一个垂直显示的标题或者实现某种动态效果。本篇文章将详细探讨如何实现“旋转TextView...

    带标签的TextView

    在Android开发中,`TextView` 是一个非常基础且重要的组件,用于显示文本信息。而"带标签的TextView",如标题所示,是在普通`TextView`的基础上进行了一定的扩展,通常是为了提供更丰富的用户界面元素,使用户可以更...

    TextView解决自动换行问题

    在Android开发中,`TextView` 是一个非常常用的控件,用于显示单行或多行文本。在某些场景下,我们可能希望限制`TextView`的显示行数,并在超出时使用省略号来表示文本被截断。这就涉及到`TextView`的自动换行与截断...

    android TextView android TextView

    ### Android TextView与ListView的Transcript Mode属性详解 在Android开发过程中,经常需要用到各种视图组件来展示信息。其中,`TextView`和`ListView`是非常重要的两个组件。它们不仅用于简单的文本展示,还可以...

    android TextView 显示Gif 图片

    在Android开发中,`TextView`通常用于显示文本内容,但有时候我们可能希望在其中嵌入动态图像,如GIF格式的图片。`TextView`默认并不支持直接显示GIF动画,因此需要通过一些特殊的方式来实现这一功能。本篇将详细...

    安卓textView相关-advanced-textview各种高级功能的textview.rar

    在Android开发中,TextView是用于显示文本的基本组件,它在用户界面中扮演着至关重要的角色。这个名为"advanced-textview各种高级功能的textview.rar"的压缩包显然包含了一些扩展了标准TextView功能的示例或者库。让...

    自定义TextVIew显示GIF图片

    在Android开发中,有时我们需要在TextView中展示动态的GIF图像,而系统默认的TextView并不支持直接播放GIF。为了实现这一功能,我们需要自定义一个TextView,并通过一系列技术手段来处理GIF文件。以下是如何在自定义...

    Android TextView查看更多

    在Android开发中,`TextView`是用于展示文本的常用组件,它可以显示单行或多行文本。在特定场景下,为了优化用户体验,我们可能希望只显示文本的一部分,如果文本内容超出了预设的显示范围,就用"点击查看更多"这样...

    安卓textView相关-androidtextview点击文字收缩效果.rar

    在Android开发中,TextView是用于显示单行或多行文本的视图组件,它在用户界面设计中扮演着重要角色。本资源"安卓textView相关-androidtextview点击文字收缩效果.rar"显然是一个关于TextView实现点击后文字收缩动画...

    Android开发TextView排版问题取消自动换行

    在Android应用开发中,TextView是显示文本的基本组件,它用于展示单行或多行文本。在某些场景下,开发者可能需要自定义TextView的行为,比如取消默认的自动换行功能,以便实现一行显示完整内容或者特定的排版效果。...

    TextView实现上线滚动

    在Android开发中,`TextView` 是一个非常基础且重要的组件,通常用于显示单行或多行文本。在某些场景下,我们可能希望让`TextView`中的文字实现上下滚动的效果,以展示更多的信息或者吸引用户的注意力。这篇博文中,...

    TextView的点击效果

    在Android开发中,TextView是应用界面中最常用的组件之一,它用于显示文本信息。为了提升用户体验,开发者经常需要为TextView添加点击效果,使用户能够清楚地感知到操作反馈。本篇文章将详细探讨如何实现TextView的...

    android TextView详解

    在Android开发中,`TextView`是UI设计中最基础且至关重要的组件之一,它用于显示文本信息,无论是简单的标题、按钮文字还是长篇的段落,`TextView`都能胜任。本篇将深入解析`TextView`的各个方面,帮助你更好地理解...

    TextView自定义各种效果实现

    在Android开发中,TextView是应用界面中最常用的组件之一,用于显示文本信息。为了满足多样化的设计需求,开发者常常需要对TextView进行自定义,以实现各种特殊效果。本篇将深入探讨如何通过自定义TextView来实现...

    android 逐行显示自动换行的textview

    在Android开发中,文本视图(TextView)是用于展示文本的基本组件。然而,有时我们可能需要实现更复杂的显示效果,比如在应用中播放通知字幕时,逐行逐字显示文本,这通常用于模仿电视字幕或者游戏中的对话效果。在...

Global site tag (gtag.js) - Google Analytics