Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

图片上传的时候 #7

Open
JustinChiang123 opened this issue Oct 29, 2019 · 9 comments
Open

图片上传的时候 #7

JustinChiang123 opened this issue Oct 29, 2019 · 9 comments

Comments

@JustinChiang123
Copy link

有没有监听设置,比如状态设置,未上传是灰色,上传完毕,设置成正常色

@JustinChiang123
Copy link
Author

还有就是断网的时候图片加载

@GGWON
Copy link

GGWON commented Oct 29, 2019

还有就是断网的时候图片加载

请问一下为什么我不能插入图片啊,插入的图片显示是破损的。但是路径和他的demo一样的。

@JustinChiang123
Copy link
Author

还有就是断网的时候图片加载

请问一下为什么我不能插入图片啊,插入的图片显示是破损的。但是路径和他的demo一样的。

断网你插入是显示破损的?我这边断网插入图片提示语法错误,根本插不进去

@GGWON
Copy link

GGWON commented Oct 29, 2019

还有就是断网的时候图片加载

请问一下为什么我不能插入图片啊,插入的图片显示是破损的。但是路径和他的demo一样的。

断网你插入是显示破损的?我这边断网插入图片提示语法错误,根本插不进去

我现在解决了,我只是照着他的模板插入本机的图片,我的手机版本太高了,应该设置gradle里面的targetSDKversion为26就行了。

@RexSuper
Copy link
Owner

有没有监听设置,比如状态设置,未上传是灰色,上传完毕,设置成正常色

这里需要注意了demo中 HttpFakeUtils.postFile 只是一个模拟代码,最终图片上传生成在线是要放到你自己的服务器的(所以此处代码需要替换),此时是建议用dialog锁定页面 或者放到后台上传,这里有提供上传数量上的进度,
Log.i("rex", "上传进度:" + index + "/" + max);
如果你想做更为具体的进度,和多个普通上传文件是一样的实现方式,没有特殊的

这些上传完成后,会将编辑中的本地路径换成在线路径,然后生成的html,就和正常在线网页一样,可以处处显示,最后才是提交html源码string,放到服务器,后续的二次显示和二次编辑 都是编辑这个string

@RexSuper
Copy link
Owner

还有就是断网的时候图片加载

请问一下为什么我不能插入图片啊,插入的图片显示是破损的。但是路径和他的demo一样的。

断网你插入是显示破损的?我这边断网插入图片提示语法错误,根本插不进去

最新版,在编辑的时候,使用的是本地路径,这和你ImageView.set绝对路径图片是一样的 选完图片得到uri。还没有到上传网络那一步和网络没有实际的关系。

@RexSuper
Copy link
Owner

openDirChooseFile 选图片采用的 最基础的选图片的方法
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("/");
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);//多选
startActivityForResult(intent, RESULT_CHOOSE);
然后是onActivityResult接收 类似你app设置头像一样,你可以完全替换成自己项目中的逻辑,包括动态权限申请等等

@JustinChiang123
Copy link
Author

有没有监听设置,比如状态设置,未上传是灰色,上传完毕,设置成正常色

这里需要注意了demo中 HttpFakeUtils.postFile 只是一个模拟代码,最终图片上传生成在线是要放到你自己的服务器的(所以此处代码需要替换),此时是建议用dialog锁定页面 或者放到后台上传,这里有提供上传数量上的进度,
Log.i("rex", "上传进度:" + index + "/" + max);
如果你想做更为具体的进度,和多个普通上传文件是一样的实现方式,没有特殊的

这些上传完成后,会将编辑中的本地路径换成在线路径,然后生成的html,就和正常在线网页一样,可以处处显示,最后才是提交html源码string,放到服务器,后续的二次显示和二次编辑 都是编辑这个string

谢谢了,图片上传进度条还是得写js进度条,java调用设置进度。还有一个问题,光标位置获取样式属性,这个作者有考虑做没有?光标不同位置,展示不同的样式状态,比如第一行是加粗,第二行是斜体加粗,选中第一行获取属性是加粗,选中第二行获取属性是斜体加粗... 不知道作者能不能看懂我描述的。

@RexSuper
Copy link
Owner

RexSuper commented Nov 7, 2019

有没有监听设置,比如状态设置,未上传是灰色,上传完毕,设置成正常色

这里需要注意了demo中 HttpFakeUtils.postFile 只是一个模拟代码,最终图片上传生成在线是要放到你自己的服务器的(所以此处代码需要替换),此时是建议用dialog锁定页面 或者放到后台上传,这里有提供上传数量上的进度,
Log.i("rex", "上传进度:" + index + "/" + max);
如果你想做更为具体的进度,和多个普通上传文件是一样的实现方式,没有特殊的
这些上传完成后,会将编辑中的本地路径换成在线路径,然后生成的html,就和正常在线网页一样,可以处处显示,最后才是提交html源码string,放到服务器,后续的二次显示和二次编辑 都是编辑这个string

谢谢了,图片上传进度条还是得写js进度条,java调用设置进度。还有一个问题,光标位置获取样式属性,这个作者有考虑做没有?光标不同位置,展示不同的样式状态,比如第一行是加粗,第二行是斜体加粗,选中第一行获取属性是加粗,选中第二行获取属性是斜体加粗... 不知道作者能不能看懂我描述的。

@JustinChiang123 @GGWON
1.进度问题你还是没有理解到,编辑器在编辑的时候插入的是本地链接(当然你也可以选择每插入一次文件,不点发布,也上传到云端,这样最后一次发布则不耗时,但编辑体验不好,看你产品如何定义)

现在demo演示的,点击发布的时候 提供了方法上传到云端并替换这些链接,这样进一步优化体验,还可以放到后置任务或者断点续传,毕竟随意编辑文件还是很大的。
也就是说 上传多张图片视频或者文件 是你自己实现的,我这边不会提供存储的地方。也就是全部在java中实现,也就是进度问题其实你自己控制,js部分没有参与任何文件上传的过程,编辑器就像是个html编辑器,插入的只是地址而已

2.你说的另一个问题 就是当前选中部分的前面样式是什么,这个问题比较繁琐,还得考虑长按复制的情况,目前有做一部分加粗之类简单的
你可以实现如下方法在简单的时候监听
richEditor.setOnConsoleMessageListener(new RichEditorNew.OnConsoleMessageListener() { @Override public void onTextChange(String message, int lineNumber, String sourceID) { Log.i("rex", "message:" + message); } });

原理及其拓展部分(如果原来没有实现,你可能根据你选中的编辑功能 建议源码集成修改这里):
rich_editor.js

`//获取当前光标所在内包含的所有样式
RE.getSelectedNode = function() {
var node,selection;
if (window.getSelection) {
selection = getSelection();
node = selection.anchorNode;
}
if (!node && document.selection) {
selection = document.selection
var range = selection.getRangeAt ? selection.getRangeAt(0) : selection.createRange();
node = range.commonAncestorContainer ? range.commonAncestorContainer :
range.parentElement ? range.parentElement() : range.item(0);
}
if (node) {
var item = (node.nodeName == "#text" ? node.parentNode : node);
console.log("innerHTML:"+item.innerHTML);
console.log("font-size:"+item.style["font-size"]);
console.log("color:"+item.getAttribute("color"));
console.log("queryCommandState1 bold:"+document.queryCommandState('bold'));

     console.log("src:"+item.getAttribute("src"));
     console.log(item.style["font-size"]+"|"+item.getAttribute("color")+"|"+document.queryCommandState('bold'))

}

}`

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants