1. 程式人生 > >Android WebView 跳轉動畫和後退動畫的處理

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最後還會再執行一遍,所以這個方法寫設定什麼的話會從前影響到後。

以上個人理解,如有不對的地方請指教,謝謝。