android嵌入webview
A. 在android中什麼叫「內嵌瀏覽器」
比如來說,小米手機帶的那個瀏覽器就是系統內嵌的瀏覽器,一般來說內嵌瀏覽器不怎麼好用,所以都會下載其他瀏覽器
B. 如何讓安卓內嵌WebView調節音量
在開發瀏覽器的過程中,發現打開視頻的時候,無法調音量,最後發現是keyCode == KeyEvent.KEYCODE_BACK裡面的問題。
如果return true,那麼就結束了事件,相當於屏蔽了音量鍵。但是不return true,就要加以判斷是否是多次按下
webView播放視頻(html5 video) 手機側面按鍵無法調節音量大小,但是頁面上的音量控制條可以拖動調節,是不是需要webview開啟某個屬性才支持啊
C. Android程序中嵌入WebView,單擊其中的鏈接時無反應,請問是什麼原因引起的如何解決
觸發條件:單擊Android系統控制項Button彈出一個嵌入了WebView的PopupWindow時一切正常,而改用單擊WebView載入的頁面中的鏈接彈出嵌入了另一個WebView的PopupWindow時則出現上述情況,程序隨後強制關閉【應用程序無響應-ANR】。
D. 【Android開發】請問在activitygroup中嵌入多個webview,切換時如何保持webview的狀態
你應該是用intent啟動activity切換的吧。這樣做的話沒什麼好辦法,如果你是固定4個界面的話,可以把4個界面放在同一個View里邊,通過控制顯示和隱藏來切換
E. android scrollview嵌套webview和listview,怎麼滑動不卡頓
只要是listview上下滑動卡頓,其主要原因是因為在listview填充適配器的時候。在重寫的類BaseAdapter方法
getView();被無限的循環的調用;這樣消耗了大量的內存導致listview上下滑動的時候,出現了卡頓。原因就在於measure過
程,ListView一般都會根據屏幕載入多個Item,而且也會同時顯示這些已經載入過的若干組Item,而這些Item的父元素都是這個
ListView。
通過Google的解釋:View在Draw的時候分成兩個階段:measure和layout,在measure階段時主要就是為了計算兩個參
數:height和width。而且要注意的是,這是個遞歸的過程,從頂向下,DecorView開始依次調用自己子元素的measure。計算完成這兩
個參數後就開始layout,最後再是draw的調用。對於ListView,當然每一個Item都會被調用Measure方法,而在這個過程中
getView和getCount會被調用,而且看用戶的需求,可能會有很多次調用。問題就在於在layout中的決定ListView或者它的父元素的
height和width屬性的定義了。 根據我的經驗,height和width最好都設置成fill_parent,這樣能避免listview對getView的瘋狂調用。 解決方法就是盡量避免自適應,除非是萬不得已,固定大小或者填充的效果會比較好一些。 還有一點請注意,如果使用了上面的動態測量來設置listview的顯示高度,並使用了fill_parent來設置了listview的屬性,但是仍然不能停止adapter中getView()方法的瘋狂調用;或者還伴有listview內容顯示仍然不完全現象; 根據我自己的實踐經驗來講,你可以這樣做: 把listview放置在LinearLayout中,<LinearLayout中只存在一個listview>; 我推斷是,當你通過動態測量載入的時候,ta需要一個獨立的空間。
F. android 在webview嵌入網頁 應該注意什麼
通過WebView載入頁面有以下幾種方式:
請根據你需要的場景進行不同的選擇
1.載入本地assert目錄下文件(error.html)
webcontent.loadUrl(" file:///android_asset/error.html ");
2.載入網路url(http://www.csdn.com)
webcontent.loadUrl(" http://www.csdn.com ");
3.載入 String 類型html
String
errorHtml = "<html><body><h1>Page not find!</h1></body></html>";
webcontent.loadData(errorHtml,
"text/html", "UTF-8");
4.載入SD卡html:
webcontent.loadUrl(" content://com.android.htmlfileprovider/sdcard/kris.html ");
G. Android系統 WebView是什麼有什麼用
現在越來越多的APP都內置了Web網頁去載入視圖,也就是我們常說的Hybrid APP混合應用,市場上很多平台都是這樣做的,比如我們經常使用的淘寶、京東等電商平台。這些是如何實現的呢?在我們Android中有一個WebView組件,它就可以實現此類功能。它是Android中的原生UI控制項,主要用於在APP應用中方便地訪問遠程網頁或本地HTML資源,同時WebView也在Android中充當Java代碼和JS代碼之間交互的橋梁,實際上也可以將WebView看做一個功能最小化的瀏覽器。下面我們一起來看看WebView的一些常用的使用方法。
WebView是Android系統提供的一個能顯示網頁的系統控制項,它是一個特殊的View,同時也是一個ViewGroup,可以有很多其他子View。在Android 4.4以下(不包含4.4)系統WebView底層實現是採用WebKit內核,而在Android 4.4及其以上Google採用了Chromium內核作為系統WebView的底層內核支持。在這一變化中Android提供的WebView相關API並沒有發生較大變化,在4.4上也兼容低版本的API並且引進了少部分API。這里簡單介紹下基於Chromium的WebView和基於WebKit的WebView之間的差異,基於Chromium的Webview提供了更廣的HTML5、CSS3、JavaScript支持,在Android系統版本5.0上基於Chromium 37,WebView提供了絕大多數的HTML5特性支持,除此之外Chromium也支持遠程調試(Chrome DevTools)。WebKit JavaScript引起採用WebCore JavaScript在Android 4.4上換成了V8能直接提升JavaScript性能。
二、作用
1、顯示和渲染Web頁面
2、使用html文件(網路上或本地assets中)作為布局
3、可與JavaScript交互調用
註: WebView控制項功能強大,除了具有一般View的屬性和設置外,還可以對Url請求、頁面載入、渲染、頁面交互進行強大的處理。
H. android 嵌套webview請求介面的時候不在同一個session裡面怎麼處理
在開發一個項目時,遇到了這么一個問題,登錄界面是用Android的native的UI來做的,登錄成功後會跳轉到WebView來載入Sencha Touch的數據,但是在WebView到後台Load數據的時候發現,這時的session和登錄時的session不同了,因此取不到數據,為此google了很久,終於在StackOverflow找到了方法,在此先貼出原文地址:
其中關鍵點在下面的這些code里:
private DefaultHttpClient httpClient;
public static Cookie cookie = null;
//After Login
List<Cookie> cookies = httpClient.getCookieStore().getCookies();
if (!cookies.isEmpty()) {
for (int i = 0; i < cookies.size(); i++) {
cookie = cookies.get(i);
}
}
//註:下面的code寫在WebView的Activity里
//------- Web Browser activity
Cookie sessionCookie = myapp.cookie; //這里的cookie就是上面保存的cookie
CookieSyncManager.createInstance(this);
CookieManager cookieManager = CookieManager.getInstance();
if (sessionCookie != null) {
cookieManager.removeSessionCookie();
String cookieString = sessionCookie.getName() + "=" + sessionCookie.getValue() + "; domain=" + sessionCookie.getDomain();
cookieManager.setCookie(myapp.domain, cookieString);
CookieSyncManager.getInstance().sync();
不多說了,主要是在登錄成功後,把cookie存起來,然後在WebView中SetCookie。
posted @ 2012-02-16 10:18 與時俱進 閱讀(...) 評論(...) 編輯 收藏
I. android載入webview有哪幾種方式
WebView(網路視圖)能載入顯示網頁,可以將其視為一個瀏覽器。它使用了WebKit渲染引擎載入顯示網頁,實現WebView有以下兩種不同的方法:
第一種方法的步驟:
1.在要Activity中實例化WebView組件:WebView webView = new WebView(this);
2.調用WebView的loadUrl()方法,設置WevView要顯示的網頁:
互聯網用:webView.loadUrl("http://www.google.com");
本地文件用:webView.loadUrl("file:///android_asset/XX.html"); 本地文件存放在:assets 文件中
3.調用Activity的setContentView( )方法來顯示網頁視圖
4.用WebView點鏈接看了很多頁以後為了讓WebView支持回退功能,需要覆蓋覆蓋Activity類的onKeyDown()方法,如果不做任何處理,點擊系統回退剪鍵,整個瀏覽器會調用finish()而結束自身,而不是回退到上一頁面
5.需要在AndroidManifest.xml文件中添加許可權,否則會出現Web page not available錯誤。
<uses-permission android:name="android.permission.INTERNET" />
第二種方法的步驟:
1、在布局文件中聲明WebView
2、在Activity中實例化WebView
3、調用WebView的loadUrl( )方法,設置WevView要顯示的網頁
4、為了讓WebView能夠響應超鏈接功能,調用setWebViewClient( )方法,設置 WebView視圖
5、用WebView點鏈接看了很多頁以後為了讓WebView支持回退功能,需要覆蓋覆蓋Activity類的onKeyDown()方法,如果不做任何處理,點擊系統回退剪鍵,整個瀏覽器會調用finish()而結束自身,而不是回退到上一頁面
6、需要在AndroidManifest.xml文件中添加許可權,否則出現Web page not available錯誤。
<uses-permission android:name="android.permission.INTERNET"/>
J. android scrollview 嵌套webview 有其他方式沒
Android中WebView用來載入html頁面,自帶滑動效果。ScrollView同樣也是自帶滑動效果,在項目中如果需要WebView和一些其他view比如TextView一起滑動的話就必須外面嵌套一層ScrollView,這時問題就來了,嵌套之後ScrollView的滑動和WebView的滑動就會有沖突,WebView的滑動不流暢。下面就是解決方案:
自定義一個ScrollView
public class MyScrollView extends ScrollView {
private GestureDetector mGestureDetector;
View.OnTouchListener mGestureListener;
public MyScrollView(Context context, AttributeSet attrs) {
super(context, attrs);
mGestureDetector = new GestureDetector(context, new YScrollDetector());
setFadingEdgeLength(0);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
return super.onInterceptTouchEvent(ev) && mGestureDetector.onTouchEvent(ev);
}
// Return false if we're scrolling in the x direction
class YScrollDetector extends SimpleOnGestureListener {
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
if (Math.abs(distanceY) > Math.abs(distanceX)) {
return true;
}
return false;
}
}
}
上面代碼中onInterceptTouchEvent方法是關鍵,重寫這個方法使如果ScrollView有touch事件時不被攔截,這樣只要ScrollView有touch事件優先處理,這樣就保證了滑動的流暢。
之後就在自己的xml布局文件里用MyScrollView代替ScrollView來布局就ok了。如:
<com.boohee.widgets.MyScrollView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/main_bg"
android:layout_marginTop="@dimen/default_shadow_margin" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="180dp" >
<android.support.v4.view.ViewPager
android:id="@+id/vp_top_show"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
<LinearLayout
android:id="@+id/dot_layout"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:gravity="center_horizontal"
android:orientation="horizontal"
android:padding="10dp" >
</LinearLayout>
</RelativeLayout>
<WebView
android:id="@+id/wv_show"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layerType="software"
android:scrollbars="none" />
</LinearLayout>
</com.boohee.widgets.MyScrollView>