Articles of android assets

使用资产或res / raw文件夹时是否存在重大差异或限制?

背景 该应用程序的某些文件只能存储在res / raw或assets文件夹中。 每个文件夹的工作方式与另一个文件夹的工作方式非常相似。 res / raw文件夹允许更轻松地访问文件,具有资源文件的所有其他好处,而资产文件夹允许访问它们,无论文件名和结构如何(包括文件夹和子文件夹)。 加载文件的主要思想对于它们来说大致相同。 您可以选择易用性,具体取决于您的需求。 问题 我记得很久以前,我发现这两个文件夹都有一些特殊的行为: assets文件夹中的每个文件夹都有最大数量的文件。 我认为这是500左右,但不确定。 我很久以前就注意到了这种行为, 有人说资产文件夹中的文件具有文件的最大大小(例如此处 )。 我从未见过这样的限制。 当时甚至不在Android 2.3上。 有人说( 这里的例子),即使在今天(例如这里 )仍然相信,如果从res / raw加载文件,它可能比从assets文件夹中获取文件需要更多的内存。 我试过的 对于#1,在我工作的项目之后,我从来没有使用过更多的文件,在我工作的时候,我们只是将文件分成更多的文件夹。 对于#2,正如我写的那样,我从来没有注意到它。 我使用了更大的文件大小。 对于#3,我尝试制作一个示例项目,比较两种方法之间的内存使用情况。 我没有注意到两种方法之间的任何差异(内存使用或加载时间)。 特别是不是主要的。 可悲的是,我只有一个设备(Nexus 5x),它有一个新的Android版本(8.1)。 可能是从特定的Android版本开始,两种方法之间没有区别。 另一个原因是,由于GC,测量Java的内存使用量更难,而且我已经注意到在Android 8.x上,内存的工作方式与之前有所不同( 在此处编写)。 我试着读一下上面的差异和限制,但我发现的都是非常古老的文章,所以我认为事情可能会发生变化。 问题 实际上这只是一个问题,但我想分解它,以防答案很复杂: 使用res / raw和assets文件夹之间是否有任何重大或独特的限制或差异? 从assets文件夹中读取文件(通过从中创建输入流)确实比使用res / raw占用更少的内存吗? 即使是现在,即使是最受赞赏的开发商之一( 这里 )也决定选择它? 上述限制是否存在特定的Android版本,然后它们在没有任何限制方面变得相同(当然文件命名为res / raw,但这只是它的工作方式)? 如果是这样,他们从哪个Android版本开始工作呢?

Android:WebView提高了本地html文件的加载速度

有没有办法提高将本地.html文件加载到WebView 。 .html文件存储在/assets文件夹中。 正如您在video中看到的( 抱歉,链接已损坏! ), TextView (红色beackground)在转换开始之前呈现,而WebView的文本随后显示。 如何以与TextView一样快的速度加载WebView ? //current implementation webView.setInitialScale(1); webView.getSettings().setJavaScriptEnabled(true); webView.getSettings().setLoadWithOverviewMode(true); webView.getSettings().setUseWideViewPort(true); webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY); webView.setScrollbarFadingEnabled(false); webView.loadUrl(“file:///android_asset/disclaimer.html”); 概要 这是不可能的。 我在这里尝试了所有评论并没有什么区别。 我问的原因是,我们有一个iOS和Android应用程序,主要由简单的TextViews和Images 。 所以我们有了创建本地 html文件的想法,我们可以在两个应用程序中使用它们。 在iOS这就像一个魅力,但在Android我们无法摆脱加载时间,所以我总是有一个空白的屏幕,在100-200ms后,内容出现。 我想如果Activity可见,Androids WebView开始渲染。 这在在线模式下完全有意义,因为您不想加载几个html页面,用户在实际关注它们之前在后台新打开它们。 但是,在脱机模式 (存储在应用程序assets中的本地html文件)中,此行为是不必要的,但您无法更改它。 现在我们现在真的为什么phonegap&co糟透了。 仅供记录:最后,我使用了一个带有空LinearLayout容器的活动,您可以在其中以编程方式插入内容。 每种样式(标题1,标题2,内容……)都有自己的布局xml文件 public void insertHeadline(int id){ String text = getString(id); TextView headline = (TextView) inflater.inflate(R.layout.layout_text_headline, null, false); headline.setText(text); //add this TextView to […]

如何在android中获取资产文件夹的文件路径

我有一个Android应用程序用于将.png图像从Android应用程序的asset文件夹传输到我的本地服务器。 我需要获取资产文件夹中的图像路径,请参阅下面的代码, String stringPath = “android.resource//”+getPackageName()+”/raw/sample/logout.png”; File f = new File(stringPath); 如果我使用上面的代码,我得到“文件未findexception”。 那么如何在资产文件夹中获取图像路径?

具有任意JSON密钥的Jackson ObjectMapper

我在Android项目中使用Jackson 1.9.5来解析JSON文件。 到目前为止,我没有遇到任何问题,可以使用以下代码解析文件: AssetManager mgr = getAssets(); ObjectMapper mapper = new ObjectMapper(); try { InputStream ifp = mgr.open(“detail_schema.json”); schema = mapper.readValue(ifp, DetailSchema.class); } catch (IOException e) { e.printStackTrace(); } DetailSchema类由原始types和类组合而成。 我现在遇到一个问题,我想解析一些JSON,如下所示: “fields”: { “Suburb”: “Paddington”, “State”: “NSW”, “Post Code”: “2074”, “Lollipop”: “Foo Bar Haz” } 我不可能事先知道地图键(他们可以是用户定义的)。 因此,我不确定关联的Java类应该是什么样子。 即,对于这个例子,它可能看起来像: public class MyClass { public String Suburb; […]

如何在测试执行期间从assets文件夹访问文件?

如何在unit testing执行期间从assets文件夹访问文件? 我的项目是使用Gradle构建的,我使用Robolectric来运行测试。 似乎gradle正在认识assets : 这就是我在努力阅读文件的方式: public String readFileFromAssets(String fileName) throws IOException { InputStream stream = getClass().getClassLoader().getResourceAsStream(“assets/” + fileName); Preconditions.checkNotNull(stream, “Stream is null”); BufferedReader reader = new BufferedReader(new InputStreamReader(stream, “UTF-8”)); return IOUtils.toString(reader); } 但是stream始终为null 。 我尝试了很多不同的方法,即使用不同的方法定义文件的路径。 非常感谢你提前。

Android Webview shouldOverrideUrlLoading方法

什么shouldOverrideUrlLoading调用shouldOverrideUrlLoading方法? webView.setWebViewClient(new WebViewClient(){ @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { } }); 它是在初始加载url时调用的吗? 例如webView.loadUrl( “file:///android_asset/html/index.html”); 是否每次调用webview的URL都会更改? 任何参考? 我找不到一个。 谢谢

从assets目录中读取文件会引发FileNotFoundException

我正在尝试阅读一些文字文件中的一些单词,我想用于我正在写的文字游戏。 此列表存储在assets目录中,是一个txt文件。 但是,每当我尝试打开它时,它都会引发exception。 ListwordList = new ArrayList(); BufferedReader br = null; try { br = new BufferedReader(new InputStreamReader(getAssets().open(“wordlist.txt”))); //throwing a FileNotFoundException? String word; while((word=br.readLine()) != null) wordList.add(word); //break txt file into different words, add to wordList } catch(IOException e) { e.printStackTrace(); } finally { try { br.close(); //stop reading } catch(IOException ex) { ex.printStackTrace(); } […]

操作栏和通知无效的Android图标生成器(灰色形状)

我find了这个Asset Studio来生成图标。 它适用于启动器图标,但对于操作栏或通知图标,它无法正常工作。 我输入了我的png文件并想生成图标,但Asset Studio只生成灰色圆圈。 还有其他工具可以生成操作栏和通知图标吗?

在android中的assets文件夹中打开一个文件

我在assets文件夹中有一个.gif文件,比如assets / Files / android.gif。 当我尝试打开文件时,它会在第二行抛出exception AssetManager mngr=getAssets(); InputStream is2=mngr.open(“Files/android.gif”); 所以,如果我尝试打开文本文件,尽管相同的代码有效,我是否正在尝试打开图像文件? 这可能是什么问题。

将(.txt)文件保存到Android中的Assets文件夹?

如何写入assets文件夹中的.txt文件。 如何获取路径资产文件夹?