我想以"拼贴"的方式创建一个包含以下布局的大约200个ImageViews(随机高度)的列表:

通常我会在ListView中使用适配器获得的性能,但由于我希望图像以列显示,并且具有不同的高度(参见图片示例),具体取决于图片,我不能使用单个列表视图用于此目的.
我尝试使用以下方法实现此布局:
我最终在ScrollView中使用了三个LinearLayouts,但这远非最佳.我宁愿使用适配器.
编辑 我一直在看StaggeredGridView,如下面的响应,但我发现它非常错.有没有更稳定的实现?
我的问题是:如何创建imageButton,允许用户从手机上传图像并将其作为图片配置文件插入应用程序?例如whatsapp它允许用户从手机中选择图像并将其设置为图片配置文件.
谢谢
我正在寻找一个库或一些想法,我可以如何将磁盘上的部件或磁带直接加载到磁盘,然后再将部分加载到磁盘.所以我认为可以做到的两种方式是将整个图像加载到磁盘上,直接使用ram从url读取和写入缓冲区,然后当磁盘上的图像时,如何创建只有部分的位图对于图像,这样我就不会加载它并将它们放入ListView.
问题是我处理的是非常长的图像(10K +像素长,宽度为4-600),如果在一个位图中加载,它们会占用大量的ram.我不能像谷歌android教程在处理大型位图部分那样缩小它们,因为这会导致宽度太小而无法处理.因此,如果我能以某种方式在磁盘上生成小位图条,我可以通过加载它们来ListView防止将图像作为一个整体加载到ram中.
现在我正在将长图像从位图中分解成条子,我意识到这并没有真正完成我想要做的事情,因为整个图像被加载到内存中的位图然后被分解,然后GC(所以无论如何,我正在使用ram的完全卸载.我正在测试一个新的顶级Android手机和应用程序工作正常,但堆大小达到80mb +与较大的图像暂时在RAM中,因为它打破了位图,这将是具有较低堆限制的设备的问题
对不起,我早些时候知道有些人有同样的问题,但我遇到了同样的问题,并没有从早期的问题中得到清晰的看法.
我发现Android非常复杂,开发人员可以处理多个维度.就像有从ldpi到xxhdpi和平板电脑的设备.
我观察到的是图像有不同的文件夹结构,如ldpi,mdpi,hdpi和xhdpi以及平板电脑sw-600dp(7英寸)和sw720dp(10英寸).
现在问题是有许多手机的尺寸为5英寸,但分辨率有所不同,对于平板电脑也是如此.所以我很困惑,为了不同的手机和移动设备,我要求设计的图像大小是多少,因为分辨率非常依赖于设备.
我也检查链接http://developer.android.com/training/basics/supporting-devices/screens.html 但是没有明确的想法.
我是android的新手.请指导我如何解决这个问题.
android android-image android-layout android-resolution android-drawable
是否可以记录(或合理地假设)BitmapFactory.decodeByteArray(...)可以识别此处列出的任何图像格式?
我正在使用绑定适配器在回收器视图中加载图像.图像显得很好.快速滚动时,我注意到有时候我从毕加索那里得到了"连接泄露"的消息.
问题来自死图像链接,硬编码我的所有图像网址指向无处不在为屏幕上的第一对滚动后的每个图像产生错误.
W/OkHttpClient: A connection to https://s3-eu-west-1.amazonaws.com/ was leaked. Did you forget to close a response body?
Run Code Online (Sandbox Code Playgroud)
代码与此示例基本相同.
BindingUtils.kt
object BindingUtils {
@BindingAdapter("imageUrl")
@JvmStatic
fun setImageUrl(imageView: ImageView, url: String) {
Picasso.with(imageView.context).load(url).into(imageView)
}
Run Code Online (Sandbox Code Playgroud)
XML
<ImageView
android:id="@+id/imageview_merchant_background"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/primary"
android:scaleType="centerCrop"
app:imageUrl="@{viewModel.background}"/>
Run Code Online (Sandbox Code Playgroud)
gradle这个
implementation "com.squareup.retrofit2:retrofit:$rootProject.retrofitVersion"
implementation "com.squareup.retrofit2:adapter-rxjava2:$rootProject.retrofitVersion"
implementation "com.squareup.retrofit2:converter-gson:$rootProject.retrofitVersion"
implementation "com.squareup.okhttp3:logging-interceptor:$rootProject.okhttpLoggingVersion"
implementation "com.squareup.picasso:picasso:$rootProject.picassoVersion"
retrofitVersion = '2.3.0'
okhttpLoggingVersion = '3.6.0'
picassoVersion = '2.5.2'
Run Code Online (Sandbox Code Playgroud)
我可以看到几个人需要关闭标准Okhttp请求的连接,但看到Picasso加载调用是一个单行,这怎么可能泄漏?
我正在从网络上读取原始图像.该图像已由图像传感器读取,而不是从文件读取.
这些是我对图像的了解:
〜高度和宽度
〜总大小(以字节为单位)
~8位灰度
~1字节/像素
我正在尝试将此图像转换为位图以在imageview中显示.
这是我试过的:
BitmapFactory.Options opt = new BitmapFactory.Options();
opt.outHeight = shortHeight; //360
opt.outWidth = shortWidth;//248
imageBitmap = BitmapFactory.decodeByteArray(imageArray, 0, imageSize, opt);
Run Code Online (Sandbox Code Playgroud)
decodeByteArray返回null,因为它无法解码我的图像.
我也尝试直接从输入流中读取它,而不是先将其转换为字节数组:
imageBitmap = BitmapFactory.decodeStream(imageInputStream, null, opt);
Run Code Online (Sandbox Code Playgroud)
这也返回null.
我在这个和其他论坛上搜索过,但找不到实现这个目标的方法.
有任何想法吗?
编辑:我应该补充说,我做的第一件事是检查流是否实际包含原始图像.我使用其他应用程序(iPhone/Windows MFC)执行此操作,他们能够读取并正确显示图像.我只需要想办法在Java/Android中做到这一点.
我想创建一个Button这样的:
这是我的代码:
<Button
android:layout_width="80dp"
android:layout_height="80dp"
android:layout_gravity="center"
android:drawablePadding="10dp"
android:id="@+id/button"
android:text="Play Game"
android:background="@drawable/ronaldo"
android:drawableRight="@drawable/messi" />
Run Code Online (Sandbox Code Playgroud)
但是messi.jpeg太大了,并没有在这种情况下显示文字.如何减小图像大小以适应按钮?
愿任何人帮我解决这个问题吗?
android android-image android-layout android-button android-drawable
tl; dr如何将一台设备上的像素测量值转换为另一台设备上的像素测量值?
我设计了一个Android应用程序,所有屏幕都是720x1280像素.我假设这是2.0 xhdpi,意味着数字像素尺寸为360x640 dp.
现在在QA中,我发现Nexus 5x上有一些不一致的内容,截取屏幕截图,并将它们拉到Photoshop中以确认/测量错误.Nexus 5x为1080x1920像素,但为2.6 xxhdpi,转换为411x731 dp.
简单的规模会不会失败?
它并不像将Nexus(1080宽度)屏幕截图拉入Photoshop并将其缩放到720宽度那么简单,对吗?这不考虑像素密度.
换句话说.如果我的@ 2x设计上的正方形是100px(50dp),那么我对Nexus截图有多大的期望?
有用的网址