Android WebView 跳轉動畫和後退動畫的處理
開始寫webview跳轉動畫,當一個webview的時候,跳轉動畫總是效果不好。所以就採用兩個webview來跳轉實現。
但當兩個跳轉實現後,後退的時候,兩個webview之間的切換又總是出現問題。當總的跳到第4頁以前時,都是沒有問題的,但到第5頁時,後退到4時,4只有goBack();的話,就直接顯示到第二頁,也就是第二個webview goBack();一次後的頁面,為了把goback後的頁面隱藏,畫了大功夫啊,在各方法裡setVisibility(View.INVISIBLE);都不行,沒辦法,只有寫個測試,看在哪個方法裡隱藏它。
程式碼如下:
public class GoBackTestActivity extends Activity {
private FrameLayout frameLayouttest;
private WebView webView;
private Button btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_webview);
findView();
initView();
}
private void findView() {
frameLayouttest= (FrameLayout) findViewById(R.id.frament_layout_test);
webView= (WebView) findViewById(R.id.webView_view);
btn= (Button) findViewById(R.id.back_btn);
WebSettings webSettings=webView.getSettings();
SettingsWebViewUtils.setSettings(GoBackTestActivity.this ,webSettings);
webView.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
LogUtils.LogUtils("shouldOverrideUrlLoading.........................");
return super.shouldOverrideUrlLoading(view, url);
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
LogUtils.LogUtils("onPageStarted..........................");
super.onPageStarted(view, url, favicon);
}
@Override
public void onPageFinished(WebView view, String url) {
int s=SharedPreferencesUtils.getToken(GoBackTestActivity.this,"test");
if (s==555){
frameLayouttest.setVisibility(View.INVISIBLE);
}
LogUtils.LogUtils("onPageFinished..........................");
super.onPageFinished(view, url);
}
@Override
public void onLoadResource(WebView view, String url) {
LogUtils.LogUtils("onLoadResource........................");
super.onLoadResource(view, url);
}
});
webView.setWebChromeClient(new WebChromeClient(){
@Override
public void onProgressChanged(WebView view, int newProgress) {
LogUtils.LogUtils("onProgressChanged.................");
super.onProgressChanged(view, newProgress);
}
});
}
private void initView() {
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
webView.loadUrl(API.MAIN_URL);
}
});
}
@Override
public void onBackPressed() {
SharedPreferencesUtils.save(GoBackTestActivity.this,555,"test");
webView.goBack();
}
}
輸出:
12-15 16:17:28.946 3775-3775/com.bugly.upgrade.demo D/JunLog: onProgressChanged……………..
12-15 16:17:29.095 3775-3775/com.bugly.upgrade.demo D/JunLog: onLoadResource……………………
12-15 16:17:29.247 3775-3775/com.bugly.upgrade.demo D/JunLog: onProgressChanged……………..
12-15 16:17:29.278 3775-3775/com.bugly.upgrade.demo D/JunLog: onLoadResource……………………
12-15 16:17:29.284 3775-3775/com.bugly.upgrade.demo D/JunLog: onLoadResource……………………
12-15 16:17:29.289 3775-3775/com.bugly.upgrade.demo D/JunLog: onLoadResource……………………
12-15 16:17:29.308 3775-3775/com.bugly.upgrade.demo D/JunLog: onLoadResource……………………
12-15 16:17:29.313 3775-3775/com.bugly.upgrade.demo D/JunLog: onLoadResource……………………
12-15 16:17:29.316 3775-3775/com.bugly.upgrade.demo D/JunLog: onLoadResource……………………
12-15 16:17:29.319 3775-3775/com.bugly.upgrade.demo D/JunLog: onLoadResource……………………
12-15 16:17:29.322 3775-3775/com.bugly.upgrade.demo D/JunLog: onLoadResource……………………
12-15 16:17:30.216 3775-3775/com.bugly.upgrade.demo D/JunLog: onProgressChanged……………..
12-15 16:17:30.292 3775-3775/com.bugly.upgrade.demo D/JunLog: onProgressChanged……………..
12-15 16:17:30.321 3775-3775/com.bugly.upgrade.demo D/JunLog: onPageFinished……………………..
12-15 16:17:30.417 3775-3775/com.bugly.upgrade.demo D/JunLog: onLoadResource……………………
發現了這個。
然後設定setVisibility(View.INVISIBLE);隱藏了
到這裡也許思想很容易想到,但在 onBackPressed()方法中,剛剛隱藏的不用在隱藏,在隱藏反而會沒有效果,而且還有注意別的方法裡不要再設定。
總結:當webview跳轉時,
onProgressChanged……………..
onPageStarted……………………..
onLoadResource……………………
onPageFinished…………………….
大致方法前後是這樣,但onLoadResource最後還會再執行一遍,所以這個方法寫設定什麼的話會從前影響到後。