我需要澄清一些关于我的应用程序的图像资产的疑问,
如果我在xml文件中指定某事物[图像视图]的高度为50倾角高度
我应该从资源文件夹中选择哪种类型的屏幕?
drawable, hdpi, ldpi, mdpi, xhdpi,
Run Code Online (Sandbox Code Playgroud)
拥有50像素高度的图像,
与基本图像相比,更大,更小尺寸图像的百分比是多少,
就像在iOS中一样,@ 2x,实际上是图像大小的2倍,并且以编程方式表示正常大小,
谢谢!
android android-image android-screen-support android-resources
谷歌Nexus 10很快推出,是第一个使用xxhdpi资源的设备.它的显示密度约为300 DPI(根据Nexus 10网站和此计算器).
但是,当我转到Android文档时,它指出:
ldpi :~120dpimdpi :~160dpihdpi :~240dpixhdpi :~320dpixxhdpi 未指定.为什么Nexus 10的300 DPI屏幕xxhdpi不是xhdpi,而DPI的近似值应该是xxhdpi多少?我们是否应该担心此时有新的资源(除了图标)xxhdpi,还是应该让操作系统扩大xhdpi资源?
我已经将一个项目导入了我的Eclipse IDE,但由于R文件没有自动生成,所以它给了我一个错误.
如何编辑R文件以使其符合我的项目要求?
我用gradle得到了这个奇怪的错误,请帮助我!
/.../app/build/intermediates/res/debug/drawable-xxhdpi-v4/ic_launcher.png:
error: Duplicate file
/.../app/build/intermediates/res/debug/drawable-xxhdpi/ic_launcher.png:
Original is here. The version qualifier may be implied.
Error:Execution failed for task ':app:processDebugResources'.
com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException:
Process 'command '/.../sdk/build-tools/22.0.1/aapt'' finished with non-zero exit value 1
Run Code Online (Sandbox Code Playgroud)
在它正常运行之前,但是因为我把classpath com.android.tools.build:gradle:1.2.2,这导致我错误
比方说,在我的API调用中,我有一个被调用的参数color.是否可以编辑或修改现有的R.colors.color以从API结果中分配颜色?
举个例子:
我打电话给我的API并返回green,现在我想用ie(绿色Toolbar,绿色TextView等)加载我的应用程序,这可能吗?
我的第一个想法是:
在colors.xml被调用上创建一个项目,demo然后为它指定一个默认颜色,然后demo在我想要的任何地方使用这个颜色(Button,TextView等等)然后我认为可以用API的结果以编程方式更改这个值,所以我不需要创建一个SharedPreferences或类似的东西,以避免更多的代码.
正如@YS对我说的那样
不幸的是,你必须手动设置文本或视图的颜色...... :(
我想如果有其他方法可以做到这一点,因为我不知道Activities我的项目将包含多少,所以如果有其他方法可以做到这一点我很高兴听到其他猜测.
我正在尝试@Jared Rummler的答案,也许我做错了什么......我创造了一个简单的Json,我把我的资产我解析了Json,我把它放在一个GlobalConstant然后我做了一个"简单的应用程序".
首先,我有一个TextView和a Button包含"your_special_color",并返回它我把GlobalConstant int如下:
case "your_special_color":
return GlobalConstant.color;
Run Code Online (Sandbox Code Playgroud)
然后我尝试的是我的第一个Activity有1 TextView和1,Button正如我之前所说,他们有颜色"your_special_color",我不想改变它,但我有一个Intent在我Button打开另一个Activity包含相同,但与GlobalConstant.color而且它没有改变.
我试过这样做(我的第二个活动):
public class Main2Activity extends AppCompatActivity {
private Res …Run Code Online (Sandbox Code Playgroud) Android的神奇之处在于只通过R.id.XXX找到合适的资源.
AFAIK,资源被编译成二进制格式,那么这个映射逻辑如何在底层工作呢?
也许它的工作原理如下:
例如,在layout1.xml中,我们得到:
<Button android:id="@+id/button1" >
Run Code Online (Sandbox Code Playgroud)
和AAPT将在R.java中生成:
public static final int button1=0x7f05000b;
Run Code Online (Sandbox Code Playgroud)
当生成*.apk时,@ + id/button1将替换为"0x7f05000b".
因此,当我们打电话时:
findViewById(R.id.button1);
Run Code Online (Sandbox Code Playgroud)
我们基本上仍然根据ID进行搜索,尽管ID是一个像0x7f05000b的数字.
谢谢!
我真正想知道的是,如何将资源id整数解析为资源内容?换句话说,Android运行时如何以资源ID作为唯一线索来定位资源内容?
例如,如何找到具有资源ID的可绘制图片?或者如何找到具有资源ID的字符串值?
我今天将Android Studio升级到3.1,现在Android Studio说它无法解析大多数资源的符号(例如ThemeOverlayin styles.xml或?attr/actionBarSize).到目前为止,这似乎并没有阻止我在模拟器中构建或运行,但这些错误让我感到紧张.
还有其他人遇到过这个问题吗?我怎样才能解决它?我尝试过同步gradle和清理我的项目,但它似乎没有任何帮助.
有任何想法吗?
我正在使用带有Gradle版本4.4和Gradle Plugin 3.1.0的Android Studio 3.1
编辑: 此问题影响更新到Android Studio 3.1.1,3.1.2,3.1.3,3.1.4以及Gradle Plugin到3.1.1,3.1.2,3.1.3和3.1.4.但是,下面的答案仍然有效.
android intellij-idea android-resources android-studio android-studio-3.1
我使用了一个Fragment到我的Android Studio项目New > Fragment > Fragment (Blank).其结果是,当我尝试运行,该项目将无法编译,因为它解决不了R.drawable.abc_ic_ab_back_mtrl_am_alpha的
toolbar.setNavigationIcon(R.drawable.abc_ic_ab_back_mtrl_am_alpha);
Run Code Online (Sandbox Code Playgroud)
任何想法如何解决这个问题?
看起来我也失去了访问权限 android:buttonTint
android drawable android-layout android-resources android-studio
因此,无论设备/应用程序的当前语言环境设置如何,我都希望在多个语言环境中获取String的值.我该怎么办?
基本上我需要的是一个功能getString(int id, String locale)而不是getString(int id)
我怎么能这样做?
谢谢
我链接到我的应用程序的第三方库通常包含我的应用程序未使用的资源文件,因此最终导致我的APK膨胀.
例如,包括Google Play服务库,但不使用登录按钮功能; 所有这些图像和布局资源最终都在我的最终版本中.
由于这些资源包含在已编译的库中,如何从构建中删除它们?