我正在创建一个应用程序,作为一个挑战,用户可以快速生成区域的示意图布局。有一个开始节点,人们可以向上、向右、向左或向下扩展节点或创建新节点。每个节点描述该区域中的某些东西(公园、树林等(节点之间的距离始终相同。基本上,你可以逐个节点构建这个布局(就像你在本视频中逐个节点创建思维导图一样:https://www.reddit.com/r/AndroidStudio/comments/m57n0f/what_layout_on_android_allows_the_user_to_pan_the/?utm_source=share&utm_medium=mweb(
我希望人们能够平移和缩小以快速从布局的一端移动到另一端,从而快速添加或编辑布局。只是我不知道该用什么布局。使用水平和垂直布局似乎不是解决方案。。。(没有变焦,很笨重,因为你不能对角走(
奖金:如果距离和规则总是相同(类似于视频中的显示方式(,您将如何以编程方式添加这些新节点?
我看到了这篇关于动态添加图像视图和按钮的博客文章——这听起来像是一个解决方案,对吧?https://abhiandroid.com/ui/dynamic-relativelayout-params-programmatically.html
只需使用此库。
implementation 'com.jsibbold:zoomage:1.3.1'
在XML中
<com.jsibbold.zoomage.ZoomageView
android:id="@+id/img_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbars="vertical"
android:scaleType="matrix"
app:zoomage_animateOnReset="true"
app:zoomage_doubleTapToZoom="true"
app:zoomage_maxScale="9"
app:zoomage_minScale="0.5"
app:zoomage_zoomable="true" />
GitHub 的更多详细信息
您应该覆盖SurfaceView
,并在方法onDraw
中绘制矩形和文本,使用您的曲面,您可以在用户触摸的情况下使用三角形算法缩放和平移矩阵,为了使所有内容保持相同的比例,您总是使用1x1矩阵来存储原理图布局,并且只能从SurfaceView中缩放它。这种方法比尝试调整屏幕中的Android视图要容易得多,但如果你想遵循这种路径,ViewGroup中还有一个setScaleX/Y setScrollX/Y,你可以将其应用于屏幕的根目录,但你需要从触摸中读取用户输入。