안드로이드 개발 질문/답변
(글 수 40,700)
초기메인화면에서 다음리스트화면으로 넘어가는 중간에 progressbar를 이용하여서
사이를 표시하고자하는데요 ;ㅁ;
잘 안되네요 - 여기저기 예제를 봐서 사용해봤는데 .. 오히려 더 느려져서 ㅜㅜ 이렇게
질문드립니다 'ㅡ';
어떻게 사용해야 할까요 ;ㅁ;
예제)
저기 run안에 뭔갈해야하는것 같기는한데 .. ㅜㅜ 잘모르겠습니당'';
사이를 표시하고자하는데요 ;ㅁ;
잘 안되네요 - 여기저기 예제를 봐서 사용해봤는데 .. 오히려 더 느려져서 ㅜㅜ 이렇게
질문드립니다 'ㅡ';
어떻게 사용해야 할까요 ;ㅁ;
예제)
package org.anddev.android.testproject;
import android.app.Activity;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class TestLayout extends Activity {
ProgressDialog myProgressDialog = null;
@Override
public void onCreate(Bundle icicle){
super.onCreate(icicle);
/* Create a very simple button */
Button b = new Button(this);
this.setContentView(b);
b.setText("Show ProgressBar...");
/* Assign the OnClicklistener to it,
* that will fake some work and
* display a progress-bar */
b.setOnClickListener(myProgressBarShower);
}
/** OnClickListener that fakes some work to be done. */
OnClickListener myProgressBarShower = new OnClickListener(){
// @Override
public void onClick(View arg0) {
// Display an indeterminate Progress-Dialog
myProgressDialog = ProgressDialog.show(TestLayout.this,
"Please wait...", "Doing Extreme Calculations...", true);
new Thread() {
public void run() {
try{
// Do some Fake-Work
sleep(5000);
} catch (Exception e) { }
// Dismiss the Dialog
myProgressDialog.dismiss();
}
}.start();
}
};
}
import android.app.Activity;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class TestLayout extends Activity {
ProgressDialog myProgressDialog = null;
@Override
public void onCreate(Bundle icicle){
super.onCreate(icicle);
/* Create a very simple button */
Button b = new Button(this);
this.setContentView(b);
b.setText("Show ProgressBar...");
/* Assign the OnClicklistener to it,
* that will fake some work and
* display a progress-bar */
b.setOnClickListener(myProgressBarShower);
}
/** OnClickListener that fakes some work to be done. */
OnClickListener myProgressBarShower = new OnClickListener(){
// @Override
public void onClick(View arg0) {
// Display an indeterminate Progress-Dialog
myProgressDialog = ProgressDialog.show(TestLayout.this,
"Please wait...", "Doing Extreme Calculations...", true);
new Thread() {
public void run() {
try{
// Do some Fake-Work
sleep(5000);
} catch (Exception e) { }
// Dismiss the Dialog
myProgressDialog.dismiss();
}
}.start();
}
};
}
저기 run안에 뭔갈해야하는것 같기는한데 .. ㅜㅜ 잘모르겠습니당'';
2009.08.18 08:50:45
예전에 해 보았던 예제 인것 같은데 도움이 될련지 모르겠네요
new Thread() {
public void run() {
try{
// Do some Fake-Work
if ((mDoc = readFeeder(mFeeder)) != null) // Feeder로 부터 읽어 오고
parseBlog(mDoc); // 결과가 있으면 Parsing
mProgressDialog.dismiss(); // 결과가 있던 없던 ProgressBar 해제
if (mDoc != null) // 혹시 결과가 있어서 Parsing 한 Document가 있으면
mProgressHandler.post(mUpdateResults); // Handler를 이용한 후행 처리
} catch (Exception e) {
mProgressHandler.post(mNoitfyException);
Log.e("RSS", "Exception : Unknown Exception ");
}
}
---------------------------------------------------------------
final Runnable mUpdateResults = new Runnable() {
public void run() {
mProgressDialog.dismiss();
updateResultsInUi();
}
};
---------------------------------------------------------
private void updateResultsInUi()
{
.
중략.
//가져온 데이타 들을 Title이 되는 TextView 또는 내역이 되는 ListView에 할당
.
.
aaI.notifyDataSetChanged(); // ArrayAdapter에 내용이 변경 되었음을 통지
Toast.makeText(getApplicationContext(),mBlogs+
"개의 Blog들이 있습니다.",
Toast.LENGTH_LONG).show();
Log.e("RSS", "updateResultsInUi Started ");
}
------------------------------------------------------------------------------
이 Activity Class 를 다시 보니
일단 layout(화면)을 가져오고
무조건 thread를 실행 시키면서 (물론 이때는 Progress bar가 보여 지겠죠)
thread가 끝나면 Progress Bar가 없어지고
데이타 (즉 Document)가 있으면
TestView나 ListView에 표시하게 되는
로직으로 되어 있더군요
참조하시길
}.start();
new Thread() {
public void run() {
try{
// Do some Fake-Work
if ((mDoc = readFeeder(mFeeder)) != null) // Feeder로 부터 읽어 오고
parseBlog(mDoc); // 결과가 있으면 Parsing
mProgressDialog.dismiss(); // 결과가 있던 없던 ProgressBar 해제
if (mDoc != null) // 혹시 결과가 있어서 Parsing 한 Document가 있으면
mProgressHandler.post(mUpdateResults); // Handler를 이용한 후행 처리
} catch (Exception e) {
mProgressHandler.post(mNoitfyException);
Log.e("RSS", "Exception : Unknown Exception ");
}
}
---------------------------------------------------------------
final Runnable mUpdateResults = new Runnable() {
public void run() {
mProgressDialog.dismiss();
updateResultsInUi();
}
};
---------------------------------------------------------
private void updateResultsInUi()
{
.
중략.
//가져온 데이타 들을 Title이 되는 TextView 또는 내역이 되는 ListView에 할당
.
.
aaI.notifyDataSetChanged(); // ArrayAdapter에 내용이 변경 되었음을 통지
Toast.makeText(getApplicationContext(),mBlogs+
"개의 Blog들이 있습니다.",
Toast.LENGTH_LONG).show();
Log.e("RSS", "updateResultsInUi Started ");
}
------------------------------------------------------------------------------
이 Activity Class 를 다시 보니
일단 layout(화면)을 가져오고
무조건 thread를 실행 시키면서 (물론 이때는 Progress bar가 보여 지겠죠)
thread가 끝나면 Progress Bar가 없어지고
데이타 (즉 Document)가 있으면
TestView나 ListView에 표시하게 되는
로직으로 되어 있더군요
참조하시길
}.start();