안드로이드 개발 정보
(글 수 1,069)
질답에 세번 질문을 하면서..동시에 구글링과 야후 검색을 며칠동안 한 결과..
Dialog 를 상속 받아서 customizing 해야 한다는 결론을 얻었습니다.
외국의 어느 커뮤니티에 누군가 남긴 상속 받아 재정의한 코드를 얻었구요.
가져올 때 링크를 기록하지 않았더니...다시 찾아보려고 노력해도...
찾을 수가 없네요.
여기에 감사의 글과 함께..링크를 올리고 싶었지만...다시 못찾은 관계로...패스~
감사의 마음만...가득합니다.
우선.. 상속 받은 코드는 질답게시판에 댓글로도 올렸지만.
정리하는 차원에서 여기 다시 올립니다.
아래는 Dialog 를 상속 받은 클래스입니다.
위의 코드에서 참조하는 NewDialog 의 스타일은 다음과 같습니다. res/values/styles.xml 을 생성 시키고
아래의 코드를 넣습니다.
Dialog 를 이용하기 때문에.. 그리고.. WebView 에서 PageFinished 이벤트가 있기 때문에,
쓰레드를 사용할 필요가 없다는 것을 알게 되었습니다.
많은 상용 앱에서 wheel 만 돌아가는 로딩 이미지를 사용하는데, 이것을 구현하기 위한 코드는 찾기 힘들었습니다.
다행히도 잘 찾아서..잘 사용하게 되었습니다.
이것 또한 누군가에게...도움이 되기를 기원합니다. 휴~~~
Dialog 를 상속 받아서 customizing 해야 한다는 결론을 얻었습니다.
외국의 어느 커뮤니티에 누군가 남긴 상속 받아 재정의한 코드를 얻었구요.
가져올 때 링크를 기록하지 않았더니...다시 찾아보려고 노력해도...
찾을 수가 없네요.
여기에 감사의 글과 함께..링크를 올리고 싶었지만...다시 못찾은 관계로...패스~
감사의 마음만...가득합니다.
우선.. 상속 받은 코드는 질답게시판에 댓글로도 올렸지만.
정리하는 차원에서 여기 다시 올립니다.
아래는 Dialog 를 상속 받은 클래스입니다.
class MyProgressDialog extends Dialog {
public static MyProgressDialog show(Context context, CharSequence title,
CharSequence message) {
return show(context, title, message, false);
}
public static MyProgressDialog show(Context context, CharSequence title,
CharSequence message, boolean indeterminate) {
return show(context, title, message, indeterminate, false, null);
}
public static MyProgressDialog show(Context context, CharSequence title,
CharSequence message, boolean indeterminate, boolean cancelable) {
return show(context, title, message, indeterminate, cancelable, null);
}
public static MyProgressDialog show(Context context, CharSequence title,
CharSequence message, boolean indeterminate,
boolean cancelable, OnCancelListener cancelListener) {
MyProgressDialog dialog = new MyProgressDialog(context);
dialog.setTitle(title);
dialog.setCancelable(cancelable);
dialog.setOnCancelListener(cancelListener);
/* The next line will add the ProgressBar to the dialog. */
dialog.addContentView(new ProgressBar(context), new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
dialog.show();
return dialog;
}
public MyProgressDialog(Context context) {
super(context, R.style.NewDialog);
}
}위의 코드에서 참조하는 NewDialog 의 스타일은 다음과 같습니다. res/values/styles.xml 을 생성 시키고
아래의 코드를 넣습니다.
<resources>
<style name="NewDialog">
<item name="android:windowFrame">@null</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowTitleStyle">@null</item>
<item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>
<item name="android:windowSoftInputMode">stateUnspecified|adjustPan</item>
<item name="android:backgroundDimEnabled">false</item>
<item name="android:background">@android:color/transparent</item>
</style>
</resources>Dialog 를 이용하기 때문에.. 그리고.. WebView 에서 PageFinished 이벤트가 있기 때문에,
쓰레드를 사용할 필요가 없다는 것을 알게 되었습니다.
package pkg.WebViewTest;
import android.app.Activity; import android.app.Dialog; import android.content.Context; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.util.Log; import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup.LayoutParams; import android.webkit.WebView; import android.webkit.WebViewClient; import android.widget.Button; import android.widget.ProgressBar; import android.widget.TextView;
public class WebViewTest extends Activity {
/** Called when the activity is first created. */
public MyProgressDialog progressDialog;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
wvc = (WebView)findViewById(R.id.WebView01);
wvc.getSettings().setJavaScriptEnabled(true);
wvc.loadUrl("http://m.naver.com");
progressDialog = MyProgressDialog.show(this,"","",true,true,null);
wvc.setWebViewClient(new WebViewClient()
{
@Override
public void onPageFinished(WebView view, String url)
{
wvc.setVisibility(View.VISIBLE);
if (progressDialog!=null)
progressDialog.dismiss();
}
});
}
}
많은 상용 앱에서 wheel 만 돌아가는 로딩 이미지를 사용하는데, 이것을 구현하기 위한 코드는 찾기 힘들었습니다.
다행히도 잘 찾아서..잘 사용하게 되었습니다.
이것 또한 누군가에게...도움이 되기를 기원합니다. 휴~~~
2010.09.09 17:00:10
우와.. 저도 웹뷰에 대해 알아보고 있는데,
프레그레스바에 대한 스레드랑 이것저것 하는데..
크게 도움이 되었습니다!!!
저도 감사한.. 마음을 가득담아..
써보고... 좀더 분석해보겠습니다.
2011.02.17 16:35:08
좋은 정보 감사합니다
혹시나 다들 아시겠지만 굳이 확장을 안해도 가능은 합니다
Dialog mDialog = new Dialog(this, R.style.NewDialog);
mDialog.addContentView(
new ProgressBar(this),
new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
mDialog.show();
키포인트는 스타일인거죠..;;
좋은점 배우고 갑니다
2011.04.08 17:12:09
http://stackoverflow.com/questions/3225889/how-to-center-progress-indicator-in-progressdialog-easily-when-no-title-text-pas
저도 구글링 하다 봤는데 원본 링크는 여기군요. 자세한 설명 감사드려요



