MediaStyle LargeIcon的大小

我正在使用新的Notification.MediaStyle类实现一个棒棒糖风格的通知到FTPstream式音乐播放器应用程序。 我将专辑封面设置为我的“大图标”。

鉴于专辑封面是直接从当前正在播放的文件中获取的,该专辑封面的大小因来源而异(可能高达5000×5000)。

从我的前棒棒糖代码我解码位图的最大尺寸定义为: android.R.dimen.notification_large_icon_width

android.R.dimen.notification_large_icon_height

这工作得很好,因为解码时间要快得多,而且内存的使用也是理想的

但是,将此代码应用于我的MediaStyle样式时,展开的视图使用比尺寸参数定义的图标大得多的尺寸,从而在展开时导致模糊的专辑图样。

是否有一些常数来定义MediaStyle大图标的展开视图的最大大小? 还是有一些解决这个问题? 就目前而言,以全分辨率对艺术进行解码是不可接受的,因为它可能导致应用程序由于OOM而崩溃。

Solutions Collecting From Web of "MediaStyle LargeIcon的大小"

从棒棒糖源代码我可以看到图像大小为128dp,请参阅GitHub上的notification_template_material_big_media.xml :

 <!-- Layout to be used with only max 3 actions. It has a much larger picture at the left side--> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/status_bar_latest_event_content" android:layout_width="match_parent" android:layout_height="128dp" android:background="#00000000" android:tag="bigMediaNarrow" > <ImageView android:id="@+id/icon" android:layout_width="128dp" android:layout_height="128dp" android:scaleType="centerCrop" /> <!-- ...Nothing interesting for us futher... --> </RelativeLayout> 

这是为了扩大布局与3个或更less的动作button。 在GrepCode上寻找Notification.MediaStyle.getBigLayoutResource(int) ,如果有更多的button,它似乎使用了notification_template_material_big_media.xml :

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/status_bar_latest_event_content" android:layout_width="match_parent" android:layout_height="128dp" android:background="#00000000" android:tag="bigMedia" > <include layout="@layout/notification_template_icon_group" android:layout_width="@dimen/notification_large_icon_width" android:layout_height="@dimen/notification_large_icon_height" /> <!-- ...Nothing interesting for us futher... --> </RelativeLayout> 

而notification_template_icon_group.xml如下所示:

 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:internal="http://schemas.android.com/apk/prv/res/android" android:layout_width="@dimen/notification_large_icon_width" android:layout_height="@dimen/notification_large_icon_height" android:id="@+id/icon_group" > <ImageView android:id="@+id/icon" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginTop="12dp" android:layout_marginBottom="12dp" android:layout_marginStart="12dp" android:layout_marginEnd="12dp" android:scaleType="centerInside" /> <ImageView android:id="@+id/right_icon" android:layout_width="16dp" android:layout_height="16dp" android:padding="3dp" android:layout_gravity="end|bottom" android:scaleType="centerInside" android:visibility="gone" android:layout_marginEnd="8dp" android:layout_marginBottom="8dp" /> </FrameLayout> 

您可以在… / res / values / dimens.xml中findnotification_large_icon_widthnotification_large_icon_height

 <!-- The width of the big icons in notifications. --> <dimen name="notification_large_icon_width">64dp</dimen> <!-- The width of the big icons in notifications. --> <dimen name="notification_large_icon_height">64dp</dimen> 

所以最后的答案是128dp的扩展布局,3个或更less的动作button和64dp,如果有更多的3。