我该如何去将图像传递给android的下一页?传递图像值的方法?
回答
这里有几个不同的选择。
我想通过“下一页”你的意思是下一个活动?我也假设你已经创建了一个Bitmap
的图像。 Bitmap
implements Parcelable
,所以你可以直接把它放入意图的附加部分。这也可以让你在你的活动的onSaveInstanceState()
方法中将它放入Bundle
,所以无论何时该活动被旋转或由于其他原因而被重新创建,它都会被恢复。
不过,如果你有一个以上的图像,这是不太理想的,因为你必须序列,并在每次切换活动时间反序列化的所有图片。如果你获得从文件系统图像的某个地方,或者如果你从ContentProvider
得到它像MediaStore
,那么你就必须为它Uri
。因此,您可以将Uri
作为意图,然后在每次加载活动时重新创建位图。这具有序列化数据量较小的优点,但在处理方面更糟糕,因为现在必须从文件系统读取数据并每次解压缩图像。
因此,如果您关心的性能,唯一的好方法是将图像(S)存储到一个静态变量,以便它可以通过你的其他活动进行访问。这样,两个活动实际上都使用相同的图像而不是复制它,从而节省内存。采用这种方法的唯一缺点是您无法在新任务中启动活动。所有使用图片的活动都必须在同一个过程中运行。另外,如果您完成后手动回收图像(通过Bitmap.recycle()
方法),则在回收它之前,您必须确保没有其他人使用该图像。
就个人而言,我的很多应用程序从服务器下载图像和我存储在缓存中的所有的HTTP响应,所以每当我需要这些图片我重新请求其从缓存中的一个。缓存是一个单独的,所以它可以从我的任何活动访问。
您是否有传递图片值的示例代码? 这工作?
Intent i = new Intent(Moods.this, New_Entry.class);
Bundle f = new Bundle();
f.putString("image", img);
不,你不会自己创建'Bundle',它已经由意图创建了。只需像这样添加你的图像:'i.putExtra(“image”,img)'...但是,不要这样做,我会接受上面的Josh的建议,并将其存储在全局静态变量的某处。 – 2010-08-11 15:25:15
噢,好的谢谢。但是全局静态变量方法对我来说非常复杂。我对android非常陌生。 – UserA 2010-08-12 02:42:41
- 1. 传递空值的方法
- 2. 传递方法的值
- 3. 从方法传递价值的方法
- 4. 将内部递归方法的值传递给外部方法
- 5. PHP图像上传方法
- 6. iOS:将图像按钮中的值传递给func的好方法
- 7. 传递额外的值getView onClick方法
- 8. 传递/返回值的最佳方法
- 9. 传递多个枚举值的方法
- 10. 在Java中传递值的方法
- 11. 传递Optional.absent()值的方法简洁
- 12. 将值传递给方法的问题
- 13. 传递值的ruby动态方法
- 14. 传递对象值的方法
- 15. 将数组值传递给图像源
- 16. Combobox与图像 - 传递值drawItem事件
- 17. 将javascript值传递给jsp图像ID
- 18. 传递图像DOMPDF
- 19. Codeigniter:在多个视图之间传递值的最佳方法
- 20. Grails的传递PARAMS图像
- 21. 如果使用意图方法使用前置摄像头,则传递值
- 22. 传递用GET方法非整数值
- 23. android将值传递给post方法
- 24. 命名方法和值传递
- 25. 在初始化方法中传递值
- 26. 将值传递给委托方法
- 27. 将值传递给虚方法
- 28. PHP - Post方法未传递完整值
- 29. 将值传递给方法onSucces
- 30. 传递价值,操作方法
是否为字符串值的方法相同? – User358218 2010-08-11 03:20:41
是的,你可以将它添加到意图的演员,或者你将它存储在一个静态变量。这是两个活动共享数据,任何类型数据的唯一途径。至少对于字符串来说,将它们序列化并且它们不占用太多内存是很快的,所以通过将它们放入意图中,你确实没有任何损失。 – 2010-08-11 03:50:02
我还应该补充说,如果你不需要多个活动来共享一个对象,但是当由于旋转而重新创建活动时你确实需要保留这个对象,那么你应该检查Activity.onRetainNonConfigurationInstance()方法。 http://developer.android.com/reference/android/app/Activity.html#onRetainNonConfigurationInstance – 2010-08-11 03:54:04