- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
Android Studio(使用 SDK 19、21 或 22)显示 Eclipse ADT(使用 SDK 19)没有显示的错误:
Error:9-patch image D:\Workspaces....\res\drawable-hdpi\btn_bg_common_press.9.png malformed. Error:Frame pixels must be either solid or transparent (not intermediate alphas). - Found at pixel #4 along top edge.
Error:Ticks in transparent frame must be black or red.
都在 aapt
中
Error:Error: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'E:\Android\sdk-Android-Studio\build-tools\19.1.0\aapt.exe'' finished with non-zero exit value 42
文件示例如上,但有 20 多个这样的文件运行良好。
如何让 Android Studio 或 Gradle 跳过此错误,并且不必逐一修改这些文件而不会失败?
如果 Gradle 无法实现,我可以使用什么命令行工具将所有透明像素替换为不透明?
应用程序模块(资源所在)的 build.gradle 文件如下。
我都试过 SDK 19 and SDK 21和 build tools 19.1, 21.1.2, 22 .
AOSP 上的类似问题,Issue 159464: Android studio: mergeDebugResources FAILED when importing Eclipse project .
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.1.+'
}
}
allprojects {
repositories {
jcenter()
}
}
//---
task wrapper(type: Wrapper) {
gradleVersion = '2.2.1'
}
apply plugin: 'com.android.application'
dependencies {
compile fileTree(dir: 'libs', include: '*.jar')
compile project(':afinal')
compile 'com.android.support:appcompat-v7:19.0.+'
//compile 'com.android.support:appcompat-v7:21.0.+'
}
//---
android {
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
}
compileSdkVersion 19
buildToolsVersion "19.1.0"
//compileSdkVersion 21
//buildToolsVersion "21.1.2"
//compileSdkVersion Integer.parseInt(project.COMPILE_SDK_VERSION)
//buildToolsVersion project.BUILD_TOOLS_VERSION
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
zipAlignEnabled true
//signingConfig signingConfigs.release
}
debug {
zipAlignEnabled true
}
}
lintOptions {
//checkReleaseBuilds false
// Or, if you prefer, you can continue to check for errors in release builds,
// but continue the build even when errors are found:
abortOnError false // false also required by https://wiki.jenkins-ci.org/display/JENKINS/Android+Lint+Plugin
}
}//android
Android Gradle 插件源位于 https://android.googlesource.com/platform/tools/build/+/master .
最佳答案
How automatically solve the issue (without checking all images in different resolutions)
不可能。由于您希望 .png 表现得像一个九补丁(沿边缘扩展,而不是拉伸(stretch)整个位图),因此您必须将它们格式化为这样的格式,因此 您必须修改文件.
建议的替代方案
由于形状非常简单,您最好删除此文件的所有变体(节省空间、时间和过程中的麻烦)并创建 /res/drawable/btn_bg_common_press.xml
具有以下内容的可绘制对象:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="16dp"/>
<solid android:color="#ccc"/>
<stroke
android:color="#0c0"
android:width="2dp"/>
</shape>
您可以使用 dimen
和 color
资源而不是硬编码值。此外,您可能还想添加 padding
里面的元素shape
<shape...>
<padding
android:top="8dp"
android:left="8dp"
android:bottom="8dp"
android:right="8dp"/>
</shape>
和/或包装 shape
inset
中的元素元素。
<inset
xmlns:android="http://schemas.android.com/apk/res/android"
android:insetTop="8dp"
android:insetLeft="8dp"
android:insetBottom="8dp"
android:insetRight="8dp">
<shape...>
</inset>
如果这样做,drawable 将具有隐含的填充,并且您不必在设置小部件样式时设置它。由于按钮有多个状态可绘制对象,我建议您将它们全部转换为 XML 以确保线宽和角匹配。
尽管根元素的名称为 <shape>
实际上膨胀到GradientDrawable
(这意味着您可以用渐变而不是纯色填充它)。评论 GradientDrawable
docs对于它的所有选项。不要永远使用ShapeDrawable
以编程方式,它只是行不通。
分析 9-patches
考虑以下三张放大图像。
候选#1 是一个九补丁。它在每一侧都保留了 1px 用于拉伸(stretch)和填充规范。这一张在拉伸(stretch)时将表现为普通位图。如果宽度大于高度,则两侧的边框厚度也将大于高度。边框将按比例缩放。
Candidate #2 也是一个九补丁,实际上是说它会拉伸(stretch)除 1px 边框之外的所有内容,并且每边都有 3px 的隐含填充。拉伸(stretch)时它会有一个清晰的 1px 边框。
候选人 #3 不是九补丁。它的缩放方式与 #1 相同。
现在让我们看一下您在 OP 中包含的图像的放大版本:
如您所见,它不是 9-patch ,因此不会被解释为一个补丁,并且构建工具足够友好地警告您这一点。即使较旧的构建工具更宽容并为您在每一侧添加透明 1px,结果也会表现得像普通位图,这意味着当拉伸(stretch)时它看起来像样本 A 而不是预期结果样本 B。
这是 more reading on nine-patches .这解释了每边额外的 1px 的用途。
关于android - 自动解决 Android 构建错误 :Frame pixels must be either solid or transparent (not intermediate alphas). - 在顶部边缘的像素 #4 处找到,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28469807/
我想要一个具有透明背景的图表,因此 PNG 似乎是一个不错的选择。但是当我设置透明背景时,轴标签的质量急剧下降。我该如何解决?请参阅以下代码。就目前而言,图表具有透明背景,正如我所希望的,但文本质量很
我正在尝试制作一个透明的谷歌图表,但它似乎不起作用。它只是绘制纯白色背景。 有没有人在透明度方面取得成功? 难道我做错了什么? 提前致谢! 谷歌图表信息:solid fill 测试网址: Google
我有一个 subview 已添加到我的 UIView 中。这个想法是 subview 是一个带有 uibuttons 的悬停面板。 subview 的 alpha 值为 0.2,因为用户需要能够看到其
如何在不影响表单控件的情况下更改表单的 alphablend? 德尔福XE7 最佳答案 此问题的一个解决方案是使用多设备应用程序(如果无法使用VCL)。 如果您需要保留透明的TForm,只需更改属性T
嗨,我正在用 mvc4 做我的元素。在我的布局页面中,我有一个透明的 div(#wrapper),最重要的是我有许多非透明的 div。为此,我使用了以下 css 和 html 代码。
我有黑色和透明的简单图像,想将其更改为白色和透明。我想保持透明度(80% 黑色和 20% 透明 >> 80% 白色和 20% 透明,30% 黑色和......)。我尝试了填充桶,但没有成功。 据我所知
我有一组位图。它们在某种程度上都是透明的,我事先不知道哪些部分是透明的。我想从排除透明部分但在正方形中的原始位图中创建一个新位图。我认为这张图片解释了这一点: 我知道如何从现有位图中创建位图,但我不知
我整个下午都在尝试第一次使用 expo-cli 运行 expo build:ios,这样我就可以将我的第一个 expo 应用程序放到 TestFlight 上,但我反复收到错误消息:“你的应用程序图标
我想知道为什么在 Mac OS X 上的滚动条有时是白色透明的,有时是黑色透明的,如果您在常规设置中将“显示滚动条”设置为“滚动时”。所有浏览器(Safari、Chrome、Firefox、Opera
这个问题在这里已经有了答案: Difference between "-webkit-text-fill-color" and "color"? (2 个答案) 关闭 4 年前。
我想为我的应用程序开发一个配置文件屏幕。我正在使用 AppCompactActivity,因为我需要我的应用程序也支持非 Lollipop 设备。我只需要为应用程序中的这个特定 Activity 屏幕
第一个场景: h1{ text-align: center; } td{ width: 100px; height: 100px; border-right: 1px solid gray; bord
我在 Google Earth Engine 中工作,正在尝试创建一种无颜色/完全透明的颜色(无边框和无填充)。下面是一行代码,其中第一种颜色应该是透明的“颜色”。基本上我希望我的最小值根本不显示在
我在HTML5 Canvas 上玩createRadialGradient()。除非我要实现(半)透明性,否则它的工作原理就像一种魅力。 我做了这个jsFiddle以使事情更清晰:http://jsf
我需要从 www.webwoods.co.uk/lsss/index.html(黑色和红色的星星)的网站图标中删除白色背景 有没有办法用常用的图形编辑器(Adobe CC、Paint 等)来做到这一点
我需要使用透明度(背景每隔几秒钟更改一次)找到图像(检测游戏中的文本)。我的脚本: #include HotKeySet("s", "Start") $x = 0 $y = 0 Func Start
环境:WebGL,Chrome。将透明png用作模型的纹理时,我有以下行为: 图片A-树将建筑物隐藏在其后,我看到了世界框纹理。它还隐藏自身(后分支不可见) 同时-图片B-正常运行,窗口是透明的,我看
我正在尝试将水印渲染到视频中。一旦水印的图像文件 (.png) 包含透明度,图像就不再渲染到视频中。如果我将该图像转换为 .jpg 然后再转换回 .png,效果很好。如果我创建一个没有透明度的新 pn
我正在使用tilemill来生成mbtile。有人知道如何使mbtiles背景透明吗? 最佳答案 您的默认样式将具有类似的规则 Map { background-color:#f00; } 这为
我有一个奇怪的问题,我在尝试在 WebGL 中进行混合时无法弄清楚。黑色呈现为完全透明,所有带有灰色阴影的内容也呈现为半透明。我已经将它设置为使用 alpha channel 作为透明度的来源,并且在
我是一名优秀的程序员,十分优秀!