Android富文本编辑器,图片、视频、文字混合编辑

一、添加依赖

开源框架xrichtext 只支持图文混编,我们在之上进行扩展。另采用 jiaozivideoplayer 作为播放器。

allprojects {
    repositories {
        ...
        maven { url 'https://jitpack.io' }
    }
}

dependencies {
    implementation 'com.github.sendtion:XRichText:1.9.1'
    implementation 'cn.jzvd:jiaozivideoplayer:7.0.4'

}

二、扩展实现

我们通过修改两个主要类来实现功能:RichTextEditor RichTextView。

由于许多重要方法都设为private,通过继承无法直接使用,所有直接复制类的所有内容,到一个新的类中,‘

并加上我们的方法。

RichTextView

public RelativeLayout createJzvdStd(String videoPath, String videoTitle, String thumbImageUrl) {

    RelativeLayout relativeLayout = (RelativeLayout) inflater.inflate(R.layout.jzvd_std, null);
    JzvdStd jzvdStd = relativeLayout.findViewById(R.id.jzvStd);
    jzvdStd.setTag(viewTagIndex++);
    jzvdStd.setUp(videoPath, videoTitle);
    ImageView thumbImageView = jzvdStd.thumbImageView;
    if (!TextUtils.isEmpty(thumbImageUrl))
        VolleyUtil.getInstance().sendImageLoader(thumbImageUrl, thumbImageView);
    return relativeLayout;
}

public void addJzvdStdAtIndex(final int index, String videoPath, String videoTitle, String thumbImageUrl) {
    try {
        RelativeLayout jzvdStd = createJzvdStd(videoPath, videoTitle, thumbImageUrl);
        ViewGroup.LayoutParams lp = new ViewGroup.LayoutParams(
                LayoutParams.MATCH_PARENT, 500);
        jzvdStd.setLayoutParams(lp);
        allLayout.addView(jzvdStd, index);
    } catch (Exception e) {
        e.printStackTrace();
    }
}

 

RichTextEditor

 

public RelativeLayout createJzvdStd(String videoPath, String videoTitle, String thumbImageUrl) {
        RelativeLayout relativeLayout = (RelativeLayout) inflater.inflate(R.layout.jzvd_std, null);
        JzvdStd jzvdStd = relativeLayout.findViewById(R.id.jzvStd);
        relativeLayout.setTag(viewTagIndex++);
        jzvdStd.setUp(videoPath, videoTitle);
        ImageView thumbImageView = jzvdStd.thumbImageView;
        if (!TextUtils.isEmpty(thumbImageUrl))
            VolleyUtil.getInstance().sendImageLoader(thumbImageUrl, thumbImageView);
        return relativeLayout;
    }

    public void insertJzvdStd(String videoPath, String videoTitle, String thumbImageUrl) {

        if (TextUtils.isEmpty(videoPath)) {
            return;
        }
        try {
            //lastFocusEdit获取焦点的EditText
            String lastEditStr = lastFocusEdit.getText().toString();
            int cursorIndex = lastFocusEdit.getSelectionStart();//获取光标所在位置
            String editStr1 =
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_37879809

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值