如何解决如何将Rect应用于View边界? 背景我尝试了什么?其他类似的未解决问题:
我有一个Rect对象。
Rect (left = 50,top = 50,right = 150,bottom = 150)
我想将此矩形应用于这样的视图
view (x = 50,y = 50,width = 100,height = 100)
背景
我在FrameLayout中有一个TextView。 FrameLayout使用onDraw()
在此TextView周围绘制一个矩形。此外,FrameLayout上还设置了触摸监听器。每当接收到触摸事件时,我都会移动TextView。触摸事件,并使用invalidate()
更新绘制的矩形。
现在,除此之外,我在此绘制的矩形上也有四个角拖动点(以调整基础TextView的大小)。
- 右下角:更改宽度和高度
- 右上角:更改宽度;同时更改Y和高度
- 左下角:更改高度;同时更改X和宽度
- 左上角:同时更改X和宽度;同时更改Y和高度
现在,通过更新Rect对象来绘制这些更改很容易。我可以将位移值应用于rect,并使FrameLayout无效以查看新的Rectangle。 但是,如何将这些矩形更改应用于绘制矩形下方的TextView?
我尝试了什么?
fun resizeByBottomLeftCorner(displacementX: Float,displacementY: Float) {
val view = getTargetView()
val layoutParams = view.layoutParams
view.x = view.x + displacementX
layoutParams.width = (view.width - displacementX).roundToInt()
layoutParams.height = (view.height + displacementY).roundToInt()
view.layoutParams = layoutParams
}
fun resizeByBottomRightCorner(displacementX: Float,displacementY: Float) {
val view = getTargetView()
val layoutParams = view.layoutParams
layoutParams.width = (view.width + displacementX).roundToInt()
layoutParams.height = (view.height + displacementY).roundToInt()
view.layoutParams = layoutParams
}
fun resizeByTopRightCorner(displacementX: Float,displacementY: Float) {
val view = getTargetView()
val layoutParams = view.layoutParams
layoutParams.width = (view.width + displacementX).roundToInt()
view.y = view.y + displacementY
layoutParams.height = (view.height - displacementY).roundToInt()
view.layoutParams = layoutParams
}
fun resizeByTopLeftCorner(displacementX: Float,displacementY: Float) {
val view = getTargetView()
val layoutParams = view.layoutParams
view.x = view.x + displacementX
layoutParams.width = (view.width - displacementX).roundToInt()
view.y = view.y + displacementY
layoutParams.height = (view.height - displacementY).roundToInt()
view.layoutParams = layoutParams
}
这正常工作。但是,如果将TextView旋转了某个值,则会开始产生与我预期相反的错误视觉效果。
P.S。我也尝试直接更改view.left
,view.right
,view.bottom
,view.top
。但是,它们会被layout()
覆盖。此外,View的文档中禁止使用它们。
当前用户界面:
我想实现显示的in this recorded video。
其他类似的未解决问题:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。