Android——带文字阴影效果的TextView

  1. 思路:向四个方向移动一个像素绘制一个重叠效果,在绘制正常文本,底部的文本就相当于以阴影效果;
  2. 代码如下:
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.widget.TextView;

public class ShadowTextView extends TextView{

	public ShadowTextView(Context context, AttributeSet attrs) {
		super(context, attrs);
	}

	protected void onDraw(Canvas canvas) {
		//先绘制一个边框在调用父类的onDraw()方法,绘制正常文本
		drawText(canvas);
		super.onDraw(canvas);
	}

	private void drawText(Canvas canvas) {
		//1.获取画笔对象,这里如果不用父类自己new的话要注意设置字体的大小,不然会使用默认大小会,字会很小
		Paint paint = getPaint();
		//2.获取文本
		String text = String.valueOf(getText());
		//3.定位字体位置
		//第一行左边距
		float startX = getLayout().getLineLeft(0);
		//第一行文字的底部边距
		float startY = getBaseline();
		//分别向左,向上,向下,向右一个像素绘制文本形成重叠效果
		paint.setColor(getResources().getColor(R.color.textShadowColor));
		canvas.drawText(text, startX + 1, startY, paint);
		canvas.drawText(text, startX, startY - 1, paint);
		canvas.drawText(text, startX , startY + 1, paint);
		canvas.drawText(text, startX - 1, startY, paint);

	}

}
时间: 2024-10-03 02:38:17

Android——带文字阴影效果的TextView的相关文章

android 带文字阴影的button

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:ori

android 带文字阴影的按钮

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:ori

【Android】Android实现自定义带文字和图片的Button

在Android开发中经常会需要用到带文字和图片的button,下面来讲解一下常用的实现办法. 一.用系统自带的Button实现 最简单的一种办法就是利用系统自带的Button来实现,这种方式代码量最小.在Button的属性中有一个是drawableLeft,这个属性可以把图片设置在文字的左边,但是这种方式必须让icon的背景色是透明的,如果icon的背景色不是透明的话,会导致点击按钮时icon部分的背景色不会发生变化. 主要代码: <Button android:id="@+id/bt3

Android实现自定义带文字和图片的Button

在Android开发中经常会需要用到带文字和图片的button,下面来讲解一下常用的实现办法. 一.用系统自带的Button实现 最简单的一种办法就是利用系统自带的Button来实现,这种方式代码量最小.在Button的属性中有一个是drawableLeft,这个 属性可以把图片设置在文字的左边,但是这种方式必须让icon的背景色是透明的,如果icon的背景色不是透明的话,会导致点击按钮时icon部分的背景 色不会发生变化. 主要代码: <Button android:id="@+id/b

android如何写一个循环文字滚动的TextView

效果图: 在layout中这样来声明: <com.kaixin001.view.ScrollText android:id="@+id/news_statustxt" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingLeft="10dp" android:paddingRight="1

自定义实现带文字标题的瀑布流效果

在网上能找到的大部分资料中的瀑布流效果都是单纯的照片实现,现在我来实现一个带文字标题的.效果如下: 每个item都是由图片和文字标题两部分组成. 布局方式为ScrollView里面嵌套一个水平方向的LinearLayout,里面再嵌套两个竖直方向的LinearLayout,然后判断竖直方向的两个LinearLayout的高度,向比较低的那个Linearlayout里面添加item. 下面是代码 <ScrollView xmlns:android="http://schemas.androi

Android控件Editext、TextView属性详解

EditText属性描述 android:layout_gravity="center_vertical"//设置控件显示的位置:默认top,这里居中显示,还有bottom android:hint="请输入数字!"//设置显示在空间上的提示信息 android:numeric="integer"//设置只能输入整数,如果是小数则是:decimal android:singleLine="true"//设置单行输入,一旦设置为

解读(五):分析KeyboardFragment, 带文字和表情的评论发表面板

解读(五):分析KeyboardFragment, 带文字和表情的评论发表面板 其实就是这个常见的功能 这个功能涉及到很多类, 我一个一个分析 KeyboardFragment类 /** * 底部带emotion面板的文字和表情的评论功能的Fragment **/ public class KeyboardFragment extends BaseTabNavFragment { @Bind(R.id.et_input) EditText mInput; //输入框 @Bind(R.id.emo

关于 Android 测量文字宽度的方法

2020-02-04 关键字:测量文本长度.测量字符串长度 最近在写 APK 时遇到了需要获取文本宽度的需求.其实就是要自己写一个算法以实现文本超长自动换行的功能. 在实现这一功能时发现了原来在 Android 中测量文本的长度,或者说宽度可以分两种情况: 1.测量绝对文本的长度 2.测量相对文本的长度 首先必须声明这两个概念是笔者自己定义的,因为我实在找不着更贴切的词句去形容它们了. 什么是绝对文本呢? 就是指那些字号.字体.粗细等属性不受在所运行的硬件设备上的 Android 系统的配置所影