我正在进行显示TOS(服务条款)内容的活动。 TOS文本内容被写入很长的单个图像,应滚动显示。并确认按钮位于其下方。 有没有做的最佳实践?
我使用ScrollView
滚动内容。
ScrollView
包含ImageView
和ImageButton
。
首先,我通过android:src
属性插入非常长的TOS内容图像。
但是,xxxhdpi图像文件的大小约为1MB,高度约为18000,因此应用程序崩溃了(它显示“画布试图绘制太大的位图”错误)
之后,我尝试使用Glide
和Picasso
的图片库。使用它们,不会发生错误,但图像质量会下降。
我搜索并尝试了许多解决方案以保持分辨率和渲染速度,但是失败了。
我认为尝试使用较小的图像是更好的解决方案,但是在模拟器中,使用src属性绘制图像时,滚动速度和行为非常奇怪。
<?xml version="1.0" encoding="utf-8"?>
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/scrollView">
<FrameLayout
android:id="@+id/layout"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/imageview"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:adjustViewBounds="true"/>
<ImageButton
android:id="@+id/textview"
some code... />
</FrameLayout>
</ScrollView>
我不确定将带有scrollView
的单个长图像用于显示TOS内容是否正确。而且不确定ImageView
是否可以正确处理长图像。
答案 0 :(得分:0)
尝试将图像放入serverSelectionTryOnce
文件夹
如果您使用的是Glide,请尝试使用drawable-nodpi
attr
添加到Android清单.thumbnail()
attr
并至少减小大图像的大小
答案 1 :(得分:0)
有希望的是,您使自己的生活变得困难。
仅具有图像形式的TOS是不常见的; “正确”的方法是将您的TOS设置为文本形式,这也是最快的编码方式。
如果TOS是在其他位置组成的,并且您不想重新键入它,那么可以将图像提供给在线OCR服务,然后看看会返回什么?
或者,使用WebView组件连接到仅提供TOS图像的网页服务器。 (但这不是一个好主意,因为现在您需要设置和维护Web服务器!)