如何制作可滚动的长图像页面?

时间:2019-06-12 16:27:34

标签: java android

我正在进行显示TOS(服务条款)内容的活动。 TOS文本内容被写入很长的单个图像,应滚动显示。并确认按钮位于其下方。 有没有做的最佳实践?

我使用ScrollView滚动内容。 ScrollView包含ImageViewImageButton

首先,我通过android:src属性插入非常长的TOS内容图像。 但是,xxxhdpi图像文件的大小约为1MB,高度约为18000,因此应用程序崩溃了(它显示“画布试图绘制太大的位图”错误)

之后,我尝试使用GlidePicasso的图片库。使用它们,不会发生错误,但图像质量会下降。 我搜索并尝试了许多解决方案以保持分辨率和渲染速度,但是失败了。

我认为尝试使用较小的图像是更好的解决方案,但是在模拟器中,使用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是否可以正确处理长图像。

2 个答案:

答案 0 :(得分:0)

尝试将图像放入serverSelectionTryOnce文件夹

如果您使用的是Glide,请尝试使用drawable-nodpi attr

添加到Android清单.thumbnail() attr

并至少减小大图像的大小

答案 1 :(得分:0)

有希望的是,您使自己的生活变得困难。

仅具有图像形式的TOS是不常见的; “正确”的方法是将您的TOS设置为文本形式,这也是最快的编码方式。

如果TOS是在其他位置组成的,并且您不想重新键入它,那么可以将图像提供给在线OCR服务,然后看看会返回什么?

或者,使用WebView组件连接到仅提供TOS图像的网页服务器。 (但这不是一个好主意,因为现在您需要设置和维护Web服务器!)