利用TextView中的DrawableTop实现图片在文字上方,点击TextView能实现图片旋转
来源:互联网 发布:linux 混合硬盘 编辑:程序博客网 时间:2024/05/22 04:58
在今日头条里面Home按钮点击时候,能出现旋转的动画。这里模仿今日头条的Home按钮效果,通过自定义View来实现该效果。
先给出工程代码的GitHub地址:TopTextView
其实主要是在onDraw里面先绘制图片,然后再绘制text。旋转的动画通过animation-rotate实现。具体代码如下:
@Override protected void onDraw(Canvas canvas) { if (mDrawableTop == null) { super.onDraw(canvas); return; } int drawablePadding = getCompoundDrawablePadding(); int drawableWidth = this.mDrawableTop.getIntrinsicWidth(); int drawableHeight = this.mDrawableTop.getIntrinsicHeight();// startDrawableX = (getWidth() >> 1) - ((drawablePadding + textWidth + drawableWidth) >> 1);// startDrawableY = (getHeight() >> 1) - (drawableHeight >> 1); startDrawableX = (getWidth()>>1) - (drawableWidth>>1); startDrawableY = (getHeight()>>1) - ((drawableHeight+textHeight+drawablePadding)>>1); //画旋转图片 canvas.save(); canvas.translate(startDrawableX, startDrawableY); this.mDrawableTop.draw(canvas); canvas.restore(); //画文字// int boxht = this.getMeasuredHeight() - this.getExtendedPaddingTop() - this.getExtendedPaddingBottom();// int textht = getLayout().getHeight();// int voffsetText = boxht - textht >> 1;// int boxht = this canvas.save();// canvas.translate((float) (startDrawableX + drawableWidth + drawablePadding), (float) (getExtendedPaddingTop() + voffsetText)); canvas.translate((float)(getExtendedPaddingBottom()),(float)(startDrawableY+drawableHeight+drawablePadding)); getLayout().draw(canvas); canvas.restore(); }
为了实现重复绘制,需要重写下面函数:
@Override public void invalidateDrawable(Drawable drawable) {// super.invalidateDrawable(drawable); final Rect dirty = drawable.getBounds(); int scrollX = 0; int scrollY = 0; if(drawable == this.mDrawableTop){ scrollX = startDrawableX; scrollY = startDrawableY; } this.invalidate(dirty.left + scrollX-2, dirty.top + scrollY-2, dirty.right + scrollX+2, dirty.bottom + scrollY+2); }
具体代码可以参考工程里面代码。
1 0
- 利用TextView中的DrawableTop实现图片在文字上方,点击TextView能实现图片旋转
- 图片在文字上方一起显示的TextView或者Button
- 图片下方或四周有文字,文字上方或四周有图片及其在代码中修改textview中的图片
- Android笔记——实现TextView中的图片点击
- TextView实现图片和文字展示
- iOS实现文字环绕图片textView布局
- textview中点击效果实现,比如点击textview中实现图片和文字的颜色变化(类似于button)
- 实现drawableTop 图片文字无间距
- Textview增加图片并实现点击与文字设置不同大小颜色
- TextView文字段插入图片和点击
- 如何给textView的drawableTop更换图片
- TextView 部分文字高亮、点击、添加超链接、替换字体、富文本、图片替换文字等实现
- Android自定义TextView实现文字图片居中显示
- android 文字叠加显示在图片之上控件的实现 -- 充分利用TextView
- android 文字叠加显示在图片之上控件的实现 -- 充分利用TextView
- 自定义TextView,实现图片在文字之前的富文本效果
- RxJava+Volley实现图片可点击的TextView
- TextView + Spanned实现图文混排以及图片点击交互
- 【教程】VMware安装mac OS
- 事务表结构大小探究
- 雅虎军规(WEB前端网站优化)
- 快速写好标题的9个步骤
- GObject 学习笔记汇总---13
- 利用TextView中的DrawableTop实现图片在文字上方,点击TextView能实现图片旋转
- 1013
- WIN8使用EDK2015搭建UEFI环境
- 在MyEclipse 2015中hibernate reverse engineering没有项目的解决办法
- C++ Primer Plus (第六版)第六章编程练习参考答案
- hjr教程-C++(二):VS2015+OpenCV3.1+Qt5
- hdu 5338 ZZX and Permutations (贪心+线段树+二分)
- cin、get、getline、gets、getchar区分
- MaterialSheetFab的使用