/ / Lade Progress Bar android - Android, Fortschrittsbalken, Entwicklungsumgebung

Lade Progress Bar android - Android, Fortschrittsbalken, Entwicklungsumgebung

* Ich habe eine Klasse, die einige Dateien lädt und aktualisiertdie UI ... Es dauert einige Zeit, um das Ergebnis zu sehen, ... Also ich möchte eine Ladeleiste oder Fortschrittsbalken hinzufügen. Einige Daten wurden von anderen Aktivitäten übergeben (Bundle extras1 = getIntent (). GetExtras ();). Aber ich lade ein Bild pro Stück herunter ... Ich denke, das braucht mehr Zeit. Kann mir irgendjemand helfen?

Das ist mein Code:

public class ShowSelectedEvents extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.viewdetailsevents);
Bundle extras1 = getIntent().getExtras();
String eventTitle = extras1.getString("eventTitle");
final String address = extras1.getString("address");
String date = extras1.getString("date");
String time = extras1.getString("time");
final String fix = extras1.getString("fix");
final String mobile = extras1.getString("mobile");
final String web = extras1.getString("web");
final String mail = extras1.getString("mail");
String imageLink = extras1.getString("imageLink");
final String videoLink = extras1.getString("videoLink");
// Add item image
Bitmap bitMap = null;
try {
bitMap = DownloadImage("imageLink);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
ImageView imageItem = (ImageView) findViewById(R.id.imageItem);
imageItem.setImageBitmap(bitMap);
TextView viewTitle = (TextView) findViewById(R.id.viewTitle);
viewTitle.setText(eventTitle);
TextView viewDateTime = (TextView) findViewById(R.id.dateTime);
viewDateTime.setText("Event is on "+date +" @ "+ time);
// View Address
TextView viewAdd = (TextView) findViewById(R.id.viewAddress);
viewAdd.setTypeface(Typeface.defaultFromStyle(Typeface.ITALIC),Typeface.ITALIC);
viewAdd.setText(address);
// On click open Navigation
if (!(address.equals("-"))){
ImageView navigationIcon = (ImageView) findViewById(R.id.imageMapNavigation);
navigationIcon.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
String url = "google.navigation:q="+address;
Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
startActivity(i);
}
});
}else{
Context context = getApplicationContext();
CharSequence text = "Address is incomplete!";
int duration = Toast.LENGTH_SHORT;
Toast toast = Toast.makeText(context, text, duration);
toast.show();
}
// View Phone number
TextView viewPhoneNumber = (TextView) findViewById(R.id.viewPhoneNumber);
viewPhoneNumber.setTypeface(Typeface.defaultFromStyle(Typeface.ITALIC),Typeface.ITALIC);
viewPhoneNumber.setText(fix);
// On click open call
if (!(fix.equals("-"))){
viewPhoneNumber.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
String url = "tel:"+fix;
Intent i = new Intent(Intent.ACTION_CALL, Uri.parse(url));
startActivity(i);
}
});
}
//View Mobile number
TextView viewMobileNumber = (TextView) findViewById(R.id.viewMobileNumber);
viewMobileNumber.setTypeface(Typeface.defaultFromStyle(Typeface.ITALIC),Typeface.ITALIC);
viewMobileNumber.setText(mobile);
// on click call mobile number
if (!(mobile.equals("-"))){
viewMobileNumber.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
String url = "tel:"+mobile;
Intent i = new Intent(Intent.ACTION_CALL, Uri.parse(url));
startActivity(i);
}
});
}
//View web url
TextView viewWeb = (TextView) findViewById(R.id.viewWeb);
viewWeb.setTypeface(Typeface.defaultFromStyle(Typeface.ITALIC),Typeface.ITALIC);
viewWeb.setText(web);
//on click open web browser
if (!(web.equals("-"))){
viewWeb.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(web));
startActivity(i);
}
});
}
TextView viewMail = (TextView) findViewById(R.id.viewMailAddress);
viewMail.setTypeface(Typeface.defaultFromStyle(Typeface.ITALIC),Typeface.ITALIC);
viewMail.setText(mail);
if(!(mail.equals("-"))){
viewMail.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);
emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, new String[] {mail});
emailIntent.putExtra(Intent.EXTRA_SUBJECT, "Contact from tamilpage.ch");
emailIntent.setType("text/plain");
startActivity(Intent.createChooser(emailIntent, "Send a mail ..."));
}
});
}
// On click play the video
if (!(address.equals("-"))){
ImageView videoIcon = (ImageView) findViewById(R.id.videoButton);
videoIcon.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent browserIntent = new Intent(Intent.ACTION_VIEW,
Uri.parse(videoLink));
startActivity(browserIntent);
}
});
}else{
Context context = getApplicationContext();
CharSequence text = "No advert video for this event";
int duration = Toast.LENGTH_SHORT;
Toast toast = Toast.makeText(context, text, duration);
toast.show();
}
}
private Bitmap DownloadImage(String url) throws Exception {
Bitmap bitmap = null;
InputStream in = null;
try {
in = OpenHttpConnection(url);
bitmap = BitmapFactory.decodeStream(in);
in.close();
} catch (IOException e1) {
e1.printStackTrace();
}
return bitmap;
}
private InputStream OpenHttpConnection(String url) throws Exception {
InputStream in = null;
int response = -1;
System.out.println("Nishi1");
URL url1 = new URL(url);
URLConnection conn = url1.openConnection();
if (!(conn instanceof HttpURLConnection))
throw new IOException("Not an HTTP connection");
try{
HttpURLConnection httpConn = (HttpURLConnection) conn;
httpConn.setAllowUserInteraction(false);
httpConn.setInstanceFollowRedirects(true);
httpConn.setRequestMethod("GET");
httpConn.connect();
response = httpConn.getResponseCode();
if (response == HttpURLConnection.HTTP_OK) {
in = httpConn.getInputStream();
System.out.println(in);
}
}
catch (Exception ex)
{
throw new IOException("Error connecting");
}
return in;
}

}

Antworten:

1 für die Antwort № 1

Deshalb möchte ich eine Ladeleiste oder Fortschrittsleiste hinzufügen

Für Ihren Ansatz müssen Sie verwenden Threads. Besonders empfehle ich Ihnen, sich anzuschauen

Beide Ansätze bieten Arbeit mit Threads. AsyncTask ist komplexer als Handler und auch generischer Typ, so dass mehr typsicheres und schnelleres Arbeiten möglich ist.

Sie sollten einige Tutorials so lesen

Und es gibt ein sehr tolles und nützliches Tutorial bei Vogella


0 für die Antwort № 2

Ich würde mit ansehen AsyncTask. Hier ist ein Link, der Ihnen den Einstieg erleichtern soll: http://developer.android.com/reference/android/os/AsyncTask.html


0 für die Antwort № 3

Die Art, wie du das machen willst, ist in direine ASyncTask, die Callbacks zum Aktualisieren einer Fortschrittsanzeige hat. Ich habe unten ein Beispiel eingefügt, das nichts wirklich tut. Sie würden Ihren Code für den Aufruf des Downloads in doInBackground () eingeben und den Fortschritt von onProgressUpdate aktualisieren.

public class BackgroundAsyncTask extends
AsyncTask<Void, Integer, Void> {

int myProgress;

@Override
protected void onPostExecute(Void result) {
// TODO Auto-generated method stub
Toast.makeText(AndroidAsyncTaskProgressBar.this,
"onPostExecute", Toast.LENGTH_LONG).show();
}

@Override
protected void onPreExecute() {
// TODO Auto-generated method stub
Toast.makeText(AndroidAsyncTaskProgressBar.this,
"onPreExecute", Toast.LENGTH_LONG).show();
myProgress = 0;
}

@Override
protected Void doInBackground(Void... params) {
// TODO Auto-generated method stub
while(myProgress<100){
myProgress++;
publishProgress(myProgress);
SystemClock.sleep(100);
}
return null;
}

@Override
protected void onProgressUpdate(Integer... values) {
// TODO Auto-generated method stub
progressBar.setProgress(values[0]);
}

}