一个显示富文本的 TextView

MosLdy 7年前
   <h2><strong>XRichText</strong></h2>    <p>XRichText是一个可以显示Html富文本的TextView。可以用于显示新闻、商品详情等场景。</p>    <p style="text-align: center;"><img alt="一个显示富文本的 TextView" src="https://simg.open-open.com/show/cecc111cc45036e373f4ae45a2211ae8.gif"></p>    <h3><strong>使用</strong></h3>    <ul>     <li>Gradle : compile 'cn.droidlover:XRichText:1.0.0'</li>     <li>Github :XRichText</li>    </ul>    <h3><strong>主要特性</strong></h3>    <ul>     <li>自定义超链接link的点击</li>     <li>自定义图片img的点击</li>     <li>支持链式调用</li>     <li>图片支持三种对齐方式(左对齐、居中、右对齐)</li>     <li>支持在图片加载前对每张图片的url、width、height、对齐方式精细调整</li>     <li>内置图片下载器</li>     <li>可自定义图片下载器,如使用universal image loader、Picasso、Glide等</li>    </ul>    <h3><strong>实现原理</strong></h3>    <ul>     <li>spanned</li>     <li>线程池</li>     <li>自定义ImageGetter</li>    </ul>    <h3><strong>示例</strong></h3>    <pre>  <cn.droidlover.xrichtext.XRichText              android:id="@+id/richText"              android:layout_width="match_parent"              android:layout_height="wrap_content"              android:padding="16dp" /></pre>    <p>在Java中:</p>    <pre>  richText                  .callback(new XRichText.BaseClickCallback() {                        @Override                      public boolean onLinkClick(String url) {                          showMsg(url);                          return true;                      }                        @Override                      public void onImageClick(List<String> urlList, int position) {                          super.onImageClick(urlList, position);                          showMsg("图片:" + position);                      }                        @Override                      public void onFix(XRichText.ImageHolder holder) {                          super.onFix(holder);                          if (holder.getPosition() % 3 == 0) {                              holder.setStyle(XRichText.Style.LEFT);                          } else if (holder.getPosition() % 3 == 1) {                              holder.setStyle(XRichText.Style.CENTER);                          } else {                              holder.setStyle(XRichText.Style.RIGHT);                          }                            //设置宽高                          holder.setWidth(550);                          holder.setHeight(400);                      }                  })                 .imageDownloader(new ImageLoader() {                     @Override                     public Bitmap getBitmap(String url) throws IOException {                          return UILKit.getLoader().loadImageSync(url);                     }                 })                  .text(TEXT);</pre>    <h3><strong>api说明</strong></h3>    <ul>     <li>onLinkClick(String url) 当点击超链接时触发,url为点击的url</li>     <li>onImageClick(List urlList, int position) 当点击图片时触发,urlList为图片的url集合,position为被点击的位置,从0开始</li>     <li>onFix(XRichText.ImageHolder holder) 当图片加载前回调此方法,通过holder可以调整图片的src、width、height、style(对齐方式)</li>     <li><strong>设置html内容时,务必调用text方法</strong></li>     <li>imageDownloader(ImageLoader loader)可以自定义图片加载器,库中已有默认实现。可以根据项目情况定义加载器,如三方库UIL、Picasso等,只需实现ImageLoader接口就行。 getBitmap方法已经在线程池中,所以自定义loader时不必考虑线程问题.</li>     <li>ClickCallback接口有默认实现类BaseClickCallback,可以直接使用此类重写需要的方法。</li>    </ul>    <p> </p>    <p> </p>