Android的TextView中显示图片跟图像的方法
Android的TextView中显示图片和图像的方法
源码下载地址:猛击这里下载
实现效果如下:(感谢老罗视频的讲解) 视频下载地址:猛击这里
没事多看看 不同过的实现方案还是不错的。就是在Textview中嵌套点图片显示出来。效果不错。有人该说,你这傻逼,闲着蛋疼了一会用着用那的。呵呵。其实呢这种方法可以避免布局中混乱嵌套的问题,你只需要搞个Textview和复制点图片进Drawable文件夹下即可实现一些功能了。不需要那么麻烦。要不然你得嵌很多布局也很麻烦。
代码如下:
package lixiaodaoaaa.com.ui; import java.lang.reflect.Field; import android.app.Activity; import android.graphics.Color; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.text.Html; import android.text.Html.ImageGetter; import android.widget.TextView; /*** * by lixiaodaoaaa Tecent_weibo: http://t.qq.com/lixiaodaoaaa * xinlang_Weibo:http://weibo.com/lixiaodaoaaa * * @author lixiaodaoaaa * */ public class MainActivity extends Activity { /** * 此方法是通过资源的名字 获得资源的id;比如在Drawable文件夹下的face_01.png 获得face_01.png的id;;;;; * 主要用到了R.drawable.class.getField 通过反射的方法。 * * @param name * @return */ public int gerResouceIdByName(String name) { try { Field field = R.drawable.class.getField(name); return Integer.parseInt(field.get(null).toString()); } catch (Exception e) { System.out.println("parse fialed return 0 is here"); } return 0; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initTextView(); } private void initTextView() { TextView textView = (TextView) findViewById(R.id.tv_test01); textView.setBackgroundColor(Color.WHITE); textView.setTextColor(Color.BLACK); textView.setTextSize(20); String html1 = "图像1 <img src='face_01' /><p>"; html1 += "图像2 <img src='face_02' /><p>"; html1 += "图像3 <img src='face_03' /><p><p>";// <p>这里是段落标记。让他在回车换行下面显示;;; html1 += "图像4 <a href='http://weibo.com/lixiaodaoaaa'><img src='face_04' /></a><p>"; html1 += "图像5 <img src='face_05' />"; CharSequence charSequence = Html.fromHtml(html1, new ImageGetter() { @Override public Drawable getDrawable(String name) { int currentDrawableId = gerResouceIdByName(name);// 通过名字得到资源的id; Drawable drawable = getResources().getDrawable(currentDrawableId); // 必须对返回的drawable 设置 bounds 要不然不会显示;;; if (name.equals("face_03")) { drawable.setBounds(0, 0, drawable.getIntrinsicWidth() / 3, drawable.getIntrinsicHeight() / 3); } // 如果是图片03的话我们 将进行简单的缩放,设置为它原来的一半大小;;; else if (name.equals("face_04")) { drawable.setBounds(0, 0, drawable.getIntrinsicWidth() * 2, drawable.getIntrinsicHeight() * 2); // 如果是图表4的话我们将他倍宽倍高 设置放大;;; } else { drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight()); } return drawable; } }, null); textView.setText(charSequence); } }
源码下载地址:猛击这里下载
- 1楼lixiaodaoaaa昨天 21:32
- return field.getInt(new R.drawable());n这个方法貌似简单点吧