标签: mipmaps

Mipmap与可绘制文件夹

我正在使用Android Studio 1.1 Preview 1.我注意到当我创建一个新项目时,我得到以下层次结构:

在此输入图像描述

不同DPI的Mipmap文件夹,没有更多不同的DPI可绘制文件夹.

我应该将所有资源放在mipmap文件夹中,还是只放置应用程序图标?

android mipmaps android-drawable

577
推荐指数
1
解决办法
26万
查看次数

Mipmap drawables图标

从Android 4.3(Jelly Bean)开始,我们现在可以利用这些res/mipmap文件夹来存储"mipmap"图像.

例如,Chrome for Android将其图标存储在这些文件夹中,而不是更常用的res/drawable文件夹中.

这些mipmap图像与其他熟悉的可绘制图像有何不同?

我看到在我的清单中,我们使用@mipmap/限定符,而不是@drawable/,这对于资源文件夹名称是有意义的:

<activity
    android:name=".MipmapDemp"
    android:icon="@mipmap/ic_launcher" />
Run Code Online (Sandbox Code Playgroud)

参考文献:

Android 4.3的API的文档具有下面要说:

使用mipmap作为位图或drawable的源是提供高质量图像和各种图像比例的简单方法,如果您希望在动画期间缩放图像,这可能特别有用.

Android 4.2(API级别17)在Bitmap类中添加了对mipmap的支持 - 当您提供了mipmap源并启用了setHasMipMap()时,Android会在您的Bitmap中交换mip图像.现在在Android 4.3中,您还可以通过提供mipmap资源并在位图资源文件中设置android:mipMap属性或通过调用hasMipMap()来为BitmapDrawable对象启用mipmaps.

我没有看到任何有助于我理解的东西.


XML Bitmap资源具有以下android:mipMap属性:

布尔.启用或禁用mipmap提示.有关更多信息,请参见setHasMipMap().默认值为false.

就我所见,这不适用于启动器图标.


问题出现在Google网上论坛(资源名称"mipmap"的目的?!)上,Romain Guy回复道:

提供通常可以计算的更大分辨率的图像很有用(例如,在mdpi设备上,Launcher可能希望更大的hdpi图标显示大型应用程序快捷方式.)

我觉得这几乎是有意义的,但并不完全.

我仍然倾向于选择Randy Sugianto的跟进:

这有什么好处?是否有任何指南如何使用mipmap,可能是为了更好的启动器图标?


当然,维基百科有一个"Mipmap"页面,它指的是一种1983年发明的旧技术,我无法与当前的Android实现相关联.


我们现在应该将所有应用程序图标res/mipmap存储文件夹中吗?这些mipmap图像的准则是什么?


更新#1

这是一篇博文,试图解释一下.

但是该博客文章中使用的图像显示了一个包含许多徽标的文件.这不是我在Chrome的mipmap文件夹中看到的.

Chrome的mipmap-hdpi文件夹包含三张图片.一个是Chrome徽标,单独使用.

Chrome mipmap-hdpi icon.png

奇怪的是,它是72x72,而不是48x48,我希望看到.

也许这就是全部 - 我们只需要在mipmap文件夹中保留更大的图标?


更新#2

2014年10月23日的Android开发者博客文章再次证实了将mipmap文件夹用于应用程序图标的想法:

android mipmaps android-drawable

438
推荐指数
5
解决办法
18万
查看次数

在Android 4.2之前使用mipmap启动器图标?

我正在使用Android Asset Studio生成我的启动器图标,我已经看到输出现在正在创建mipmap文件夹而不是可绘制文件夹.

由于Android 4.2和我的应用程序针对ICS 4.0.3(API 15),因此添加了mipmap支持.使用它们是否安全?然后在drawables文件夹中没有任何ic_launcher图标?

更新我确认它工作正常.您只能将"mipmap"文件夹用于"应用程序"图标

android mipmaps android-drawable

21
推荐指数
2
解决办法
5642
查看次数

如何以编程方式从mipmap文件夹加载图像?

如何以mipmap编程方式从文件夹加载图像(与drawables一样)?

  img.setImageResource(imageId);
Run Code Online (Sandbox Code Playgroud)

我使用的是Android Studio 1.2.1.

android mipmaps

19
推荐指数
2
解决办法
3万
查看次数

纹理在OpenGL中有多少个mipmap

没关系,我是第一个创建纹理的人,我应该非常清楚我为它加载/生成了多少个mipmap.我这样做是为了进行单元测试.似乎没有一个glGetTexParameter参数可以找到它.我最接近的是这样的:

int max_level;
glGetTexParameter( GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, &max_level );
int max_mipmap = -1;
for ( int i = 0; i < max_level; ++i )
{
    int width;
    glGetTexLevelParameter( GL_TEXTURE_2D, i, GL_TEXTURE_WIDTH, &width );
    if ( 0 == width )
    {
        max_mipmap = i-1;
        break;
    }
)
Run Code Online (Sandbox Code Playgroud)

无论如何,glGetTexLevelParameter()如果我使用的是NVidia GPU,将为不存在的mipmap返回0宽度,但是对于Mesa,它会返回GL_INVALID_VALUE,这让我相信这是非常错误的事情.

如何找出我填充纹理的mipmap级别?

opengl textures pyopengl mipmaps

18
推荐指数
2
解决办法
8425
查看次数

为OpenGL纹理使用自己的mipmap创建算法是否有意义?

我想知道如果我使用自己的算法预生成它们而不是内置的自动算法,纹理mipmap的质量是否会更好.我可能会使用一个缓慢而漂亮的算法,比如Lanczos重新采样.

是否有意义?我会在现代显卡上获得任何质量提升吗?

opengl textures mipmaps

16
推荐指数
2
解决办法
8411
查看次数

如何在GLSL片段着色器纹理中访问自动mipmap级别?

在GLSL片段着色器中对纹理进行采样时,如何确定使用的mipmap级别?

我知道我可以使用以下textureLod(...)方法手动采样纹理的特定mipmap级别:

uniform sampler2D myTexture;

void main()
{
    float mipmapLevel = 1;
    vec2 textureCoord = vec2(0.5, 0.5);
    gl_FragColor = textureLod(myTexture, textureCoord, mipmapLevel);
}
Run Code Online (Sandbox Code Playgroud)

或者我可以允许使用texture(...)like 自动选择mipmap级别

uniform sampler2D myTexture;

void main()
{
    vec2 textureCoord = vec2(0.5, 0.5);
    gl_FragColor = texture(myTexture, textureCoord);
}
Run Code Online (Sandbox Code Playgroud)

我更喜欢后者,因为我相信司机对合适的mipmap级别的判断比我自己的更多.

但我想知道在自动采样过程中使用了什么mipmap级别,以帮助我合理地对附近的像素进行采样.GLSL中是否有一种方法可以访问有关自动纹理样本使用的mipmap级别的信息?

opengl textures glsl mipmaps fragment-shader

11
推荐指数
2
解决办法
2万
查看次数

OpenGL/DirectX:Mipmapping如何提高性能?

我很了解mipmapping.我不明白(在硬件/驱动程序级别)是mipmapping如何提高应用程序的性能(至少这通常是声称).驱动程序在执行片段着色器之前不知道哪个mipmap级别将被访问,所以无论如何所有的mipmap级别都需要存在于VRAM中,或者我错了?

究竟是什么导致了性能提升?

opengl directx performance mipmaps

10
推荐指数
1
解决办法
6795
查看次数

Android Mipmap?

每当我尝试使用AndroidStudio生成一个新的Android项目时,它都会隐藏文件夹"drawables".这在我之前从未发生过.我一直在环顾四周,我意识到它已经生成了这个名为"mipmap"的文件夹.我搜索了一下,我发现这与drawables类似,但是在我错过的新AndroidStudio版本中这是一个很大的变化吗?如果不是,我怎么能得到我的Drawables文件夹?我已经尝试重建我的项目,创建新项目甚至删除我的所有AndroidStudio缓存,首选项和日志.PS我在OSX上.

WUT Android Mipmap?

android drawable mipmaps android-studio

9
推荐指数
2
解决办法
1万
查看次数

图标指定为 .xml 文件和位图

我最近将 Min SDK 版本设置为 26。我运行代码检查器来检查警告,它要求我将 mipmap-anydpi-v26 中的文件移动到名为 mipmap-anydpi 的文件夹中,我照做了。

但是,当我再次运行代码检查器时,它显示:

图标指定为 .xml 文件和位图

以下图像同时显示为与密度无关的“.xml”文件和位图文件:src/main/res/mipmap-anydpi/ic_launcher.xml、src/main/res/mipmap-hdpi/ic_launcher.png

现在,我很困惑。我是否删除密度无关的 .XML 文件或存储在 mipmap-hdpi 等中的位图 (png) 文件。或者我是否将 XML 文件移动到其他地方或什么?

xml android mipmaps file-structure launcher-icon

9
推荐指数
1
解决办法
514
查看次数