图文混排

 public class MainActivity extends AutoLayoutActivity {
        private LinearLayout top_view;
        private View bottom_view;
        private TextView tv;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            tv = (TextView) findViewById(R.id.title_tv);
            String icon = "icon";
            String from = "张全蛋"+icon;
            String to = "赵铁柱";
            String txt = String.format("%s回复@%s:我是富士康3号流水线的张全蛋," +
                    "英文名叫Micheal Jack,发文名叫helodie Jaqueline", from, to);
            //设置ClickSpan,为部分文字("icon")添加点击效果
            SpannableString span = new SpannableString(txt);
            ClickableSpan clickableSpan = new ClickableSpan() {
                @Override
                public void onClick(View view) {
                }
            };
            span.setSpan(clickableSpan,
                    txt.indexOf(icon),
                    txt.indexOf(icon) + icon.length(),
                    Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
            //后来加的
            Textview.setMovementMethod(LinkMovementMethod.getInstance());
            //设置ImageSpan,占用可点击文字("icon")的位置
            span.setSpan(new ForegroundColorSpan(Color.parseColor("#00ff00")), txt.indexOf("Jack"), txt.indexOf("Jack") + "Jack".length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
//        span.setSpan(new BackgroundColorSpan(Color.parseColor("#ff0000")), txt.indexOf("Jack"), txt.indexOf("Jack") + "Jack".length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
            span.setSpan(new UnderlineSpan(), txt.indexOf("Jack"), txt.indexOf("Jack") + "Jack".length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
            Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher);
            BitmapDrawable drawable = new BitmapDrawable(getResources(), bitmap);
            //设置一个边界
            drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
            span.setSpan(new ImageSpan(drawable),
                    txt.indexOf(icon), txt.indexOf(icon) + icon.length(),
                    Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
            Bitmap bitmap1 = BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher);
            BitmapDrawable drawable1 = new BitmapDrawable(getResources(), bitmap1);
            //设置一个边界
            drawable1.setBounds(0, 0, drawable1.getIntrinsicWidth(), drawable1.getIntrinsicHeight());
//        span.setSpan(new ImageSpan(drawable1), txt.indexOf("Jack"), txt.indexOf("Jack") + "Jack".length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
            //设置TextView
            tv.setText(span);
//        tv.setHighlightColor(Color.TRANSPARENT);//消除点击时的背景色
//        tv.setMovementMethod(LinkMovementMethod.getInstance());
        }
    }

配置清单中:

      <!--设计师设计稿的尺寸-->
        <meta-data android:name="design_width" android:value="720"></meta-data>
        <meta-data android:name="design_height" android:value="1280"></meta-data>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一直以来都比较羡慕那些,界面美观,功能强大的即时通讯软件,自己慢慢摸索了好长时间,用MFC做了一个聊天程序主窗口演示小程序。 该程序主要自定义了CRichEditCtrl控件,使用XML技术与GDI处理各种图片及QQ表情组件,串行化数据等,使得程序拥有了一般聊天程序应用的特色(同时仿FeiQ程序的自动释放程序运行需要的资源到安装目录): 支持字体设置、图文混排、表情及各种格式图片的插入、发送与保存,聊天记录的保存等等... 1、聊天输入、输出窗口:使用CRichEditCtrl控件,扩展后方便了字体设置、图文混排、表情及各种格式图片的插入,及窗口上右键菜单的功能。 2、聊天表情:这一部分是我精心制作的,使用GDI处理各种图片使得程序支持各种格式图片的预览、插入、保存。使用XML技术,方便快捷管理表情数据。自动释放表情图片资源(程序所在目录)及QQ表情组件(放到\System32\ImageOle.dll),程序自动注册组件,让程序支持GIF格式表情的插入。程序仿FeiQ自动生成表情页面缓存图片,快捷增加大量表情。本程序生成缓存图时,使用多线程技术,增加、修改完后立即更新页面缓存图,几千张图片,马上生成完成。 3、表情管理:支持表情的添加、删除、修改,移动,导入、导出表情库等,修改完后自动删除需要更新的页面缓存图,及程序程序无关的文件等。 4、聊天记录:使用串行化数据技术,将聊天记录生成到Log.dat文件中,可分页浏览记录。 本程序本人精心制件,最近一段时间在弄一个即时通讯软件,程序马上完工,完工后立即上传,由于弄程序花了不少精力,出于私心暂时不公布了。。。。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值