Andoridで画像を表示する方法

このQ&Aのポイント
  • Andoridアプリでネット上から取得した画像を表示する方法について質問があります。現在、tryの中で画像を表示することはできていますが、tryの外に出ると表示がされなくなります。
  • 質問文によると、画像の表示はtryの中で行われており、tryの外に出た後では表示がされないようです。質問者はJava初心者であり、専門用語も理解していないため、解決策を見つけることができませんでした。どのようにすれば画像を表示することができるのでしょうか?
  • Andoridアプリでネット上から取得した画像を表示する方法について質問しています。現在、画像の表示はtryの中で行われており、tryの外に出た後では表示がされないとのことです。解決策をご教示いただけないでしょうか?
回答を見る
  • ベストアンサー

Andorid tryで取得した画像表示について

こんばんは ちょっと初心者には質問方法が難しいです。 Andoridアプリを勉強しながら作成しています。 ネット上から取得した画像を端末に表示しています。 (1)-------------------- 中略 try { URL url = new URL(photour2); InputStream input = url.openStream(); Bitmap bitmap = BitmapFactory.decodeStream(input); Bitmap bitmap1 = Bitmap.createScaledBitmap(bitmap, 120, 160, true); getimg1.setImageBitmap(bitmap1);←【ここ】 } catch (Exception exx) { changeImageView = (ImageView)findViewById(R.id.imageView3); changeImageId = R.drawable.now; changeImageView.setImageResource(changeImageId); ex.printStackTrace(); } finally { } ex.printStackTrace(); } finally { } -------------------- を、 (2)-------------------- 中略 try { URL url = new URL(photour2); InputStream input = url.openStream(); Bitmap bitmap = BitmapFactory.decodeStream(input); Bitmap bitmap1 = Bitmap.createScaledBitmap(bitmap, 120, 160, true); } catch (Exception exx) { ex.printStackTrace(); } finally { } ex.printStackTrace(); } finally { } 中略 if (bitmap1の判定){ getimg1.setImageBitmap(bitmap1);←【ここで表示させたい】 } else { changeImageView = (ImageView)findViewById(R.id.imageView3); changeImageId = R.drawable.now; changeImageView.setImageResource(changeImageId); } -------------------- (1)を(2)のように、tryしてその直後では無く、いろいろ処理してから表示させたいのですが、うまくいきません。 Java初心者で専門用語もわからず、質問方法もわからない状態です。 (1)ではうまく表示されています。 【開発環境】 Eclipse 【やった事】 ググりました沢山ヒットしますが目的の答えが見つかりませんでした。 (専門用語がわからないので、適切な検索とはいえませんが・・・・泣) 【質問・やりたい事】 (1)なんでtryの中で表示されていた画像が、外に出たら表示されないのですか? (2)どうやったら表示する事が出来ますか? 質問するにも低レベル過ぎて本当に失礼と思いますが、是非アドバイスと回答よろしくお願いたします

  • Java
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
noname#161640
noname#161640
回答No.1

単純に、変数のスコープの問題じゃないですか? 要するに、その変数はどこからどこまで使えるのか、ということですね。通常、Javaの変数は、それが宣言されたブロック内で使うことができ、そのブロックを抜けると使えなくなります。 Bitmap bitmap1;という変数宣言がtryの{}内にありますから、この{}を抜けるとこの変数は消えます。ですから、そのあとで使いたければ、tryの前にBitmap bitmap1;といった変数の宣言文だけを用意しておき、try内ではbitmap1 = Bitmap.createScaledBitmap~というようにtryの前で用意しておいた変数を使うようにします。これで、tryを抜けた後もbitmap1は使えるようになります。

nstammy507
質問者

お礼

即行ありがとうございます。 感謝感謝! 外に出した時にエラー出たので、Bitmap bitmap1を宣言しました。 で、tryの中で宣言しているのはそのままでした。泣 (いいものだと思ってました。) tryの中のBitmap bitmap1 =をbitmap1 =にして解決しました。 初歩的な事なのですが、入門初心者にとってはとても険しい道です。 ありがとうございました。

関連するQ&A

  • Androidアプリでネット上の画像を表示

    また、お世話になります Androidアプリを勉強しながら作成しております 以前、ネット上にある画像をアプリに読込して表示する方法を聞いて、勉強しながら表示する事が出来ました。 しかし、たまに取り損ねる事がありこの回避方法を教えてください。 現在のソース String url = "http://www.hogehoge.com/hoge.jpg"; try { URL url = new URL(url); InputStream input = url.openStream(); Bitmap bitmap = BitmapFactory.decodeStream(input); Bitmap bitmap1 = Bitmap.createScaledBitmap(bitmap, 100, 75, true); getimg1.setImageBitmap(bitmap1); } catch (Exception ex) { ex.printStackTrace(); } finally { } 【知りたい事】 ネット上にある(必ずあるのが条件)画像を取り損ねる事があるので、その対応方法を知りたい。 【開発環境】 eclipse galaxy S Windows vista スペルミス等がありましたら、ご了承ください。 宜しくお願します。

    • ベストアンサー
    • Java
  • Androidでjcifsを用いた画像の表示

    現在,Android4.4.2の端末にLANで接続されたWindowsPC内の画像ファイルを表示しようとしています. 下記のようにファイルの存在を確認してからimageViewに表示させようとしており、ファイルがあればfile.exists()はtrueを返し、なければfalseを返すことから、ファイルの存在の確認は問題なく行えていることはわかりました. しかし,デコードする部分でFileNotFoundExceptionが発生してしまいます. 処理はAsyncTaskのdoingBackGroud内で行っています. try { SmbFile file = new SmbFile("smb://mypc:7360@192.168.11.15/Users/mypc/test.bmp/"); if (file.exists()){ Log.e(TAG,"OK"); }else{ Log.e(TAG,"NO"); } Bitmap originalImage = BitmapFactory.decodeFile(file.getPath()); iv1.setImageBitmap(originalImage); } catch (Exception e ) { e.printStackTrace(); } このような場合、何が原因であると考えられるでしょうか? お分かりになられる方がいらっしゃいましたら何卒ご教授宜しく御願い致します.

    • ベストアンサー
    • Java
  • Androidアプリでネット上から取得した画像を表

    また、お世話になります Androidアプリを勉強しながら作成しております 以前アプリからインターネット上の画像を読込して表示したいと質問たところ回答頂いたので、いろいろやってみたのですが未だ表示する事が出来ずにいます 回答を頂いて、いろいろ調べて試してみましたが全然わからない状態です http://bit.ly/dVhcV3 回答でアドバイス頂きそれまで調べれなかった事も検索出来て試行錯誤してやりましたが、どうしても出来ないのでよろしくお願します (good-failure様本当にありがとうございました) 以下がソースです package jp.imgs; import 文字数オーバーの為省略 /** メインクラスの定義 */ public class testimgs extends Activity { /** Called when the activity is first created. */  @Override  public void onCreate(Bundle savedInstanceState) {   super.onCreate(savedInstanceState);   setContentView(R.layout.main);      //ここ未処理です   ImageView img = (ImageView)findViewById(R.id.imageView2);  ImageInputStream imgin = null;  InputStream in = null;  try {  //インスタンス化  URL url = new URL("http://www.hoge.com/hoge.png");  //インスタンスを取得  HttpURLConnection connect =(HttpURLConnection)url.openConnection();  //  connect.setDoInput(true);  //ダウンロード指定  connect.setRequestMethod("GET");  //データ取得  in = connect.getInputStream();  //エラー出ていると思われる部分  imgin = ImageIO.createImageInputStream(in);  //以下未処理です  BufferedImage im = ImageIO.read(imgin);  // 後はBufferedImageを適当に利用する  // 出来れば img に BufferedImage im を入れたい  } catch (Exception ex) {  ex.printStackTrace();  } finally {  try {  imgin.close();  //eclipseで×出るのでコメントアウト中 // connect.disconnect();  }  catch (Exception ex2) {  ex2.printStackTrace();  }  }  } } (ソースには誤りがあると思います) 【私の知識&技術レベル】 PHPとMySQLを少々、Java初体験 【現状】 エミュレータ、実機でテスト エラー発生(『The application tetings(process jp.imgs)has stopped unexpextedly.Olease try again.』)するのでコメントアウトしながらエラー発生場所を逆上ると ImageInputStream imgin = ImageIO.createImageInputStream(in); で、発生しているようです 【開発環境】 Eclipse 【やった事】 ググりました沢山ヒットしますが目的のソースに出会う事は出来ませんでした 【質問・やりたい事】 (1)setContentView(R.layout.main)の中の(R.id.imageView2)に外部から取得した画像を表示したい (2)finallyの処理のdisconnect();で構文エラー出ているのでその対応方法 以上2点です 質問するにも低レベル過ぎて本当に失礼と思いますが、是非アドバイスと回答よろしくお願いたします

    • ベストアンサー
    • Java
  • エラーメッセージで教えていただけないでしょうか

    はじめまして。 下記のソースでデバックをすると処理が途中で止まってしまいます。 原因がわからず悩んでいます。 どなたか教えていただけないでしょうか。よろしくお願いします。 // photoというIDのImageViewオブジェクトを取得 ImageView img = (ImageView)this.findViewById(R.id.photo); // assetsディレクトリのファイルにアクセス AssetManager am = getResources().getAssets(); BufferedInputStream buf; Log.d("tag","img"); try{ buf = new BufferedInputStream(am.open("eijyu.jpg"),10000); Log.d("tag","buf"); // バッファからBitmapを作成 Bitmap bitmap = BitmapFactory.decodeStream(buf); Log.d("tag","img"); // ImageViewに作成したBitmapを表示 img.setImageBitmap(bitmap); ← この部分が原因っぽい。 Log.d("tag","set"); // バッファを閉じる buf.close(); Log.d("tag","buf_close"); }catch (IOException e){ e.printStackTrace(); Log.d("tag","catch"); } ERROR: thread attach failed Got RemoteException sending setActive(false)notification to pid 1878 uid 10031

  • クリックして画像を変え、一定時間経過後もとに戻す

    androidアプリを作成している初心者です。 画像をクリックすると画像が変わるようになるようにしたいと思ってます。 画像を変えるところまではできたのですが、 一定時間経過後にもとに戻すにはどうしたらいいかがわかりません。 以下、ソースコード。 public class MainActivity extends Activity { ImageView iv; Bitmap bmp; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); LinearLayout ll = new LinearLayout(this); ll.setOrientation(LinearLayout.HORIZONTAL); ll.setGravity(Gravity.CENTER); setContentView(ll); //画像表示 iv = new ImageView(this); bmp = BitmapFactory.decodeResource(getResources(), R.drawable.ikari); iv.setImageBitmap(bmp); ll.addView(iv); //画像をクリックした時に関数を呼び出す iv.setOnClickListener(new img_ac()); } //画像を変える class img_ac implements OnClickListener { public void onClick(View v) { ImageView tmp = (ImageView) v; tmp.setImageBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher)); } } } 一定時間経過後に元の画像に戻すには、どのようにしたら良いのでしょうか。

    • ベストアンサー
    • Java
  • Androidアプリ開発に関する質問です。

    Androidアプリ開発に関する質問です。 Bitmap bmp = BitmapFactory.decodeResource(getResources(),R.drawable.xxx); という記述でres/drawable-hdpi/xxx.png の画像を持ってくることができると思うのですが、 データベースに保存したString型のxxxを使って動的に画像を表示する方法が分かりません。 データベースから画像名を持ってくる前に、String型の変数(仮にstrとする)に画像名を入れて、 Bitmap bmp = BitmapFactory.decodeResource(getResources(),R.drawable.str); と記述してもstrを変数として扱ってくれません。 どなたかres/drawable/の画像を動的に持ってくる方法を教えて頂けないでしょうか。

    • ベストアンサー
    • Java
  • AlertDialogでのURL画像表示

    現在、アンドロイド開発で「AlertDialog.Builder」を使用し、URL画像を表示するコーディングを試みております。 しかし、「R.id.image」の部分をURL画像で指定するとエラーが出力してしまいます。 LayoutInflater inflater = LayoutInflater.from(AlerDialog.this); View layout = inflater.inflate(R.layout.custom_dialog, (ViewGroup) findViewById(R.id.layout_root)); TextView text = (TextView) layout.findViewById(R.id.text); text.setText(country_name + "\n" + sex + "\n" + receipt_end_date); ImageView image = (ImageView) layout.findViewById(R.id.image); image.setImageResource(R.drawable.icon); new AlertDialog.Builder(AlerDialog.this) .setTitle(title) .setCancelable(false) .setPositiveButton("Look!", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { //webview.loadUrl(URL_ESTIMATE_USER_HISTORY); //BaseActivity.this.finish(); } }) .setNegativeButton("Close", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { dialog.cancel(); } }) .setView(layout) .show(); 解決できずに1週間ほどすぎ、現在に至っております。 何かヒントを頂ければ有り難いです。 宜しくお願いします。

    • ベストアンサー
    • Java
  • Java での グローバルIP取得

    Java を利用してグローバルIPの取得方法を探しています。 以下のサイトを参考にいたしました。 http://stackoverflow.com/questions/2939218/getting-the-external-ip-address-in-java 文中中ほどの以下のソースを試したのですが「checkip.amazonaws.com」と通信を行うせいか、ワンテンポページ表示に時間がかかります。 JavaでのグローバルIP取得するには他に良い方法はあるのでしょうか? それとも、whatismyipのようなサイトと通信を行わないとできないのでしょうか? よろしくお願い致します。 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.URL; public class IpChecker { public static String getIp() throws Exception { URL whatismyip = new URL("http://checkip.amazonaws.com"); BufferedReader in = null; try { in = new BufferedReader(new InputStreamReader( whatismyip.openStream())); String ip = in.readLine(); return ip; } finally { if (in != null) { try { in.close(); } catch (IOException e) { e.printStackTrace(); } } } } }

  • ファイルの書き出しについて、どちらのほうが良い方法でしょうか?

    下の2つのメソッドでどちらのほうがよいでしょうか? 実行時間的にはuseStringのほうが若干速いのですが... メモリ消費とかセオリーとか常識とかそういうのを含めて解説を頂きたいです。 今のところ結果は同じものが出力されています。 public static void useString() { try { System.out.println("start useString"); URL url = new URL("どこかのページ"); File outputFile = new File("test1.html"); InputStream input = url.openStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(input)); BufferedWriter writer = new BufferedWriter(new FileWriter(outputFile.toString(), true)); String tmp = ""; String str; while ((str = reader.readLine()) != null) { writer.write(tmp); } reader.close(); input.close(); writer.write(tmp); writer.close(); } catch (IOException e) { e.printStackTrace(System.out); } } public static void useStream() { try { URL url = new URL("どこかのページ"); File outputFile = new File("test.html"); InputStream input = url.openStream(); FileOutputStream output = new FileOutputStream(outputFile); byte[] bytes = new byte[2048]; int n; while ((n = input.read(bytes)) >= 0) { output.write(bytes, 0, n); } input.close(); output.close(); } catch (IOException e) { e.printStackTrace(System.out); } }

    • ベストアンサー
    • Java
  • androidアプリのlistviewについて質問

    現在Listviewにてテキストと画像を表示させています。 各行をクリックした時に、それぞれ別のActivityに移行させたいのですが、 初心者の為、悪戦苦闘しています。 わかる方がいましたら、アドバイスをお願い致します。 現在のソースは以下のとおりで、各行をタッチしても何も起こらない状況です。 public class CustomListViewActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Bitmap image; image = BitmapFactory.decodeResource(getResources(), R.drawable.tb); Bitmap image2; image2 = BitmapFactory.decodeResource(getResources(), R.drawable.tb2); Bitmap image3; image3 = BitmapFactory.decodeResource(getResources(), R.drawable.tb3); List<CustomData> objects = new ArrayList<CustomData>(); CustomData item1 = new CustomData(); item1.setImagaData(image); item1.setTextData("1行目のテキスト"); CustomData item2 = new CustomData(); item2.setImagaData(image2); item2.setTextData("2行目のテキスト"); CustomData item3 = new CustomData(); item3.setImagaData(image3); item3.setTextData("3行目のテキスト"); objects.add(item1); objects.add(item2); objects.add(item3); CustomAdapter customAdapater = new CustomAdapter(this, 0, objects); ListView listView = (ListView)findViewById(R.id.list); listView.setAdapter(customAdapater); } protected void onListItemClick(ListView l, View v, int position, long id) { switch (position) { case 0: startActivity(new Intent(this, ItemDetailActivity.class)); break; case 1: startActivity(new Intent(this, ItemDetailActivity.class)); break; case 2: startActivity(new Intent(this, ItemDetailActivity.class)); break; } } }

専門家に質問してみよう