libgdx项目中android资源文件夹的路径

时间:2015-12-26 11:13:12

标签: relative-path absolute-path

这就是我在android中的asstes文件夹的样子。我正试图通往内部资产的“19.png”。我将在文件创建中使用此路径,如new File("pathTo19.png")中所示。我尝试了"android/assets/19.png""assets/19.png"等的变体,但都没有效果。 libgdx项目中assets文件夹的路径是什么?enter image description here

编辑:我将在彩信中使用它。基于@Majid Daei Nejad回答我试过这个。但是,在mms内部没有图像,只有文本和模板图像(不是19.png),所以我猜测路径不正确。打印出的文件路径为"file:/data/19.png"

                FileHandle fh = Gdx.files.internal("data/19.png");
                Intent sendIntent1 = new Intent(Intent.ACTION_SEND);
                try {

                    sendIntent1.setType("text/x-vcard");
                    sendIntent1.putExtra("address","0475223091");
                    sendIntent1.putExtra("sms_body","hello..");
                    sendIntent1.putExtra(Intent.EXTRA_STREAM,
                            Uri.parse(fh.file().toURI().toURL().toString()));
                System.out.println(fh.file().toURI().toURL().toString());

                }
                catch (MalformedURLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                context.startActivity(sendIntent1);

4 个答案:

答案 0 :(得分:2)

这很有效。所有的欢呼Tenfour04!

FileHandle from = Gdx.files.internal("19.png");
                    from.copyTo(Gdx.files.external("19.png"));
                    FileHandle ext = Gdx.files.external("19.png");

Intent sendIntent1 = new Intent(Intent.ACTION_SEND);
                try {

                    sendIntent1.setType("image/png");
                    sendIntent1.putExtra("address","0475223091");
                    sendIntent1.putExtra("sms_body","hello..");
                    sendIntent1.putExtra(Intent.EXTRA_STREAM,
                            Uri.parse(ext.file().toURI().toURL().toString()));

                }
                catch (MalformedURLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                context.startActivity(sendIntent1);

答案 1 :(得分:0)

好吧,我不知道这是否会有所帮助,但您可以尝试获取主类的位置,然后添加所需文件的名称和类型。 您必须将图像放在与主类相同的包中。 创建一个名为loadImageFrom(或任何你想要的)的新类,并在其中添加此代码:

public static BufferedImage LoadImageFrom(Class<?> classfile, String path) {
    URL url = classfile.getResource(path);
    BufferedImage img = null; 

    try{
        img = ImageIO.read(url);
    }catch(IOException e) {
        e.printStackTrace();
    }
    return img;
}

然后通过以下方式获取图像:

loadImageFrom.LoadImageFrom(YourMainClassNameHere.class, "YourImageNameHere.YourImageTypeHere")

例如:

g.drawImage(loadImageFrom.LoadImageFrom(Main.class, "playersheet.png"), locationX, locationY, width, height, imageobserver);

如果这没有用,我很抱歉。这来自我的PC游戏代码,但我认为它也适用于Android。

(这适用于任何事物:纹理,只是HUD,GUI,基本上任何东西)

答案 2 :(得分:0)

简单地说,这取决于你想如何使用android资产文件。如果要在纹理中添加它,请使用以下方法:

Texture texture = new Texture("19.png")

如果您想将assets文件夹中的文件用于其他用途,例如audio或freeType,您可以使用:

FileHandle fh = Gdx.files.internal("data/my_music.mp3");

正如您所看到的,它指向data文件夹。

编辑: 好!看来你的问题与libgdx无关,只在Android项目中。所以请删除libgdx标签。对于您的问题,在Assets文件夹中共享图像的唯一方法是使用在此问题中询问过的ContentProvider: android share images from assets folder

答案 3 :(得分:0)

资产目录的uri是

file:///android_asset/

Libgdx不会返回内部,外部或本地Android文件的绝对路径(因为Android不会)。