2016-09-07 15 views
-4
@Override 
     protected void onDraw(Canvas canvas) { 
      String url = "http://dizay.net/files/yuklenenler/4kuAJ0egT90HnVbJz5czHgsPAL3Z4V8TgLsZC37jm8TdsvO9nZeFg1yNgD0jN.png"; 
      Bitmap image, temp, x; 
      temp = BitmapFactory.decodeResource(getResources(), R.drawable.duvar); 
      image = Bitmap.createScaledBitmap(temp, canvas.getWidth(), canvas.getHeight(), true); 
      canvas.drawBitmap(image, 0, 0, null); 

      x=getBitmapFromURL(url); 
      // Bitmap over = BitmapFactory.decodeResource(getResources(), getBitmapFromURL(url).describeContents()); 
      image = Bitmap.createScaledBitmap(x, canvas.getWidth(), canvas.getHeight(), true); 
      canvas.drawBitmap(image, 0, 0, null); 

      temp = BitmapFactory.decodeResource(getResources(), R.drawable.golge); 
      image = Bitmap.createScaledBitmap(temp, canvas.getWidth(), canvas.getHeight(), true); 
      canvas.drawBitmap(image, 0, 0, null); 

      temp = BitmapFactory.decodeResource(getResources(), R.drawable.supurge); 
      image = Bitmap.createScaledBitmap(temp, canvas.getWidth(), canvas.getHeight(), true); 
      canvas.drawBitmap(image, 0, 0, null); 


      temp = BitmapFactory.decodeResource(getResources(), R.drawable.hali); 
      image = Bitmap.createScaledBitmap(temp, canvas.getWidth(), canvas.getHeight(), true); 
      canvas.drawBitmap(image, 0, 0, null); 

      temp = BitmapFactory.decodeResource(getResources(), R.drawable.tablo); 
      image = Bitmap.createScaledBitmap(temp, canvas.getWidth(), canvas.getHeight(), true); 
      canvas.drawBitmap(image, 0, 0, null); 

      temp = BitmapFactory.decodeResource(getResources(), R.drawable.cicek); 
      image = Bitmap.createScaledBitmap(temp, canvas.getWidth(), canvas.getHeight(), true); 
      canvas.drawBitmap(image, 0, 0, null); 


      temp = BitmapFactory.decodeResource(getResources(), R.drawable.mobilya); 
      image = Bitmap.createScaledBitmap(temp, canvas.getWidth(), canvas.getHeight(), true); 
      canvas.drawBitmap(image, 0, 0, null); 

      temp = BitmapFactory.decodeResource(getResources(), R.drawable.sehpa); 
      image = Bitmap.createScaledBitmap(temp, canvas.getWidth(), canvas.getHeight(), true); 
      canvas.drawBitmap(image, 0, 0, null); 

      super.onDraw(canvas); 


     } 

    } 

    public static Bitmap getBitmapFromURL(String src) { 
     try { 
      URL url = new URL(src); 
      HttpURLConnection connection = (HttpURLConnection) url.openConnection(); 
      connection.setDoInput(true); 
      connection.connect(); 
      InputStream input = connection.getInputStream(); 
      Bitmap myBitmap = BitmapFactory.decodeStream(input); 
      return myBitmap; 
     } catch (IOException e) { 
      e.printStackTrace(); 
      return null; 
     } 
    } 
} 

}私はビットマップのURLを回して描画したいと思いますか?

エラー

09-07 05:10:54.913 1888-1888/com.example.dogushur.canvas E/AndroidRuntime: FATAL EXCEPTION: main 
                      Process: com.example.dogushur.canvas, PID: 1888 
                      android.os.NetworkOnMainThreadException 
                       at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1273) 
                       at java.net.InetAddress.lookupHostByName(InetAddress.java:431) 
                       at java.net.InetAddress.getAllByNameImpl(InetAddress.java:252) 
                       at java.net.InetAddress.getAllByName(InetAddress.java:215) 
                       at com.android.okhttp.internal.Network$1.resolveInetAddresses(Network.java:29) 
                       at com.android.okhttp.internal.http.RouteSelector.resetNextInetSocketAddress(RouteSelector.java:188) 
                       at com.android.okhttp.internal.http.RouteSelector.nextProxy(RouteSelector.java:157) 
                       at com.android.okhttp.internal.http.RouteSelector.next(RouteSelector.java:100) 
                       at com.android.okhttp.internal.http.HttpEngine.createNextConnection(HttpEngine.java:357) 
                       at com.android.okhttp.internal.http.HttpEngine.nextConnection(HttpEngine.java:340) 
                       at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:330) 
                       at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:248) 
                       at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:433) 
                       at com.android.okhttp.internal.huc.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:114) 
                       at com.example.dogushur.canvas.MainActivity.getBitmapFromURL(MainActivity.java:106) 
                       at com.example.dogushur.canvas.MainActivity$Ciz.onDraw(MainActivity.java:60) 
                       at android.view.View.draw(View.java:16178) 
                       at android.view.View.updateDisplayListIfDirty(View.java:15174) 
                       at android.view.View.draw(View.java:15948) 
                       at android.view.ViewGroup.drawChild(ViewGroup.java:3609) 
                       at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3399) 
                       at android.view.View.updateDisplayListIfDirty(View.java:15169) 
                       at android.view.View.draw(View.java:15948) 
                       at android.view.ViewGroup.drawChild(ViewGroup.java:3609) 
                       at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3399) 
                       at android.view.View.updateDisplayListIfDirty(View.java:15169) 
                       at android.view.View.draw(View.java:15948) 
                       at android.view.ViewGroup.drawChild(ViewGroup.java:3609) 
                       at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3399) 
                       at android.view.View.updateDisplayListIfDirty(View.java:15169) 
                       at android.view.View.draw(View.java:15948) 
                       at android.view.ViewGroup.drawChild(ViewGroup.java:3609) 
                       at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3399) 
                       at android.view.View.updateDisplayListIfDirty(View.java:15169) 
                       at android.view.View.draw(View.java:15948) 
                       at android.view.ViewGroup.drawChild(ViewGroup.java:3609) 
                       at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3399) 
                       at android.view.View.updateDisplayListIfDirty(View.java:15169) 
                       at android.view.View.draw(View.java:15948) 
                       at android.view.ViewGroup.drawChild(ViewGroup.java:3609) 
                       at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3399) 
                       at android.view.View.updateDisplayListIfDirty(View.java:15169) 
                       at android.view.View.draw(View.java:15948) 
                       at android.view.ViewGroup.drawChild(ViewGroup.java:3609) 
                       at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3399) 
                       at android.view.View.draw(View.java:16181) 
                       at com.android.internal.policy.PhoneWindow$DecorView.draw(PhoneWindow.java:2690) 
                       at android.view.View.updateDisplayListIfDirty(View.java:15174) 
                       at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:281) 
                       at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:287) 
                       at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:322) 
                       at android.view.ViewRootImpl.draw(ViewRootImpl.java:2615) 
                       at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2434) 
                       at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2067) 
                       at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1107) 
                       at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6013) 
                       at android.view.Choreographer$CallbackRecord.run(Choreographer.java:858) 
                       at android.view.Choreographer.doCallbacks(Choreographer.java:670) 
                       at android.view.Choreographer.doFrame(Choreographer.java:606) 
                      at android.view.Choreographer$FrameDis 
09-07 05:15:55.288 1888-1888/com.example.dogushur.canvas I/Process: Sending signal. PID: 1888 SIG: 9 
+0

StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); StrictMode.setThreadPolicy(policy); 

ものの、inpropperlyそれをやってすると、このような何かにつながりますURL? Picassoのようなイメージライブラリを使わないのはなぜですか? –

+2

[どうやってandroid.os.NetworkOnMainThreadExceptionを修正する?](http://stackoverflow.com/questions/6343166/how-to-fix-android-os-networkonmainthreadexception) –

+0

'x = getBitmapFromURL(url);を入れてください。 'スレッドまたはasynctaskの下で実行し、結果をurlから取得した後で残りの処理を行います。あなたの問題を解決することを願っています。 –

答えて

0

あなたはメインスレッドでネットワークのものを行うことはできません。あなたは、非同期操作を作成する必要があります。

class Check extends AsyncTask<String, Integer, Bitmap b> { 

    @Override 
    protected Bitmap doInBackground(String... src) { 
     URL url = new URL(src); 
     HttpURLConnection connection = (HttpURLConnection) url.openConnection(); 
     connection.setDoInput(true); 
     connection.connect(); 
     InputStream input = connection.getInputStream(); 
     Bitmap myBitmap = BitmapFactory.decodeStream(input); 
     setBitmap(myBitmap);//for access in main class 
     return myBitmap; 
     //do connections 
    } 
} 

を、コードを呼び出すために:

new Check().execute("https://example.com"); 

あなたはStrictModeを無効にすることができますが、それは非常に悪い考えです。それは理由のために最初に有効にされます。

次のようにそれを行うあなたは、StrictModeを無効にすることを決定した場合:あなたがから画像を表示したいAndroid freeze screen 20 seconds after execute a HTTP Post

+0

もっと詳しく説明できます –

+0

Androidには「StrictMode」と呼ばれるものがあります。これにより、アプリがメインスレッド上のインターネットに接続できなくなります。したがって、非同期操作でインターネットに接続することは可能です。非常に悪い考えですが、StrictModeを無視することはできます。 – Zoe

関連する問題