2017-04-12 18 views
0

リモートサーバーから画像を動的にダウンロードしようとしています(画像が動的に表示されません)。すべての画像をダウンロードするには、30〜40秒かかります。これは、ユーザーがアクティビティを見るのを待つ時間を意味します。しかし、すべてのイメージを読み込んだ後にアクティビティをロードするのは最悪のケースです。私は最初にアクティビティをロードしてからイメージを1つずつロードしたいと思います。あなたが非同期的にHTMLを解析する必要が最初に読み込みアクティビティを実行すると画像が1つずつ読み込まれる

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) 
{ 
    readBundle(getArguments()); 

    v = inflater.inflate(R.layout.fragment_fragment1, container, false); 


    naslovglavni = (TextView) v.findViewById(R.id.naslovglavni); 

    glavnaSlika = (ImageView) v.findViewById(R.id.glavnaSlika); 


    prednaslov = (TextView) v.findViewById(R.id.prednaslov); 
    naslov1 = (TextView) v.findViewById(R.id.naslov1); 
    podnaslov =(TextView) v.findViewById(R.id.podnaslov); 

     Ion.with(getActivity().getApplicationContext()) 

       .load(rezultat1) 

       .asString() 

       .setCallback(new FutureCallback<String>() 
       { 
        @Override 
        public void onCompleted(Exception e, String result) 
        { 
         ArrayList<String> h2=new ArrayList<String>(); 
         ArrayList<String> pocetakVesti=new ArrayList<String>(); 
         ArrayList<String> slikeZaVesti=new ArrayList<String>(); 

         String htmlString=result; 

         int startPosition1 = 0; 
         int endPosition1 = 0; 

         startPosition1=htmlString.indexOf("<h2 class=\"article-title\"")+"<h2 class=\"article-title\"".length()+1; 
         endPosition1=startPosition1; 

         while(htmlString.substring(startPosition1,endPosition1).indexOf("</h2>")<0){ 
          endPosition1++; 
         } 
         endPosition1=endPosition1-"</h2>".length(); 


         String naslovG = htmlString.substring(startPosition1,endPosition1); 

         String naslovGG=""; 
         for(int k=0;k<naslovG.length();k++){ 
          if(k+2<naslovG.length() && naslovG.substring(k,k+1).equals(" ") && naslovG.substring(k+1,k+2).equals(" ")) { 
           //todo 
          } 
          else { 
           naslovGG+=naslovG.substring(k,k+1); 
          } 

         } 

         naslovG=naslovGG; 
         naslovG=naslovG.trim(); 

         naslovG=naslovG.replace("<br /> ",""); 

         naslovglavni.setText(naslovG); 

         htmlString=htmlString.substring(endPosition1+"</h2>".length()); 

         //slika prva 

         String slikaPrva=""; 

         int startPosition2=htmlString.indexOf("<div class=\"article-photo\">"); 
         int endPosition2=startPosition2; 

         while(htmlString.substring(startPosition2,endPosition2).indexOf("</div>")<0){ 
          endPosition2++; 
         } 

         slikaPrva=htmlString.substring(startPosition2,endPosition2); 

         htmlString=htmlString.substring(endPosition2+"</div>".length()); 

         startPosition2=slikaPrva.indexOf("<img src=")+"<img src=".length()+1; 
         endPosition2=startPosition2; 

         while(endPosition2<slikaPrva.length() && slikaPrva.substring(startPosition2,endPosition2).indexOf(".jpg")<0 && slikaPrva.substring(startPosition2,endPosition2).indexOf(".jpeg")<0 && slikaPrva.substring(startPosition2,endPosition2).indexOf(".png")<0) { 
          endPosition2++; 
         } 


         if(endPosition2<slikaPrva.length()-1) { 
          slikaPrva = slikaPrva.substring(startPosition2, endPosition2); 
          Picasso.with(getActivity()).load(slikaPrva) 
            .into(glavnaSlika); 
         } else 
          Picasso.with(getActivity()).load("http://www.magazinauto.com/wp-content/uploads/2015/05/Auto-magazin_logotip-original.jpg") 
            .into(glavnaSlika); 

         //pre naslov 

         int startPosition3=htmlString.indexOf("<div class=\"calendar-time\">")+"<div class=\"calendar-time\">".length(); 
         int endPosition3=startPosition3; 

         while(htmlString.substring(startPosition3,endPosition3).indexOf("</div>")<0){ 
          endPosition3++; 
         } 
         String preNaslov= htmlString.substring(startPosition3,endPosition3-"</div>".length()); 
         prednaslov.setText(preNaslov); 

         preNaslov=preNaslov.replace("<br />",""); 
         preNaslov=preNaslov.replace("&quot;","\""); 
         preNaslov=preNaslov.replace("&#8230;","..."); 
         preNaslov=preNaslov.replace("&#038;","&"); 
         preNaslov=preNaslov.replace("&#8220;","“"); 
         preNaslov=preNaslov.replace("&#8221;","”"); 
         preNaslov=preNaslov.replace("&#8211;","–"); 
         preNaslov=preNaslov.replace("&#8217;","'"); 

         htmlString=htmlString.substring(endPosition3+"</div>".length()); 

         //naslov 

         int startPosition4=htmlString.indexOf("<div class=\"druginaslov\">"); 
         int endPosition4=startPosition4; 

         while(htmlString.substring(startPosition4,endPosition4).indexOf("</div>")<0){ 
          endPosition4++; 
         } 

         String drugiNaslov=htmlString.substring(startPosition4+"<div class=\"druginaslov\">".length(),endPosition4-"</div>".length()); 

         drugiNaslov=drugiNaslov.replace("<br /> ",""); 

         drugiNaslov=drugiNaslov.replace("<br />",""); 
         drugiNaslov=drugiNaslov.replace("&quot;","\""); 
         drugiNaslov=drugiNaslov.replace("&#8230;","..."); 
         drugiNaslov=drugiNaslov.replace("&#038;","&"); 
         drugiNaslov=drugiNaslov.replace("&#8220;","“"); 
         drugiNaslov=drugiNaslov.replace("&#8221;","”"); 
         drugiNaslov=drugiNaslov.replace("&#8211;","–"); 
         drugiNaslov=drugiNaslov.replace("&#8217;","'"); 

         naslov1.setText(drugiNaslov); 

         htmlString=htmlString.substring(endPosition4+"</div>".length()); 

         //podnaslov 

         int startPosition5=htmlString.indexOf("<p class=\"uvod\">"); 
         int endPosition5=startPosition5; 

         while(htmlString.substring(startPosition5,endPosition5).indexOf("</p>")<0){ 
          endPosition5++; 
         } 

         String podnaslovtext=htmlString.substring(startPosition5+"<p class=\"uvod\">".length(),endPosition5-"</p>".length()); 


         podnaslovtext=podnaslovtext.replace("<br />",""); 
         podnaslovtext=podnaslovtext.replace("&quot;","\""); 
         podnaslovtext=podnaslovtext.replace("&#8230;","..."); 
         podnaslovtext=podnaslovtext.replace("&#038;","&"); 
         podnaslovtext=podnaslovtext.replace("&#8220;","“"); 
         podnaslovtext=podnaslovtext.replace("&#8221;","”"); 
         podnaslovtext=podnaslovtext.replace("&#8211;","–"); 
         podnaslovtext=podnaslovtext.replace("&#8217;","'"); 

         podnaslov.setText(podnaslovtext); 

         htmlString=htmlString.substring(endPosition5+"</p>".length()); 

         String htmlStringSlike=htmlString; 
         String htmlStringTekst=htmlString; 
         String htmlStringTekstKodSlika=htmlString; 

         int startPosSlikaKodTeksta=htmlStringTekstKodSlika.indexOf("<div class=\"shortcode-content\">"); 
         int endPosSlikaKodTeksta=startPosSlikaKodTeksta+"<div class=\"shortcode-content\">".length(); 

         while(htmlStringTekstKodSlika.substring(startPosSlikaKodTeksta,endPosSlikaKodTeksta).indexOf("<!-- END .shortcode-content -->")<0){ 
          endPosSlikaKodTeksta++; 
         } 
         htmlStringTekstKodSlika=htmlStringTekstKodSlika.substring(startPosSlikaKodTeksta,endPosSlikaKodTeksta); 

         while(htmlStringTekstKodSlika.length()>0){ 

          startPosSlikaKodTeksta=htmlStringTekstKodSlika.indexOf("<p class=\"wp-caption-text\">"); 
          if(startPosSlikaKodTeksta>0){ 
           String pasusUTekstuKodSlike=null; 

           startPosSlikaKodTeksta+="<p class=\"wp-caption-text\">".length(); 
           endPosSlikaKodTeksta=startPosSlikaKodTeksta; 

           while(htmlStringTekstKodSlika.substring(startPosSlikaKodTeksta,endPosSlikaKodTeksta).indexOf("</p>")<0){ 
            endPosSlikaKodTeksta++; 
           } 

           pasusUTekstuKodSlike = htmlStringTekstKodSlika.substring(startPosSlikaKodTeksta, endPosSlikaKodTeksta); //e sad ja... 

           htmlStringTekstKodSlika=htmlStringTekstKodSlika.substring(endPosSlikaKodTeksta); 


           pasusUTekstuKodSlike=pasusUTekstuKodSlike.replace("<strong>",""); 
           pasusUTekstuKodSlike=pasusUTekstuKodSlike.replace("</strong>",""); 

           int poc=pasusUTekstuKodSlike.indexOf("<a href="); 
           while(poc>0) { 
            int kraj = poc; 
            while (pasusUTekstuKodSlike.substring(poc, kraj).indexOf(">") < 0) { 
             kraj++; 
            } 
            String link = pasusUTekstuKodSlike.substring(poc, kraj); 
            pasusUTekstuKodSlike = pasusUTekstuKodSlike.replace(link, ""); 

            poc = pasusUTekstuKodSlike.indexOf("<a href="); 
           } 

           pasusUTekstuKodSlike=pasusUTekstuKodSlike.replace("&#8220;","\""); 
           pasusUTekstuKodSlike=pasusUTekstuKodSlike.replace("&#8221;","\""); 
           pasusUTekstuKodSlike=pasusUTekstuKodSlike.replace("</p>",""); 
           pasusUTekstuKodSlike=pasusUTekstuKodSlike.replace("</a>",""); 
           pasusUTekstuKodSlike=pasusUTekstuKodSlike.replace("<br />",""); 

           listaTekstaKodSlika.add(pasusUTekstuKodSlike); 

          } 
          else break; 

         } 

         int startPositionTekst=htmlStringTekst.indexOf("<div class=\"shortcode-content\">"); 
         int endPositionTekst=startPositionTekst+"<div class=\"shortcode-content\">".length(); 

         while(htmlStringTekst.substring(startPositionTekst,endPositionTekst).indexOf("<!-- END .shortcode-content -->")<0){ 
          endPositionTekst++; 
         } 

         htmlStringTekst=htmlStringTekst.substring(startPositionTekst,endPositionTekst); 

         while(htmlStringTekst.length()>0){ 


          startPositionTekst=htmlStringTekst.indexOf("<p>"); 
          if(startPositionTekst>0){ 
           String pasusUTekstu=null; 

           startPositionTekst+="<p>".length(); 
           endPositionTekst=startPositionTekst; 

           while(htmlStringTekst.substring(startPositionTekst,endPositionTekst).indexOf("</p>")<0){ 
            endPositionTekst++; 
           } 

           pasusUTekstu = htmlStringTekst.substring(startPositionTekst, endPositionTekst); //e sad ja... 

           htmlStringTekst=htmlStringTekst.substring(endPositionTekst); 


           pasusUTekstu=pasusUTekstu.replace("<strong>",""); 
           pasusUTekstu=pasusUTekstu.replace("</strong>",""); 

           int poc=pasusUTekstu.indexOf("<a href="); 
           while(poc>0) { 
            int kraj = poc; 
            while (pasusUTekstu.substring(poc, kraj).indexOf(">") < 0) { 
             kraj++; 
            } 
            String link = pasusUTekstu.substring(poc, kraj); 
            pasusUTekstu = pasusUTekstu.replace(link, ""); 

            poc = pasusUTekstu.indexOf("<a href="); 
           } 

           pasusUTekstu=pasusUTekstu.replace("&#8220;","\""); 
           pasusUTekstu=pasusUTekstu.replace("&#8221;","\""); 
           pasusUTekstu=pasusUTekstu.replace("</p>",""); 
           pasusUTekstu=pasusUTekstu.replace("</a>",""); 
           pasusUTekstu=pasusUTekstu.replace("<br />",""); 

           if(pasusUTekstu.indexOf("img")<0) listaTeksta.add(pasusUTekstu); 

          } 
          else break; 

         } 

         int startPositionSlika=htmlStringSlike.indexOf("<div class=\"shortcode-content\">"); 
         int endPositionSlika=startPositionSlika+"<div class=\"shortcode-content\">".length(); 

         while (htmlStringSlike.substring(startPositionSlika, endPositionSlika).indexOf("<!-- END .shortcode-content -->") < 0) { 
          endPositionSlika++; 
         } 
         htmlStringSlike=htmlStringSlike.substring(startPositionSlika,endPositionSlika); 

         while(htmlStringSlike.length()>0){ 

          startPositionSlika = htmlStringSlike.indexOf("src="); 
          if(startPositionSlika>0) { 

           String slikaUTekstu=null; 
           startPositionSlika+= "src=".length() + 1; 

           endPositionSlika = startPositionSlika; 

           while (htmlStringSlike.substring(startPositionSlika, endPositionSlika).indexOf(".jpg") < 0 && htmlStringSlike.substring(startPositionSlika, endPositionSlika).indexOf(".jpeg") < 0 && htmlStringSlike.substring(startPositionSlika, endPositionSlika).indexOf(".png") < 0) { 
            endPositionSlika++; 
           } 

           slikaUTekstu = htmlStringSlike.substring(startPositionSlika, endPositionSlika); 

           htmlStringSlike=htmlStringSlike.substring(endPositionSlika); 

           listaSlika.add(slikaUTekstu); 

          } 
          else break; 

         } 

         for(int i=0;i<listaSlika.size() ;i++) { 

          if(i<listaTeksta.size()) { 
           textTv[i] = (TextView) v.findViewById(nizTekstaID[i]); 
           textTv[i].setText(listaTeksta.get(i)); 
          } 

          slikaTv[i] = (ImageView) v.findViewById(nizSlikaID[i]); 

          Picasso.with(getActivity()).load(listaSlika.get(i)); // programski slika u dodati layout 


          v.findViewById(mLayoutIdArray[i]).setVisibility(View.VISIBLE); 

         } 



        } 

    }); 

    LinearLayout layouttekstglavnevesti1 = (LinearLayout) v.findViewById(R.id.layouttekstglavnevesti1); 

    layouttekstglavnevesti1.setVisibility(View.VISIBLE); 
    // layouttekstglavnevesti1.setBackgroundColor(Color.BLACK); 
    // layouttekstglavnevesti1.getBackground().setAlpha(120); 

    return v; 

} 
+0

私が質問を理解した場合、画像は読み込まれません。 'Picasa.with(getActivity())。load(listaSlika.get(i))。into(slikaTv [i])' –

+0

いいえ、ロードしています。アクティビティが作成されると、すべての画像が読み込まれるまでフリーズします。イメージを1つずつロードするよりも、アクティビティを開始したいのですか? – smiljka

+0

アクティビティのライフサイクルで、ロードサイクルをどこから呼び出すのですか? –

答えて

0

は、ここに私のコードです。今あなたはUIスレッドを呼び出したコールバックを解析しています。

ワイファイネットワークでアプリをテストすると思うので、画像が非常に高速に読み込まれます。

+0

asyncTaskではないスレッドのHTMLを解析する方法はありますか? – smiljka

+0

たとえば、SingleThreadPoolを使用するか、rxjavaを使用します。または単にjavaスレッドを使用する –

関連する問題