最近做一个需求,需要文字中间显示图片,图文穿插和文字变色的效果。想了半天,终于找到了解决的办法,先贴效果图!
下面是主要代码,实现1的功能:
package com.example.app.androidimageandtext;
import android.app.Activity;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.text.Html;
import android.text.Spannable;
import android.text.SpannableString;
import android.text.Spanned;
import android.text.style.ImageSpan;
import android.widget.TextView;
public class MainActivity extends Activity {
private TextView mShowTv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
}
private void initView (){
mShowTv =(TextView) findViewById(R.id.showTv);
setImage(R.mipmap.icon_account_exchage);
}
//显示图片
private void setImage(int dra) {
Drawable drawable = getResources().getDrawable(dra);
drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
SpannableString spannableString = new SpannableString("pics");ImageSpan imageSpan = new ImageSpan(drawable, ImageSpan.ALIGN_BASELINE);spannableString.setSpan(imageSpan, 0, spannableString.length(), Spannable.SPAN_INCLUSIVE_EXCLUSIVE);mShowTv.append(colourTxtCashBalance("100.00"));mShowTv.append(spannableString);//将图片转为文字显示,这个是重点mShowTv.append(colourTxtNoncashBalance("110.00"));}//文字变色的部分private Spanned colourTxtCashBalance(String money) {return Html.fromHtml("<font color='#1E1E1E'>现在将变色</font><font color='#FF6138'>¥" + money+ "</font><font color='#1E1E1E'>元啦!</font>");}private Spanned colourTxtNoncashBalance(String money) {return Html.fromHtml("<font color='#1E1E1E'>再次变色</font><font color='#FF5678'>¥" + money+ "</font><font color='#1E1E1E'>元,瞬间升值10%!厉害吧。</font>");}
}
布局文件:就不贴了
源码已经很详细咯,需要工程的朋友可以去资源文件处下载
/detail/qq_15795335/9547719
原创博客,转载说明。记录自己成长的步伐!