Android特殊字体引入,以及描边和投影
来源:互联网 发布:java多线程锁 编辑:程序博客网 时间:2024/06/07 23:37
Android特殊字体引入,以及描边和投影
标签(空格分隔): Android 字体 描边
这篇文章并非纯原创,因为项目原因,忘记记载出处,还望原作者海涵。
主要功能就是实现了特殊字体的描边
字体文件放在Asset文件夹中
public class GoldTextView extends TextView { TextPaint m_TextPaint; int mInnerColor; int mOuterColor; public GoldTextView(Context context,int outerColor,int innnerColor) { super(context); m_TextPaint = this.getPaint(); this.mInnerColor = innnerColor; this.mOuterColor = outerColor; } public GoldTextView(Context context, AttributeSet attrs) { super(context, attrs); m_TextPaint = this.getPaint(); //获取自定义的XML属性名称 TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.StrokeTextView); //获取对应的属性值 this.mInnerColor = a.getColor(R.styleable.StrokeTextView_innnerColor,0xffffff); this.mOuterColor = a.getColor(R.styleable.StrokeTextView_outerColor,0xffffff); } public GoldTextView(Context context, AttributeSet attrs, int defStyle,int outerColor,int innnerColor) { super(context, attrs, defStyle); m_TextPaint = this.getPaint(); this.mInnerColor = innnerColor; this.mOuterColor = outerColor; // TODO Auto-generated constructor stub } private boolean m_bDrawSideLine = true; // 默认采用描边 /** * */ @Override protected void onDraw(Canvas canvas) { if (m_bDrawSideLine) { // 描外层 // super.setTextColor(Color.BLUE); // 不能直接这么设,如此会导致递归 setTextColorUseReflection(mOuterColor); m_TextPaint.setStrokeWidth(8); // 描边宽度 m_TextPaint.setStyle(Paint.Style.FILL_AND_STROKE); // 描边种类 m_TextPaint.setFakeBoldText(true); // 外层text采用粗体 m_TextPaint.setShadowLayer(1, 0, 0, 0); // 字体的阴影效果,可以忽略 super.onDraw(canvas); // 描内层,恢复原先的画笔 // super.setTextColor(Color.BLUE); // 不能直接这么设,如此会导致递归 setTextColorUseReflection(mInnerColor); m_TextPaint.setStrokeWidth(0); m_TextPaint.setStyle(Paint.Style.FILL_AND_STROKE); m_TextPaint.setFakeBoldText(false); m_TextPaint.setShadowLayer(0, 0, 0, 0); } super.onDraw(canvas); } /** * 使用反射的方法进行字体颜色的设置 * @param color */ private void setTextColorUseReflection(int color) { Field textColorField; try { textColorField = TextView.class.getDeclaredField("mCurTextColor"); textColorField.setAccessible(true); textColorField.set(this, color); textColorField.setAccessible(false); } catch (NoSuchFieldException e) { e.printStackTrace(); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } m_TextPaint.setColor(color); }}
xml文件
<GoldTextView android:layout_marginTop="@dimen/y125" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="仅仅是个测试" android:shadowColor="#9d4e0c" android:shadowDx="0" android:shadowDy="0" android:shadowRadius="10" android:textSize="19sp" android:layout_gravity="center_horizontal|top" android:textColor="#ffe226" app:outerColor="#9d4e0c" app:innnerColor="#ffe226" android:paddingTop="@dimen/x520" android:id="@+id/gold_info_tv"/>
0 0
- Android特殊字体引入,以及描边和投影
- Android引入外部自定义特殊字体
- css引入特殊字体
- Android引入外部自定义特殊字体的方法
- Android引入外部自定义特殊字体的方法
- Android引入外部自定义特殊字体的方法
- Android引入外部自定义特殊字体的方法
- android-给字体设置投影
- textview设置字体以及引入新字体
- Android 外部字体的引入
- android中引入外部字体
- Android 自定义字体(引入外部字体)
- Android引入外部字体更改APP字体
- android 怎么导入和应用特殊字体在app项目
- 网页引入特殊字体的几种方案
- 网页引入特殊字体的几种方案
- 网页引入特殊字体的几种方案
- android 数据的存储和访问以及单元测试的引入
- Android PopupWindow的使用和分析
- 浅析前端XMLHttpRequest与Java后端的交互
- 构建乘积数组
- jQuery 效果函数
- HTTPS时代已来,老司机手把手指导申请免费SSL证书 韩俊强的博客
- Android特殊字体引入,以及描边和投影
- 管理和控制--软件开发
- Android 常见第三方框架汇总
- 经典加密算法凯撒密码、维吉尼亚密码,RSA算法加密的简单学习
- 最小二乘法直线拟合
- HCTF2016 ATfeild复现和对redis的利用的思考
- jQuery 事件方法
- 开始写一个博客
- 114. Flatten Binary Tree to Linked List, pre节点的妙用