Articles of android resources

从Assets文件夹设置Notification Sound

我将声音文件附加在资源文件夹中,以便在通知中播放声音,但我无法播放资源文件夹中的声音。 我有设置页面,用户可以从中设置通知声音,用户也可以播放声音。 这部分完成了。 我可以使用Media Player播放资源文件夹中的声音。 我可以在通知创建时使用相同的逻辑,但是当用户点击通知时可能会发生问题,因为媒体播放器仍在播放声音。 我试过了 notification.sound = Uri.parse(“file:///android_asset/Sound/Long/AlarmClock.mp3”); 也尝试过这样 notification.sound = Uri.parse(“android_asset/Sound/Long/AlarmClock.mp3”); 但我的问题仍未解决。 有没有其他方法可以在assets目录中设置通知中的声音? logcat的 01-10 09:57:01.509: ERROR/PlayerDriver(31): Command PLAYER_SET_DATA_SOURCE completed with an error or info PVMFErrNotSupported 01-10 09:57:01.509: ERROR/MediaPlayer(52): error (1, -4) 01-10 09:57:01.519: WARN/NotificationService(52): error loading sound for android_asset/Sound/Long/audio.mp3 01-10 09:57:01.519: WARN/NotificationService(52): java.io.IOException: Prepare failed.: status=0x1 01-10 09:57:01.519: WARN/NotificationService(52): at android.media.MediaPlayer.prepare(Native […]

在没有上下文的情况下访问资源

我正在尝试将配置(例如URL / etc)放入资源文件夹中以供实用程序类使用。 但是,我不想从各地的活动中传递Context。 我希望能够通过路径名访问资源(似乎资产/是为此用途而设计的),而不使用上下文来访问资源。 在这种特殊情况下,我希望单例在实例化时在配置中使用某些东西。 在实例化期间,除了那次之外,它不需要任何资源。 因此,每次调用getInstance()时都必须传入一个Context,这将是一个完全的浪费。 此外,这特定于App的配置,不应存储在共享系统文件或类似的任何内容中。

Android Studio将支持库中的字符串导出到APK

最近我从Eclipse切换到了Android Studio。 我有一个具有多个模块依赖项的项目。 一个依赖是支持库appcompat,包含如下: dependencies { compile “com.android.support:appcompat-v7:19+” } 在Android文档中,我发现需要使用资源导入此库,这似乎可以正常工作。 我在项目中使用库没有问题。 问题是,当我建立一个APK并运行aapt时,outpus说: locales: ‘–_–‘ ‘de’ ‘nl’ ‘pl’ ‘sl’ ‘fr’ ‘cs’ ‘es’ ‘it’ ‘ca’ ‘da’ ‘fa’ ‘ja’ ‘nb’ ‘af’ ‘bg’ ‘th’ ‘fi’ ‘hi’ ‘vi’ ‘sk’ ‘uk’ ‘el’ ‘tl’ ‘am’ ‘in’ ‘ko’ ‘ro’ ‘ar’ ‘hr’ ‘sr’ ‘tr’ ‘lt’ ‘pt’ ‘hu’ ‘ru’ ‘zu’ ‘lv’ ‘sv’ ‘iw’ ‘sw’ ‘fr_CA’ […]

如何从java代码中读取自定义维度属性

我制作了自定义组件,只是将几个TextView放在一起。 现在我希望能够直接从代码中启动我的自定义控件,为每个电视独立传递文本大小 我的属性定义: 组件的示例初始化: 我如何尝试在组件的构造函数中读取这些属性: final int N = typedArray.getIndexCount(); for (int i = 0; i < N; i++) { int attribute = typedArray.getIndex(i); switch (attribute) { case R.styleable.BasicGauge_valueTextSize: valueTextSize = typedArray.getString(attribute); break; case R.styleable.BasicGauge_titleTextSize: titleTextSize = typedArray.getString(attribute); break; case R.styleable.BasicGauge_unitsTextSize: unitsTextSize = typedArray.getString(attribute); break; } typedArray.recycle(); } 问题:创建后,我的所有值仍为空。 40sp正是我想要的值。

检测可点击项目的投掷手势

想象一下带有4个按钮的布局 _______________________________ | | | | A | B | |______________|________________| | | | | C | D | |______________|________________| 我想检测整个布局上的投掷手势,但是当投掷开始时,没有检测到按钮。 我在用着: public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); gesturedetector= new GestureDetector(this, this); findViewById(R.id.touchContainer).setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { Log.e(“”,”TouchEvent”); return gesturedetector.onTouchEvent(event); } }); } 当没有可点击的项目时,如果从可点击的项目开始投掷则失败。 我怎么解决这个问题? 提供50分的赏金,以获得完整的工作答案

TypedValue转换为String

在我使用我的Android应用程序时随机点,LogCat充斥着以下5行的几十个重复: 10-26 12:53:30.372 21270-21270 W/Resources﹕ Converting to string: TypedValue{t=0x12/d=0x0 a=2 r=0x7f0b00d8} 10-26 12:53:30.372 21270-21270 W/Resources﹕ Converting to string: TypedValue{t=0x1d/d=0xffe51c23 a=2 r=0x7f090047} 10-26 12:53:30.374 21270-21270 W/Resources﹕ Converting to string: TypedValue{t=0x12/d=0x0 a=2 r=0x7f0b008a} 10-26 12:53:30.375 21270-21270 W/Resources﹕ Converting to string: TypedValue{t=0x12/d=0x0 a=2 r=0x7f0b00d6} 10-26 12:53:30.375 21270-21270 W/Resources﹕ Converting to string: TypedValue{t=0x12/d=0x0 a=2 r=0x7f0b00d7} 使用来自这个问题的接受答案的信息,我确定它试图将空值(0x0)解释为布尔值(0x12),这没有任何意义,因为我从不处理空值或布尔值。 日志中的资源ID(r = 0x?)指向两个布局之一中的视图/视图属性,我将在下面包含这些属性。 […]

Android – 通过引用其他定义的颜色来定义颜色

如果有一些方法可以通过引用已经定义的另一种颜色来定义colors.xml的颜色,我一次又一次地想知道。 好吧,我尝试过它,看起来好像你可以使用@ color / XXX引用其他颜色。 例如,一个colors.xml可能如下所示: … #205081 @color/primary_blue … 但我不希望其他人直接使用我的primary_blue定义 – 没有上下文制作蓝色是没有意义的。 我提出的最好的解决方案是使用primary_blue等“直接”颜色作为前缀,然后注释它们不应该直接使用。 有没有办法阻止使用这些直接颜色,同时仍允许我的colors.xml文件引用它们? 我想也许风格或apklib可以帮助我。

如果我应用背景,如何在EditText上返回默认样式?

我刚遇到一个我不知道如何解决的问题。 它看起来很傻但我找不到解决方法。 我在android中有一个带有几个EditText的表单,当你提交表单时,它检查那些EditText,如果他们有错误的数据,我将EditText更改为红色边框(应用9patch图像)。 myEditText.setBackgroundResource(R.drawable.edittext_red); 问题是,我想在用户更改EditText时恢复android的默认样式,但我不知道该怎么做。 如果我做: myEditText.setBackgroundResource(0); 它只会删除所有内容,而这不是我想要的。 谢谢!

如何使用Resources.getFraction()?

如何在资源中存储像3.1416这样的小数值? 在XML中编写什么以及如何在Java代码中检索它? getFraction()的文档说明: public float getFraction (int id, int base, int pbase) 检索特定资源ID的小数单位。 参数 base此分数的基值。 换句话说,标准分数乘以该值。 pbase此分数的父基值。 换句话说,父分数(nn%p)乘以该值。 返回 属性小数值乘以适当的基值 这个答案显示了一个简单的百分比示例,但没有详细说明参数的含义。

零数量忽略多个定义

我使用复数来编译Android应用程序的数量字符串。 我完全按照教程中的内容进行操作: res.getQuantityString( R.plurals.number_of_comments, commentsCount, commentsCount); 这是复数的定义: No comments One comment %d comments 有趣的是,输出字符串与我所定义的一样奇怪: commentsCount = 0 => “0 comments” commentsCount = 1 => “One comment” commentsCount = 2 => “2 comments” 我想这是因为文档声明When the language requires special treatment of the number 0 (as in Arabic). zero数量。 有没有办法强迫我的定义?