Android Studio(Kotlin)放大缩小图像视图
尝试调整不在主活动中的图像视图的大小,但主活动按钮将浮动图像置于所有应用程序之上。我可以移动图像,但不知道如何放大或缩小。任何帮助都将不胜感激:)谢谢 可移动但不可调整大小的浮动窗口Java 类SimpleFloatingWindow构造函数(私有val上下文:上下文){Android Studio(Kotlin)放大缩小图像视图,android,android-studio,imageview,overlay,floating,Android,Android Studio,Imageview,Overlay,Floating,尝试调整不在主活动中的图像视图的大小,但主活动按钮将浮动图像置于所有应用程序之上。我可以移动图像,但不知道如何放大或缩小。任何帮助都将不胜感激:)谢谢 可移动但不可调整大小的浮动窗口Java 类SimpleFloatingWindow构造函数(私有val上下文:上下文){ 我认为这个问题给出的解决方案将解决您的问题: 如果你不想仅仅添加一些人的代码,你也可以尝试阅读本教程:•谢谢你,妈妈。我最大的问题是我不在主要活动中,所以实现@extands blah..blah..blah..blah..
我认为这个问题给出的解决方案将解决您的问题:
如果你不想仅仅添加一些人的代码,你也可以尝试阅读本教程:•谢谢你,妈妈。我最大的问题是我不在主要活动中,所以实现@extands blah..blah..blah..blah..不起作用。另外,当我添加findViewById时,也无法实现(很好,就是不起作用)主活动已获得btn,使浮动窗口上升。可移动性是存在的,只是不知道如何添加重新大小。您找到解决方案了吗?如果是,请共享。
private var windowManager: WindowManager? = null
get() {
if (field == null) field = (context.getSystemService(WINDOW_SERVICE) as WindowManager)
return field
}
private var floatView: View =
LayoutInflater.from(context).inflate(R.layout.layout_floating_window, null)
private lateinit var layoutParams: WindowManager.LayoutParams
private var lastX: Int = 0
private var lastY: Int = 0
private var firstX: Int = 0
private var firstY: Int = 0
private var isShowing = false
private var touchConsumedByMove = false
private val onTouchListener = View.OnTouchListener { view, event ->
val totalDeltaX = lastX - firstX
val totalDeltaY = lastY - firstY
when (event.actionMasked) {
MotionEvent.ACTION_DOWN -> {
lastX = event.rawX.toInt()
lastY = event.rawY.toInt()
firstX = lastX
firstY = lastY
}
MotionEvent.ACTION_UP -> {
view.performClick()
}
MotionEvent.ACTION_MOVE -> {
val deltaX = event.rawX.toInt() - lastX
val deltaY = event.rawY.toInt() - lastY
lastX = event.rawX.toInt()
lastY = event.rawY.toInt()
if (abs(totalDeltaX) >= 5 || abs(totalDeltaY) >= 5) {
if (event.pointerCount == 1) {
layoutParams.x += deltaX
layoutParams.y += deltaY
touchConsumedByMove = true
windowManager?.apply {
updateViewLayout(floatView, layoutParams)
}
} else {
touchConsumedByMove = false
}
} else {
touchConsumedByMove = false
}
}
else -> {
}
}
touchConsumedByMove
}
init {
with(floatView) {
}
floatView.setOnTouchListener(onTouchListener)
layoutParams = WindowManager.LayoutParams().apply {
format = PixelFormat.TRANSLUCENT
flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
@Suppress("DEPRECATION")
type = when {
Build.VERSION.SDK_INT >= Build.VERSION_CODES.O ->
WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY
else -> WindowManager.LayoutParams.TYPE_TOAST
}
gravity = Gravity.CENTER
width = WindowManager.LayoutParams.WRAP_CONTENT
height = WindowManager.LayoutParams.WRAP_CONTENT
}
}
fun show() {
if (context.canDrawOverlays) {
dismiss()
isShowing = true
windowManager?.addView(floatView, layoutParams)
}
}
fun dismiss() {
if (isShowing) {
windowManager?.removeView(floatView)
isShowing = false
}
}