Android 文字倾斜
来源:互联网 发布:opengl 纹理变形算法 编辑:程序博客网 时间:2024/04/30 17:56
http://blog.csdn.net/le_go/article/details/39178563
有时候Android自带的控件无法满足我们的某些要求,这时就需要我们自定义控件来实现这些功能。比如需要一个TextView里的字倾斜一定的角度,就需要自定义TextView。
- package com.leigo.ratatetextview;
-
- import android.content.Context;
- import android.content.res.TypedArray;
- import android.graphics.Canvas;
- import android.util.AttributeSet;
- import android.view.Gravity;
- import android.widget.TextView;
-
- /**
- * Created by Administrator on 2014/9/9.
- */
- public class RotateTextView extends TextView {
-
- private static final int DEFAULT_DEGREES = 0;
-
- private int mDegrees;
-
- public RotateTextView(Context context) {
- super(context, null);
- }
-
- public RotateTextView(Context context, AttributeSet attrs) {
- super(context, attrs, android.R.attr.textViewStyle);
-
- this.setGravity(Gravity.CENTER);
-
- TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.RotateTextView);
-
- mDegrees = a.getDimensionPixelSize(R.styleable.RotateTextView_degree, DEFAULT_DEGREES);
-
- a.recycle();
- }
-
- @Override
- protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
- super.onMeasure(widthMeasureSpec, heightMeasureSpec);
- setMeasuredDimension(getMeasuredWidth(), getMeasuredWidth());
- }
-
- @Override
- protected void onDraw(Canvas canvas) {
- canvas.save();
- canvas.translate(getCompoundPaddingLeft(), getExtendedPaddingTop());
- canvas.rotate(mDegrees, this.getWidth() / 2f, this.getHeight() / 2f);
- super.onDraw(canvas);
- canvas.restore();
- }
-
- public void setDegrees(int degrees) {
- mDegrees = degrees;
- }
-
- }
- <?xml version="1.0" encoding="utf-8"?>
- <resources>
- <declare-styleable name="RotateTextView">
- <attr name="degree" format="dimension" />
- </declare-styleable>
- </resources>
用法:
1.xml
- <com.leigo.ratatetextview.RotateTextView
- xmlns:app="http://schemas.android.com/apk/res-auto"
- android:id="@+id/text"
- android:text="@string/hello_world"
- app:degree="10dp"
- android:padding="10dp"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content" /></span>
2.java- RotateTextView mText = (RotateTextView) findViewById (R.id.text);
- mText.setDegrees(10);</span>
项目地址:https://coding.net/u/leigo/p/RotateTextView/git
0 0