2016-06-13 16 views
1

Androidスタジオを使用してアプリケーションを構築しています。このアプリは、ラズベリーから自分のエミュレータに画像をアップロードできます。それはうまく動作します。私が今やりたいのは、この画像をアップロードして、ギャラリーで検索せずに直接ユーザーに表示することです。別のクラスを作成し、このイメージをxmlファイルの背景イメージとして設定することを考えましたが、これは私がラズベリーからイメージをアップロードするたびに別のクラスを作成する必要があるようにあまりにも多くあります。 誰かが私を助けてくれますか?ありがとうございましたAndroidスタジオで画像を表示するためのボタン

答えて

0

あなたの質問を正しく理解している場合は、Androidファイルシステムから画像をアプリケーションに読み込んで、ユーザーに表示したいと考えています。

Drawable、Androidの一般化された画像クラスでは、Drawable#createFromPathでファイルから読み込むことができます。

This SO questionDrawable#createFromPathはので、あなたのユースケースに応じて、あなたがUri#parse/Uri#getPathとそれに先行する場合があり、file://で始まるパスでは動作しません示唆しています。

あなたはDrawableを持っていたら、次のいずれかの方法でそれを表示することができます(setBackgroundのみで追加されたことに注意して、あなたのアプリにImageViewを入れて、そのsetImageDrawableメソッドを呼び出すか、View#setBackgroundを経由して、あなたの背景画像としてDrawableを設定しますAPI 16 - 以前のバージョンでは、View#setBackgroundDrawableに電話する必要があります)。

一緒にこのすべてを置く、我々は以下の(未テスト)で終わる:

private void loadImage(String imagePath) { 
    Uri imageUri; 
    String fullImagePath; 
    Drawable image; 
    ImageView imageDisplay; 

    imageUri = Uri.parse(imagePath); 
    fullImagePath = imageUri.getPath(); 
    image = Drawable.createFromPath(fullImagePath); 

    imageDisplay = (ImageView) findViewById(R.id.imageDisplay); 
    /*if image is null after Drawable.createFromPath, this will simply 
     clear the ImageView's background */ 
    imageDisplay.setImageDrawable(image); 

    /*if you want the image in the background instead of the foreground, 
     comment the line above and uncomment this bit instead */ 
    //imageDisplay.setBackground(image); 
} 

あなたが適切でimageDisplay年代に宣言された型を置き換えることによって、ただのViewで動作するように、これを変更することができるはずViewタイプで、キャストをfindViewByIdに変更しました。 setBackgroundsetImageDrawableではなく、ImageViewView)と電話していることを確認してください。

+0

あなたの答えをありがとう、それは正しいようだが、この1つのimageDisplayを解決することはできません:imageDisplay =(ImageView)findViewById(R.id.imageDisplay); –

+0

'R.id.imageDisplay'は' ImageView'のIDです。あなたはあなたが自分の 'ImageView'を与えた名前に置き換える必要があります。 – computerfreaker

+0

Thnx男、それは完全に動作します。 –

関連する問題