为了账号安全,请及时绑定邮箱和手机立即绑定

在窗口小部件中动态放置位图时,活页夹交易失败

在窗口小部件中动态放置位图时,活页夹交易失败

摇曳的蔷薇 2019-12-20 10:48:08
有人可以告诉我粘结剂交易失败的原因吗?我可以在logcat中看到此错误消息。尝试在小部件中动态放置位图时遇到此错误...
查看完整描述

3 回答

?
繁星点点滴滴

TA贡献1803条经验 获得超3个赞

这是因为对RemoteView的所有更改都已序列化(例如setInt和setImageViewBitmap)。位图也被序列化为内部捆绑。不幸的是,该捆绑包的尺寸限制非常小。


您可以通过按以下方式缩小图像尺寸来解决此问题:


 public static Bitmap scaleDownBitmap(Bitmap photo, int newHeight, Context context) {


 final float densityMultiplier = context.getResources().getDisplayMetrics().density;        


 int h= (int) (newHeight*densityMultiplier);

 int w= (int) (h * photo.getWidth()/((double) photo.getHeight()));


 photo=Bitmap.createScaledBitmap(photo, w, h, true);


 return photo;

 }

选择newHeight足够小(在屏幕上应该为每个正方形大约100个正方形)并将其用于小部件,您的问题将得到解决:)


查看完整回答
反对 回复 2019-12-20
?
慕码人8056858

TA贡献1803条经验 获得超6个赞

您可以将位图压缩为字节数组,然后在另一个活动中将其解压缩,如下所示。


压缩!!


        ByteArrayOutputStream stream = new ByteArrayOutputStream();

        bmp.compress(Bitmap.CompressFormat.PNG, 100, stream);

        byte[] bytes = stream.toByteArray(); 

        setresult.putExtra("BMP",bytes);

解压!!


        byte[] bytes = data.getByteArrayExtra("BMP");

        Bitmap bmp = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);


查看完整回答
反对 回复 2019-12-20
  • 3 回答
  • 0 关注
  • 422 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信