Android自定义TextView实现文字倾斜效果
程序员文章站
2024-03-31 15:39:46
前言
由于android自带的textview控件没有提供倾斜的(我暂时没有找到),我们可以自定义控件来实现,下面首先来看我们实现的效果图。
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 文字倾斜的自定义控件就算基本完成了,是不是很简单。
项目结构图:
textview文字倾斜项目结构图
总结
以上就是这篇文章的全部内容了,希望本文的内容对各位android开发者们能有所帮助,如果有疑问大家可以留言交流。