2010-06-02 66 views

回答

6

它我豪爾赫Grupo Reforma,這是我使用SharedPreferences執行的。

static final String PREFS_Zoom = "PREFS_Zoom"; 

private String zoomlevel; 
private int Default_zoomlevel=100; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     mWebView = (WebView) findViewById(R.id.webview);   

     GetZoom(); 
     mWebView.setInitialScale(Default_zoomlevel); 

     FrameLayout mContentView = (FrameLayout) getWindow().getDecorView().findViewById(android.R.id.content); 
     View zoom = mWebView.getZoomControls(); 
     mContentView.addView(zoom, ZOOM_PARAMS); 
     zoom.setVisibility(View.VISIBLE); 

     WebSettings webSettings = mWebView.getSettings(); 
     webSettings.setSavePassword(false); 
     webSettings.setSaveFormData(false); 
     webSettings.setJavaScriptEnabled(true); 
     webSettings.setSupportZoom(true); 

     mWebView.loadUrl("http://www.elnorte.com"); 
    } 



    private void GetZoom(){ 
     try{ 
     SharedPreferences settings = getSharedPreferences(PREFS_Zoom,0); 
      zoomlevel = settings.getString("zoom_level","");  
     if (zoomlevel.length() >0) 
     Default_zoomlevel = Integer.parseInt(zoomlevel);    
     else 
     Default_zoomlevel =100; 
     }catch(Exception ex){ 
     Log.e("******ZOOM ! ", "Exception GetZoom() ::"+ex.getMessage());   
     } 
    } 


    private void SaveZoom(){ 
     try{ 
     SharedPreferences settings = getSharedPreferences(PREFS_Zoom,0);    
     SharedPreferences.Editor editor = settings.edit();  
     Default_zoomlevel = (int) (mWebView.getScale() *100); 
     editor.putString("zoom_level",""+ Default_zoomlevel); 
     editor.commit(); 
     }catch(Exception ex){ 
     Log.e("******ZOOM ! ", "Exception SaveZoom() ::"+ex.getMessage());  
     } 
    } 


    public void finish() { 
     SaveZoom(); 
      super.finish();  
    } 

我希望這幫助

+0

看起來很完美Jorge。 – 2010-06-03 07:31:22

+1

可以使用'editor.putInt()'和'editor.getInt()',而不是將其存儲爲字符串並將其解析爲整數。由於這些值存儲在一個XML中 - 它可能自己解析等。 – Swaroop 2011-10-11 05:10:39

2

豪爾赫給出的答案是當場上,除了SaveZoom理想不應finish()被調用(這是當活動被銷燬)。更好的縮放喜好保存方法是擴展WebView的WebViewClient,並覆蓋onScaleChanged()。所以繼續豪爾赫的onCreate方法:

public void onCreate(Bundle savedInstanceState) 
{ 

    .... 

    class MyWebViewClient extends WebViewClient 
    { 
     @Override 
     public void onScaleChanged(WebView wv, float oldScale, float newScale) 
     { 
      SaveZoom(); 
     } 
    } 

    mWebView.setWebViewClient(new MyWebViewClient()); 
} 
+0

問題:onScaleChanged在通過多點觸摸手勢(Android bug)縮放時未被調用。 – 2012-07-06 13:19:03