欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android自定义TextView实现文字倾斜效果

程序员文章站 2024-03-31 15:39:46
前言 由于android自带的textview控件没有提供倾斜的(我暂时没有找到),我们可以自定义控件来实现,下面首先来看我们实现的效果图。 textview文字倾...

前言

由于android自带的textview控件没有提供倾斜的(我暂时没有找到),我们可以自定义控件来实现,下面首先来看我们实现的效果图。

Android自定义TextView实现文字倾斜效果
textview文字倾斜

其实实现很简单,下面我们来看实现步骤:

1、新建一个类 leantextview继承textview

public class leantextview extends textview {
  public int getmdegrees() {
    return mdegrees;
  }

  public void setmdegrees(int mdegrees) {
    this.mdegrees = mdegrees;
    invalidate();
  }

  private int mdegrees;

  public leantextview(context context) {
    super(context, null);
  }

  public leantextview(context context, attributeset attrs) {
    super(context, attrs, android.r.attr.textviewstyle);
    this.setgravity(gravity.center);
    typedarray a = context.obtainstyledattributes(attrs, r.styleable.leantextview);
    mdegrees = a.getdimensionpixelsize(r.styleable.leantextview_degree, 0);
    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();
  }
}

2、在values文件中新建styleable.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
  <declare-styleable name="leantextview">
    <attr name="degree" format="dimension" />
  </declare-styleable>
</resources>

3、页面布局,引用自定义控件

  <com.aikaifa.leantextview
    android:id="@+id/lean"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:padding="10dp"
    android:text="爱开发" />

这里我们用textview记录倾斜的角度,用seekbar动态改变角度

  <com.aikaifa.leantextview
    android:id="@+id/lean"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:padding="10dp"
    android:text="爱开发" />

  <textview
    android:id="@+id/degrees"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:padding="10dp"
    android:gravity="center"/>

  <seekbar
    android:id="@+id/sb_lean"
    android:layout_width="match_parent"
    android:layout_margintop="20dp"
    android:layout_height="wrap_content"
    android:max="100"
    android:progress="30" />

java代码

    mtext= (leantextview) findviewbyid (r.id.lean);
    degrees= (textview) findviewbyid (r.id.degrees);
    seekbar sblean = (seekbar) findviewbyid(r.id.sb_lean);
    sblean.setonseekbarchangelistener(new seekbar.onseekbarchangelistener() {
      @override
      public void onprogresschanged(seekbar seekbar, int progress, boolean fromuser) {
        mtext.setmdegrees(progress);
        degrees.settext("倾斜度:"+progress);
      }

      @override
      public void onstarttrackingtouch(seekbar seekbar) {

      }

      @override
      public void onstoptrackingtouch(seekbar seekbar) {

      }
    });

这样关于textview 文字倾斜的自定义控件就算基本完成了,是不是很简单。

项目结构图:

Android自定义TextView实现文字倾斜效果
textview文字倾斜项目结构图

总结

以上就是这篇文章的全部内容了,希望本文的内容对各位android开发者们能有所帮助,如果有疑问大家可以留言交流。