我試圖動態地從遠程服務器下載圖像(動態地來沒有圖像)。爲了下載所有需要30到40秒的圖像,平均時間用戶必須等待才能看到活動。但加載所有圖像後加載活動是最糟糕的情況。我想先加載活動,然後逐個加載圖像。如何先加載活動,然後逐個加載圖像
這裏是我的代碼:
@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(""","\"");
preNaslov=preNaslov.replace("…","...");
preNaslov=preNaslov.replace("&","&");
preNaslov=preNaslov.replace("“","「");
preNaslov=preNaslov.replace("”","」");
preNaslov=preNaslov.replace("–","–");
preNaslov=preNaslov.replace("’","'");
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(""","\"");
drugiNaslov=drugiNaslov.replace("…","...");
drugiNaslov=drugiNaslov.replace("&","&");
drugiNaslov=drugiNaslov.replace("“","「");
drugiNaslov=drugiNaslov.replace("”","」");
drugiNaslov=drugiNaslov.replace("–","–");
drugiNaslov=drugiNaslov.replace("’","'");
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(""","\"");
podnaslovtext=podnaslovtext.replace("…","...");
podnaslovtext=podnaslovtext.replace("&","&");
podnaslovtext=podnaslovtext.replace("“","「");
podnaslovtext=podnaslovtext.replace("”","」");
podnaslovtext=podnaslovtext.replace("–","–");
podnaslovtext=podnaslovtext.replace("’","'");
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("“","\"");
pasusUTekstuKodSlike=pasusUTekstuKodSlike.replace("”","\"");
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("“","\"");
pasusUTekstu=pasusUTekstu.replace("”","\"");
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;
}
如果我理解了這個問題,圖像不會加載。嘗試'Picasso.with(getActivity()).load(listaSlika.get(i))。(slikaTv [i])' –
不,他們正在加載。但是當活動創建時凍結,直到所有圖片加載。我想要開始的活動,比逐個加載圖片 – smiljka
您在活動的生命週期中何處調用加載循環? –