2011-11-21 11 views
10

अगर कोई मेरी मदद कर सकता है तो मैं बहुत खुश हूं। मेरे पास एक ऐसा एप्लिकेशन है जो वेबदृश्य का उपयोग करता है। वेबव्यू एक यूआरएल लोड करता है और मैंने उन सभी अन्य लिंक को ओवरराइड करने के लिए Google ट्यूटोरियल का उपयोग किया है जिन्हें मैं वेबव्यू के साथ भी खोलना चाहता हूं। मैंने res/ और slide_right xml में एक एनिमेटेशन फ़ाइल बनाई है और अब तक बहुत अच्छी है। मैं अपने मुख्य जावा गतिविधि में प्रभाव डालता हूं लेकिन यह केवल पहले पृष्ठ पर लागू होता है। जो चीज मैं चाहता हूं वह वेब पेज में लोड होने वाले प्रत्येक पृष्ठ में लागू होने का प्रभाव है।मैं वेब दृश्य में एंड्रॉइड संक्रमण प्रभाव का उपयोग कैसे कर सकता हूं?

क्या आप मेरे कोड के साथ मेरी मदद कर सकते हैं?

package com.ihome;

import android.app.Activity; 

import android.app.AlertDialog; 
import android.content.Context; 
import android.content.DialogInterface; 
import android.content.Intent; 
import android.net.ConnectivityManager; 
import android.net.NetworkInfo; 
import android.os.Bundle; 
import android.view.KeyEvent; 
import android.view.Menu; 
import android.view.MenuInflater; 
import android.view.MenuItem; 
import android.view.animation.Animation; 
import android.view.animation.AnimationUtils; 
import android.webkit.WebView; 
import android.webkit.WebViewClient; 



public class IhomeActivity extends Activity { 
    WebView mWebView; 
    private class HelloWebViewClient extends WebViewClient { 
     @Override 
     public boolean shouldOverrideUrlLoading(WebView view, String url) { 
      Animation slideRightAnimation = AnimationUtils.loadAnimation(getBaseContext(), R.anim.slide_right); 
      mWebView.startAnimation(slideRightAnimation); 
      view.loadUrl(url); 
      return true; 
     } 
    } 


@Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 
     if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) { 
      Animation slideLeftAnimation = AnimationUtils.loadAnimation(getBaseContext(), R.anim.slide_left); 
      mWebView.startAnimation(slideLeftAnimation); 
      mWebView.goBack(); 
      return true; 
     } 
     return super.onKeyDown(keyCode, event); 
    } 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    mWebView = (WebView) findViewById(R.id.webview); 
    mWebView.setVerticalScrollBarEnabled(false); 
    mWebView.setHorizontalScrollBarEnabled(false); 
    mWebView.getSettings().setJavaScriptEnabled(true); 
    mWebView.loadUrl("http://www.google.com/"); 
    mWebView.setWebViewClient(new HelloWebViewClient()); 
+0

हैलो, क्या कोई मुझे उपरोक्त प्रश्न के साथ मदद कर सकता है? क्या मुझे अपना कोड अपलोड करना चाहिए? – alexgeorg86

+0

मैं अपने कोड से ऊपर पोस्ट, कृपया मेरी मदद करो ... – alexgeorg86

+0

आशा इस मदद http://stackoverflow.com/q/7641121/577046 – Synxmax

उत्तर

21

यह सबसे अच्छा मैं देशी apis के साथ कर सकता है, ऐसा लगता है समय नहीं है बहुत सही है क्योंकि पेज और एनीमेशन की लोडिंग अतुल्यकालिक हैं .. संपादित करें: अद्यतन, इस एक मामूली बेहतर है। EDIT2: यह अब तक का सबसे अच्छा प्रयास है, और यह उपयोगकर्ता को यह महसूस करने की अनुमति देता है कि पृष्ठ लोड हो रहा है .. अर्ध-चिकनी एनीमेशन प्राप्त करने का एकमात्र तरीका पृष्ठ को प्रीलोड करने की अनुमति देना है, जबकि उपयोगकर्ता इसे नहीं देखता है।

package com.adeptdev.animwebview; 

import android.app.Activity; 
import android.app.ProgressDialog; 
import android.os.Bundle; 
import android.view.KeyEvent; 
import android.view.View; 
import android.view.animation.Animation; 
import android.view.animation.AnimationUtils; 
import android.webkit.WebView; 
import android.webkit.WebViewClient; 

public class HelloWebViewActivity extends Activity { 
    ProgressDialog mProgressDialog; 


    private class HelloWebViewClient extends WebViewClient { 
     @Override 
     public boolean shouldOverrideUrlLoading(WebView view, String url) { 
      view.setVisibility(View.GONE); 
      mProgressDialog.setTitle("Loading"); 
      mProgressDialog.show(); 
      mProgressDialog.setMessage("Loading " + url); 
      return false; 
     } 

     @Override 
     public void onPageFinished(WebView view, String url) { 
      mProgressDialog.dismiss(); 
      animate(view); 
      view.setVisibility(View.VISIBLE); 
      super.onPageFinished(view, url); 
     } 
    } 

    private void animate(final WebView view) { 
     Animation anim = AnimationUtils.loadAnimation(getBaseContext(), 
       android.R.anim.slide_in_left); 
     view.startAnimation(anim); 
    } 

    @Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 
     WebView view = (WebView) findViewById(R.id.webview); 
     if ((keyCode == KeyEvent.KEYCODE_BACK) && view.canGoBack()) { 
      view.goBack(); 
      return true; 
     } 
     return super.onKeyDown(keyCode, event); 
    } 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     mProgressDialog = new ProgressDialog(this); 
     WebView webView = (WebView) findViewById(R.id.webview); 
     webView.setVerticalScrollBarEnabled(false); 
     webView.setHorizontalScrollBarEnabled(false); 
     webView.getSettings().setJavaScriptEnabled(true); 
     webView.loadUrl("http://www.google.com/"); 
     webView.setWebViewClient(new HelloWebViewClient()); 
    } 
} 
+0

टॉम इस के लिए बहुत बहुत धन्यवाद! क्या आप मुझे बता सकते हैं कि बैक बटन के साथ क्या करना है? – alexgeorg86

+0

ओवरराइड अपनी गतिविधि उपवर्ग में onBackPressed –

+0

किसी को भी मुझे एक बार फिर से मदद कर सकते हैं, मैं चाहता हूँ जब मैं वापस जाएं बटन दबाएं विपरीत दिशा के साथ एक एनीमेशन शुरू करने के लिए तो मैं '@Override जोड़ने \t सार्वजनिक शून्य onBackPressed() { \t super.onBackPressed(); \t overridePendingTransition (android.R.anim.slide_out_right, android.R.anim.slide_out_right); \t} 'लेकिन यह काम नहीं करता है। कोई सुझाव? – alexgeorg86

संबंधित मुद्दे