안드로이드 개발 정보
(글 수 1,067)
질답에 세번 질문을 하면서..동시에 구글링과 야후 검색을 며칠동안 한 결과..
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
저도 구글링 하다 봤는데 원본 링크는 여기군요. 자세한 설명 감사드려요