当前位置: 移动技术网 > 移动技术>移动开发>Android > Android自定义TextView实现文字倾斜效果

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

2019年07月24日  | 移动技术网移动技术  | 我要评论

前言

由于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 文字倾斜的自定义控件就算基本完成了,是不是很简单。

项目结构图:


textview文字倾斜项目结构图

总结

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

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网