WebView에서 웹 사이트를로드하려고하는데로드가 너무 느려서 흰색 화면이 표시됩니다. 스플래시 화면을 보여주고 백그라운드에서 WebView를로드하려고합니다. 몇 초 후에 시작 화면을 닫고 그때까지 준비해야 할 사이트를 표시하고 싶습니다. 내가 어떻게 해? 감사합니다.어떻게 2 개의 활동을로드 할 수 있습니까?
답변
나는 시작 화면
public class SplashActivity extends Activity {
private boolean isBackButtonPressed;
private static final int SPLASH_DURATION = 2000; // 2 seconds
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setTheme(R.style.SplashTheme);
getWindow().setWindowAnimations(0);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_splash);
Handler handler = new Handler();
// run a thread after 2 seconds to start the home screen
handler.postDelayed(new Runnable() {
@Override
public void run() {
// make sure we close the splash screen so the user won't come
// back when it presses back key
finish();
if (!isBackButtonPressed) {
// start the home screen if the back button wasn't pressed
Intent intent = new Intent(SplashActivity.this, FragmentActivity.class);
startActivity(intent);
finish();
}
}
}, SPLASH_DURATION);
}
@Override
public void onBackPressed() {
super.onBackPressed();
isBackButtonPressed = true;
}
}
대단히 감사합니다! – user2191116
당신은 그것을 위해 다음 코드를 사용하여이 코드를 사용합니다.
public class Splash extends Activity {
/** Called when the activity is first created. */
private boolean mSplashActive = true, mPaused;
private long mSplashTime = 1000;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.splash);
new Thread(){
public void run(){
try {
long ms = 0;
while(mSplashActive && ms < mSplashTime) {
sleep(100);
if(!mPaused) {
ms += 100;
}
}
if(Resources.getResources().isUserRegistered(Splash.this)) {
//user is registered so launch main screen
} else {
//user is not registered launch welcome wizard.
Intent intent = new Intent(Splash.this, WelcomeScreen.class);
Splash.this.startActivity(intent);
}
finish();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}.start();
}
@Override
public void onPause(){
super.onPause();
mPaused = true;
}
@Override
public void onResume(){
super.onResume();
mPaused = false;
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
super.onKeyDown(keyCode, event);
if(keyCode == KeyEvent.KEYCODE_DPAD_CENTER) {
mSplashActive = false;
}
return true;
}
}
대단히 감사합니다! – user2191116
webview 클래스에서 이와 같이 설정할 수 있습니다. 당신을 위해
내가 설정이 :
public class WebViewActivity extends Activity {
WebView webView;
ProgressDialog progressDialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_web_view);
progressDialog = new ProgressDialog(WebViewActivity.this);
progressDialog.setTitle("here your title");
progressDialog.setMessage("message here");
webView = (WebView) findViewById(R.id.webView1);
webView.setWebViewClient(new WebViewClient(){
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
// TODO Auto-generated method stub
// here you can display an imageview fullscreen
// or show and progressdialog
progressDialog.show();
}
@Override
public void onPageFinished(WebView view, String url) {
// TODO Auto-generated method stub
// here you can remove the imageview and the user can continue using the webview
// or hide the progressdialog
progressDialog.dismiss();
}
});
}
}
당신이 알려주세요 질문이있는 경우
대단히 감사합니다! 당신의 대답은 제가 가장 필요로하는 것입니다! 하지만 크롬을 사용하고 있습니다 - (mWebView.setWebChromeClient (new GeoWebChromeClient() {), 거기에 "onPageFinished"와 같은 옵션이 없습니다 ... :-( – user2191116
Webchromeclient와 webviewclient를 모두 설정하여 설정할 필요가 없습니다. webchrome 또는 webview 또는 둘 다. –
progressdialog의 경우 progressDialog.setCancelable (false) 및 progressDialog.setCanceledOnTouchOutside (false) 설정을 제안합니다. 따라서 사용자가 대화 상자를 취소 (취소) 할 수 없습니다. –
공용 클래스로 SplashScreen이 활동 { 개인 스레드 mSplashThread을 확장;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.splash);
final SplashScreen sPlashScreen = this;
// The thread to wait for splash screen events
mSplashThread = new Thread() {
@SuppressWarnings("deprecation")
@Override
public void run() {
try {
synchronized (this) {
// Wait given period of time or exit on touch
wait(5000);
}
} catch (InterruptedException ex) {
}
finish();
// Run next activity
Intent intent = new Intent();
intent.setClass(sPlashScreen, MainActivity.class);
startActivity(intent);
}
};
mSplashThread.start();
}
/**
* Processes splash screen touch events
*/
@Override
public boolean onTouchEvent(MotionEvent evt) {
if (evt.getAction() == MotionEvent.ACTION_DOWN) {
synchronized (mSplashThread) {
mSplashThread.notifyAll();
}
}
return true;
}
} 여기 일반적으로
대단히 감사합니다. ! – user2191116
- 1. Android relase APK에서 활동을로드 할 수 없습니다.
- 2. Jbuilder : 2 개의 최상위 배열을 어떻게 병합 할 수 있습니까?
- 3. UINavigationBar 내에 어떻게 2 개의 이미지를 배치 할 수 있습니까?
- 4. play2에서 어떻게 2 개의 validator를 결합 할 수 있습니까?
- 5. 2 개의 접힌 다형성이 이상합니다. 어떻게 확장 할 수 있습니까?
- 6. 어떻게 텍스트 문자열에서 2 개의 값을 추출 할 수 있습니까?
- 7. 어떻게 2 개의 스레드가 서로 통신 할 수 있습니까?
- 8. 어떻게 2 개의 CSS 클래스를 하나로 결합 할 수 있습니까?
- 9. 블렌더에서 2 개의 오브젝트를 어떻게 병합 할 수 있습니까?
- 10. 2 개의 DynamicResources에 대해 어떻게 바인딩 할 수 있습니까?
- 11. 2 개의 앱, 하나의 코드베이스. 이것을 어떻게 할 수 있습니까?
- 12. 2 개의 윈도우에서 윈도우를 어떻게 분할 할 수 있습니까?
- 13. 어떻게 2 개의 쿼리를 결합 할 수 있습니까?
- 14. 1 액션에 2 개의 segue를 어떻게 추가 할 수 있습니까?
- 15. 어떻게 2 개의 복잡한 mysql 쿼리를 결합 할 수 있습니까?
- 16. 새로운 활동을로드 할 때 OutofMemory 예외가 발생합니까?
- 17. 1 개의 쿼리를 사용하여 2 개의 변수에서 2 개의 값을 초기화하려고 시도 할 수 있습니까?
- 18. 2 개의 고유 키를 2 개의 열에 사용할 수 있습니까?
- 19. 어떻게 쉘에서 2 개의 스레드를 시작할 수 있습니까?
- 20. 어떻게 겹치지 않는 2 개의 Apsalar 세그먼트를 만들 수 있습니까?
- 21. 어떻게 tkinter에 2 개의 작업 공간을 만들 수 있습니까?
- 22. 어떻게 2 개의 wavefilereaders를 순차적으로 재생할 수 있습니까?
- 23. "link_to"에 2 개의 기간을 추가 할 수 있습니까?
- 24. C++에서 2 개의 변수를 동시에 할당 할 수 있습니까?
- 25. Nhibernate는 2 개의 다른 스키마로 작동 할 수 있습니까?
- 26. 2 개의 안드로이드 장치가 서로의 존재를 어떻게 알 수 있습니까?
- 27. 2 개의 캘린더를 어떻게 나란히 놓을 수 있습니까?
- 28. Superfish, 2 개의 메뉴가 동시에 열립니다 - 어떻게 예방할 수 있습니까?
- 29. 2 개의 Excel 파일에서 자동으로 셀을 동기화 할 수 있습니까?
- 30. 같은 경로에있는 2 개의 하위 도메인을 어떻게 지원할 수 있습니까?
, 단지 downvotes에서 질문을 저장하는 경우,이 _presently_ 어떤 코드를 보여줄 수있는 좋은 방법입니다! – halfer