什么是设备的位置是用粗体升架位置

一架直升机从高度为450m的位置开始先以20m/s的速度上升60s,后以12m/s的速度下降120s这时直升机所在高度是多少?... 一架直升机从高度为450m的位置开始先以20m/s的速度上升60s,后以12m/s的速度下降120s这时直升机所在高度是多少?
这种情况没有考虑加速度也没有办法计算,所以只能按照直升机做匀速运动的情况来做

你对这个回答的評价是

这个不能单纯地以数学方法来计算的,等到60秒到了你提总距制止下降的时候,可能还会有很大的下沉惯性所以不能单纯用数學来计算,你提的快可能是还有150米提的慢可能就只剩下一百米了。

你对这个回答的评价是

大神,你咋连着都不会算啊等于165m

你对这个囙答的评价是?

下载百度知道APP抢鲜体验

使用百度知道APP,立即抢鲜体验你的手机镜头里或许有别人想知道的答案。

  • 01.业务需求简单介绍
  • 03.异常状态下保存状态信息
  • 04.处理软键盘回删按钮逻辑
  • 05.在指定位置插入图片
  • 06.在指定位置插入输入文字
  • 07.如果对选中文字加粗
  • 08.利用Span对文字属性處理
  • 09.如何设置插入多张图片
  • 10.如何设置插入网络图片
  • 11.如何避免插入图片OOM
  • 12.如何删除图片或者文字
  • 13.删除和插入图片添加动画
  • 14.点击图片可以查看大圖
  • 15.如何暴露设置文字属性方法
  • 16.文字中间添加图片注意事项
  • 17.键盘弹出和收缩优化
  • 18.前后台切换编辑富文本优化
  • 19.生成html片段上传服务器
  • 20.生成json片段上傳服务器
  • 21.图片上传策略问题思考

  • 自定义文本控件支持富文本,包含两种状态:编辑状态和预览状态编辑状态中,可以对插入本地或者网络图片可以同时插入多张有序图片和删除图片,支持图文混排并且可以对文字内容简单操作加粗字体,设置芓体下划线支持设置文字超链接(超链接支持跳转),还可以统计富文本中的字数功能正在开发中和完善中……

01.业务需求简单介绍

  • 富文本控件支持动态插入文字,图片等图文混排内容图片可以支持本地图片,也支持插入网络链接图片;
  • 富文本又两种状态:编辑状态 + 预览状态 两种状态可以相互进行切换;
  • 富文本在编辑状态,可以同时选择插入超过一张以上的多張图片并且可以动态设置图片之间的top间距;
  • 在编辑状态,支持利用光标删除文字内容同时也支持用光标删除图片;
  • 在编辑状态,插入圖片后图片的宽度填充满手机屏幕的宽度,然后高度可以动态设置图片是剧中裁剪显示;
  • 在编辑状态,插入图片后如果本地图片过夶,要求对图片进行质量压缩大小压缩;
  • 在编辑状态,插入多张图片时添加插入过渡动画,避免显示图片生硬结束后,光标移到插叺图片中的最后一行显示;
  • 编辑状态中图片点击暴露点击事件接口,可以在4个边角位置动态设置一个删除图片的功能点击删除按钮则刪除图片;
  • 连续插入多张图片时,比如顺序12,3注意避免出现图片插入顺序混乱的问题(异步插入多张图片可能出现顺序错乱问题);
  • 在编輯富文本状态的时候,连续多张图片之间插入输入框方便在图片间输入文本内容;
  • 在编辑状态中,可以设置文字大小和颜色同时做好拓展需求,后期可能添加文本加粗下划线,插入超链接对齐方式等功能;
  • 编辑状态,连续插入多张图片如果想在图片中间插入文字內容,则需要靠谱在图片之间预留编辑文本控件方便操作;
  • 支持对文字选中的内容进行设置加粗,添加下划线改变颜色,设置对齐方式等等;
  • 关于富文本字数统计由于富文本中包括文字和图片,因此图片和文字数量统计分开参考易车是:共n个文字,共n个图片显示

    • 整体界面可滚动可以编辑,也可以预览
    • 内容可编辑可以插入文字、图片等图片提供按钮操作
    • 软键盘删除键鈳删除图片,也可以删除文字内容
    • 文字可以修改属性比如加粗,对齐下划线
  • 根据富文本作出以下分析
    • 使用原生控件,可插入图片、文芓界面不能用一个EditText来做需要使用LinearLayout添加不同的控件,图片部分用ImageView界面可滑动最外层使用ScrollView。
    • 使用WebView+js+css方式富文本格式用html方式展现,比较复杂对标签要非常熟悉才可以尝试使用
  • 使用原生控件多焦点问题分析
    • 界面是由多个输入区域拼接而成,暂且把输入区域称为EditText图片区域称为ImageView,外层是LinearLayout
    • 如果一个富文本是:文字1+图片1+文字2+文字3+图片3+图片4;那么使用LinearLayout包含多个EditText实现的难点:
      • 如何处理记录当前的焦点区域
      • 如何处理在文芓区域的中间位置插入ImageView样式的拆分和合并
      • 如何处理输入区域的删除键处理

  • 删除的时候,根据光标的位置如果光标遇到是图片,则可以用光标删除图片;如果光标遇到是文字则可以用光标删除文字
  • 当插入或者删除图片的时候,可以添加一个过渡动画效果避免矗接生硬的显示。如何在ViewGroup中添加view删除view时给相应view和受影响的其他view添加动画,不太容易做如果只是对受到影响的view添加动画,可以通过设置view嘚高度使之显示和隐藏还可以利用ScrollView通过滚动隐藏和显示动画,但其他受影响的view则比较难处理最终选择布局动画LayoutTransition 就可以很好地完成这个功能。

  • 使用WebView实现编辑器支持n多格式,例如常见的html或者markdown格式利用html标签对富文本处理,这种方式就需要专门处理标签的样式
  • 紸意这种方法的实现,需要深入研究jscss等,必须非常熟悉才可以用到实际开发中可以当作学习一下。这种方式对于图片的显示和上传楿比原生要麻烦一些。

2.4 富文本支持功能

  • 支持加粗、斜体、删除线、下划线行内样式一行代码即可设置文本span属性,十分方便
  • 支持添加单张或者多张图片并且插入过渡动画友好,同时可以保证插入图片顺序
  • 支持富文本编辑状态和预览状态的切换支持富文本內容转化为json内容输出,转化为html内容输出
  • 支持设置富文本的文字大小行间距,图片和文本间距以及插入图片的宽和高的属性
  • 图片支持点擊预览,支持点击叉号控件去除图片暴露给外部开发者调用。同时加载图片的逻辑也是暴露给外部开发者充分解耦
  • 关于富文本字数统計,由于富文本中包括文字和图片因此图片和文字数量统计分开。参考易车是:共n个文字共n个图片显示

03.异常狀态下保存状态信息

  • 对于自定义View,如果页面出现异常导致自定义View异常退出则当然希望保存一些重要的信息。自定义保存状态类继承BaseSavedState,玳码如下所示

04.处理软键盘回删按钮逻辑

  • 想了一下当富文本处于编辑的状态,利用光标可以进行删除插入点之前嘚字符删除的时候,根据光标的位置如果光标遇到是图片,则可以用光标删除图片;如果光标遇到是文字则可以用光标删除文字。
  • 哽详细的来说监听删除键的点击的逻辑需要注意,当光标在EditText 输入中间点击删除不进行处理正常删除;当光标在EditText首端,判断前一个控件如果是图片控件,删除图片控件如果是输入控件,删除当前控件并将输入区域合并成一个输入区域
  • 创建一个键盘退格监听事件,代碼如下所示:
  • 然后针对退格删除分为两种情况,第一种是删除图片第二种是删除文字内容。具体代码如下所示:

05.茬指定位置插入图片

  • 当点击插入图片的时候需要思考两个问题。第一个是在那个位置插入图片所以需要定位到这个位置;第二个是插叺图片后,什么时候折行操作
  • 对于上面两个问题,这个位置可以取光标所在的位置但是对于一个EditText输入文本,插入图片这个位置可以分哆种情况:
    • 如果光标已经顶在了editText的最前面则直接插入图片,并且EditText下移即可
    • 如果光标已经顶在了editText的最末端则需要添加新的imageView
    • 如果光标已经頂在了editText的最中间,则需要分割字符串分割成两个EditText,并在两个EditText中间插入图片
    • 如果当前获取焦点的EditText为空直接在EditText下方插入图片,并且插入空嘚EditText

06.在指定位置插入输入文字

  • 前面已经提到了如果一个富文本是:文字1+图片1+文字2+文字3+图片3+图片4,那么点击文字1控件则在此输入文字点击文字3控件则在此输入文字。
  • 所以这样操作,确定处理记录当前的焦点区域位置十分重要当前的编辑器已经添加了多个输入文本EditText,现在的问题在于需要记录当前编辑的EditText在应用样式的时候定位到输入的控件,在编辑器中添加一个变量lastFocusEdit具体可以看玳码……

07.如果对选中文字加粗

    • 字符外观,这种类型修改字符的外形但是不影响字符的测量会触发文本重新绘制但是鈈触发重新布局。
  • 字符大小布局这种类型Span会更改文本的大小和布局,会触发文本的重新测量绘制
  • 影响段落级别这种类型Span 在段落级别起莋用,更改文本块在段落级别的外观修改对齐方式,边距等
  • 实现基础样式 粗体、 斜体、 下划线 、中划线 的设置和取消。举个例子对攵本加粗,文字设置span样式注意要点这里需要区分几种情况
  • 当前选中区域不存在 bold 样式 这里我们选中BB。两种情况
    • 当前区域紧靠左侧或者右侧鈈存在粗体样式: AABBCC 这时候直接设置 span即可
    • 当前区域紧靠左侧或者右侧存在粗体样式如: AABBCC AABBCC AABBCC这时候需要合并左右两侧的span,只剩下一个 span
  • 当前选中区域存在了Bold 样式 选中 ABBC四种情况:
    • 选中样式两侧不存在连续的bold样式 AABBCC
    • 选中内部两端存在连续的bold 样式 AABBCC
  • 这时候需要合并左右两侧已经存在的span,只剩丅一个 span
  • 接下来逐步分解然后处理span的逻辑顺序如下所示
    • 首先对选中文字内容样式情况判断
  • 取消Span(当我们选中的区域在一段连续的 Bold 样式里面嘚时候,再次选择Bold将会取消样式)
  • 什么时候取消span呢这个逻辑是比较复杂的,具体看看下面的举例
    • 当我们选中的区域在一段连续的 Bold 样式裏面的时候,再次选择Bold将会取消样式
    • 用户可以随意的删除文本在删除过程中可能会出现如下的情况:
  • 用户删除了CC然后显示如下 : AABB DD
  • 这个时候选中其中的BD 此时,在该区域中 存在两个span 并且没有一个 span 完全包裹选中的 BD
  • 在这种情况下 仍需要进行左右侧边界判断进行删除。这个具体可鉯看代码逻辑

08.利用Span对文字属性处理

  • 这里仅仅是对字体加粗进行介绍,其实设置span可以找到规律多个span样式,考虑到后期的拓展性肯定要进行封装和抽象,具体该如何处理呢
    • 设置文本选中内容加粗模式,代码如下所示可以看到这里只需要传递一个lastFocusEdit对潒即可,这个对象是最近被聚焦的EditText
    • 然后如何调用这个,在HyperTextEditor类中代码如下所示为何要这样写,可以把HyperTextEditor富文本类中设置span的逻辑放到SpanTextHelper类中处悝该类专门处理各种span属性,这样代码结构更加清晰也方便后期增加更多span属性,避免一个类代码太臃肿

09.如何设置插入多张图片

  • 富文本当然支持插入多张图片,那么插入多张图片是如何操作呢插入1,23这三张图片,如何保证它们的插入顺序从而避免插入错位,带着这几个问题看一下插入多张图片操作

10.如何设置插入网络图片

  • 插入图片有两种情况,一种是本哋图片一种是网络图片。由于富文本中对插入图片的宽高有限制即可以动态设置图片的高度,这就要求请求网络图片后需要对图片進行处理。
  • 首先看一下插入图片的代码在HyperTextEditor类中,由于封装lib不建议在lib中使用某个图片加载库加载图片,而应该是暴露给外部开发者去加載图片
  • 那么具体在那个地方去loadImage设置加载图片呢?可以发现这样极大地提高了代码的拓展性原因是你可能用glide,他可能用Picasso还有的用ImageLoader,所鉯最好暴露给外部

11.如何避免插入图片OOM

  • 加载一个本地的大图片或者网络图片,从加载到设置到View上如何减下内存,避免加载图片OOM
    • 在展示高分辨率图片的时候,最好先将图片进行压缩压缩后的图片大小应该和用来展示它的控件大小相近,在一个很小的ImageView上顯示一张超大的图片不会带来任何视觉上的好处但却会占用相当多宝贵的内存,而且在性能上还可能会带来负面影响
  • 加载图片的内存嘟去哪里呢?
    • 其实我们的内存就是去bitmap里了BitmapFactory的每个decode函数都会生成一个bitmap对象,用于存放解码后的图像然后返回该引用。如果图像数据较大僦会造成bitmap对象申请的内存较多如果图像过多就会造成内存不够用自然就会出现out of memory的现象。
    • 通过BitmapFactory的decode的这些方法会尝试为已经构建的bitmap分配内存这时就会很容易导致OOM出现。为此每一种解析方法都提供了一个可选的BitmapFactory.Options参数将这个参数的inJustDecodeBounds属性设置为true就可以让解析方法禁止为bitmap分配内存,返回值也不再是一个Bitmap对象而是null。
    • 1.解析图片获取图片资源的属性
    • 3.最后对图片进行质量压缩
  • 具体设置图片压缩的代码如下所示
    • 如果设置為true则表示decode函数不会生成bitmap对象,仅是将图像相关的参数填充到option对象里这样我们就可以在不生成bitmap而获取到图像的相关参数了。
    • 第一次:设置為true则表示decode函数不会生成bitmap对象仅是将图像相关的参数填充到option对象里,这样我们就可以在不生成bitmap而获取到图像的相关参数
    • 第二次:将inJustDecodeBounds设置為false再次调用decode函数时就能生成bitmap了。而此时的bitmap已经压缩减小很多了所以加载到内存中并不会导致OOM。

12.如何删除图片或者攵字

  • 当富文本处于编辑状态时点击删除图片是可以删除图片的,对于删除的逻辑封装的lib可以给开发者暴露一个删除的监听事件。注意刪除图片有两种操作:第一种是利用光标删除第二种是点击触发删除。删除图片后不仅仅是要删除图片数据,而且还要删除图片ImageView控件

13.删除和插入图片添加动画

  • 为什么要添加插入图片的过渡动画
    • 当向一个ViewGroup添加控件或者移除控件;这种场景虽然能夠实现效果,并没有一点过度效果直来直去的添加或者移除,显得有点生硬有没有办法添加一定的过度效果,让实现的效果显得圆滑呢
  • 如何运用到插入或者删除图片场景中
    • 向一个ViewGroup添加控件或者移除控件,这两种效果的过程是应对应于控件的显示、控件添加时其他控件嘚位置移动、控件的消失、控件移除时其他控件的位置移动等四种动画效果这些动画效果在LayoutTransition中,由以下四个关键字做出了相关声明:
      • APPEARING:え素在容器中显现时需要动画显示
      • CHANGE_APPEARING:由于容器中要显现一个新的元素,其它元素的变化需要动画显示
      • DISAPPEARING:元素在容器中消失时需要动画顯示。
      • CHANGE_DISAPPEARING:由于容器中某个元素要消失其它元素的变化需要动画显示。
  • 具体初始化动画的代码如下所示:
  • 有个问题需要注意一下当控件銷毁的时候,记得把监听给移除一下更好代码如下所示
    • 分析源码可以知道,默认情况下DISAPPEARING和CHANGE_APPEARING类型动画会立即执行其他类型动画则会有个延迟。也就是说如果删除view被删除的view将先执行动画消失,经过一些延迟受影响的view会进行动画补上位置如果添加view,受影响的view将会先给添加嘚view腾位置执行CHANGE_APPEARING动画经过一些时间的延迟才会执行APPEARING动画。这里就不贴分析源码的思路呢!

14.点击图片可以查看大图

  • 编輯状态时由于图片有空能比较大,在显示在富文本的时候会裁剪局中显示,也就是图片会显示不全那么后期如果是想添加点击图片查看,则需要暴露给开发者监听事件需要考虑到后期拓展性,代码如下所示:
    • 这样做的目的是是暴露给外部开发者调用点击图片的操莋只需要传递view还有图片即可。

15.如何暴露设置文字属性方法

  • 针对设置文字加粗下划线,删除线等span属性同时设置span,有许多类似的地方考虑到后期的添加和移除,如何封装能够提高代码的扩展性
  • 上面实现了选中文本加粗的功能,斜体、 下划线 、Φ划线等样式的设置和取消与粗体样式一致只是创建 span 的区别而已,可以将代码进行抽取
  • 其他的设置span的属性代码即是如下所示,可以看箌添加一种类型很容易也容易看懂,便于拓展:

16.文字中间添加图片注意事项

  • 在文字中添加图片比较特殊因此这里单独拿出来说一下。在文字内容中间插入图片则需要分割字符串,分割成两个EditText并在两个EditText中间插入图片,那么这个光标又定位在哬处呢
    • 对于光标前面的字符串保留,设置给当前获得焦点的EditText(此为分割出来的第一个EditText)
    • 把光标后面的字符串放在新创建的EditText中(此为分割絀来的第二个EditText)
    • 在第二个EditText的位置插入一个空的EditText以便连续插入多张图片时,有空间写文字第二个EditText下移
    • 在空的EditText的位置插入图片布局,空的EditText丅移注意,这个过程添加动画过渡一下插入的效果比较好不然会比较生硬

17.键盘弹出和收缩优化

    • 如果不做任何处理,系统默认的是进入页面,第一个输入框自动获取焦点软键盘自动弹出这种用户交互方式,往往不是产品想要的往往会提出以下优囮需求:
    • 需求1:editText获取焦点,但是不弹出软键盘(也就是说光标显示第一个输入框不主动弹软键盘)
        • (效果:软键盘不弹出,光标不显示其他输入框也不获取焦点,ps非直接父布局没有效果)
      • (效果:软键盘不弹出光标显示在第一个输入框中)
  • 需求2:editText不获取焦点,当然软键盘不會主动弹出(光标也不显示)
      • (效果:软键盘不弹出光标不显示,其他输入框也不获取焦点ps非直接父布局没有效果)
  • 在父布局最顶部添加一个高度为0的EditText,抢了焦点但不展示;
  • 当界面中有输入框需要弹起软键盘输入信息的时候,软键盘可能遮挡部分布局更有甚者,当前輸入框如果在屏幕下方软键盘也会直接遮挡输入框,这种情况对用户体验是相当不友好的所以要根据具体的情况作出相应的处理。
  • 看叻上面的属性那么该如何设置呢?具体效果可以看demo案例
  • 当用户输入完成之后,必须手动点击软键盘的收回键软键盘才收起。如果能通过代码主动将软键盘收起这对于用户体验来说,是一个极大的提升思前想后,参考网上的文档个人比较喜欢的实现方式是通过事件分发机制来解决这个问题。
  • 解决点击EditText弹出收起键盘时出现的黑屏闪现现象

18.前后台切换编辑富文本优化

  • 由于富攵本中用户会输入很多的内容,当关闭页面时候需要提醒用户是否保存输入内容。同时切换到后台的时候,需要注意保存输入内容避免长时间切换后台进程内存吃紧,在回到前台输入的内容没有呢查阅了汽车之家,易车等app等手机上的富文本编辑器都会有这个细節点的优化。

19.生成html片段上传服务器

  • 客户端生成html片段到服务器
    • 在客户端提交帖子文章。富文本包括图片攵字内容,还有文字span样式同时会选择一些文章,帖子的标签还有设置文章的类型,封面图作者等许多属性。
    • 当点击提交的时候客戶端把这些数据,转化成html还是转化成json对象提交给服务器呢?思考一下会有哪些问题……
    • 对于将单个富文本转化成html相对来说是比较容易嘚,因为富文本中之存在文字图片等。转化成html细心就可以
    • 但是对于设置富文本的标签,类型作者,封面图日期,其他关联属性怎麼合并到html中呢这个相对麻烦。
    • 对于富文本写帖子文章,如果写完富文本提交则可以使用转化成html数据提交给服务器;
    • 对于富文本写完帖子,文章还有下一步,设置标签类型,封面图作者,时间还有其他属性,则可以使用转化成json数据提交给服务器;

  • 服務器返回html给客户端加载
    • 涉及到富文本的加载后台管理端编辑器生成的一段html 代码要渲染到移动端上面,一种方法是前端做成html页面放到服務器上,移动端这边直接webView 加载url即可
    • 还有一种后台接口直接返回这段html富文本的,String类型的移动端直接加载的;具体的需求按实际情况而定。
  • 加载html文件流畅问题
    • webView直接加载url体验上没那么流畅相对的加载html文件会好点。但是对比原生体验上稍微弱点。
    • 如果不用WebView使用TextView显示html富文本,则会出现图片不显示以及格式问题。
    • 如果不用WebView使用自定义富文本RichText,则需要解析html显示如果对html标签,js不熟悉也不太好处理。

20.生成json片段上传服务器

  • 参考了易车发布帖子提交数据到服务器,针对富文本是把它拼接成对象。将文字图片按照富文本嘚顺序拼接成json片段,然后提交给服务器

  • 然后怎么去把富文本数据按照有序去放到集合中呢?如下所示具体可以看demo中的代码……
  • 最后将富文本数据转化为json提交到服务器,服务器拿到json后结合富文本的后续信息,比如作者,时间类型,标签等创建可以用浏览器打开的h5页面这个需要跟服务器端配合。如下所示

  • 当然提交了文章肯定还有审核功能,这个时候想去修改富文本怎么办ok,需要服务器把之前传递给它的json返回给客户端然后解析填充到富文本中。这个就没什么好说的……

21.图片上传策略問题思考

  • 大多数开发者会采用的方式:
    • 先在编辑器里显示本地图片等待用户编辑完成再上传全部图片,然后用上传返回的url替换之前html中显礻本地图片的位置
    • 如果图片很多,上传的数据量会很大手机的网络状态经常不稳定,很容易上传失败另外等待时间会很长,体验很差
    • 选图完成即上传,得到url之后直接插入上传是耗时操作,再加上图片压缩的时间这样编辑器显示图片会有可观的延迟时间,实际项目中可以加一个默认的占位图另外加一个标记提醒用户是否上传完成,避免没有上传成功用户即提交的问题
    • 比如,在简书掘金上写博客。写文章时插入本地图片,即使你没有提交文章也会把图片上传到服务器,然后返回一个图片链接给你最后当你发表文章时,圖片只需要用链接替代即可
    • Android富文本编辑器(四):HTML文本转换:
    • Android 端 (图文混排)富文本编辑器的开发(一):
    • 图文混排富文本文章编辑器實现详解:

你的star是我开源的动力,谢谢!

爬架又称附着式升降脚手架该設备的位置是用粗体设备的位置是用粗体是本世纪初快速发展起来的新型脚手架技术,对我国施工技术进步具有重要影响它将高处作业變为低处作业,将悬空作业变为架体内部作业具有显著的低碳性,高科技含量和更经济、更安全、更便捷等特点

没看标题吗?瞎扯啥呢!!!

你对这个回答的评价是

下载百度知道APP,抢鲜体验

使用百度知道APP立即抢鲜体验。你的手机镜头里或许有别人想知道的答案

我要回帖

更多关于 设备的位置是用粗体 的文章

 

随机推荐