简单翻译android WebView 官网
WebView
extends AbsoluteLayoutimplements ViewGroup.OnHierarchyChangeListener ViewTreeObserver.OnGlobalFocusChangeListener
java.lang.Object的 | ||||
↳ | android.view.View | |||
↳ | android.view.ViewGroup | |||
↳ | android.widget.AbsoluteLayout | |||
↳ | android.webkit.WebView |
类概述
一个显示网页的视图,这个类在您的Activity上可以简单的显示一些在线内容,从而推出自己定制的浏览器。它使用Webkit渲染引擎来显示网页和其他更多功能包括历史记录向前导航,向后,放大和缩小,执行文本搜索。
想要启用内置的缩放,需要设置WebSettings.setBuiltInZoomControls的(boolean)(介绍在API CUPCAKE中)。请注意,为了一个webview在你的Activity访问互联网和加载网页,你必须添加到你的Android的Manifest文件中的Internet权限:
<uses-permission android:name="android.permission.INTERNET" />
这必须是一个元素的子元素。请查看教程: Building Web Apps in WebView.。
基本用法
默认情况下,一个网页不提供任何浏览器的插件,不允许javaScript网页错误不可以被忽略。如果你的目标只是显示一些网页作为用户界面的一部分,这可能是好的;用户不需要与网页交互。如果你真的想要一个完全成熟的网络浏览器,那么你可能要调用的是浏览器应用程序,而不是一个webview显
示一个URL意图。例如:
Uri uri = Uri.parse("http://www.example.com"); Intent intent = new Intent(Intent.ACTION_VIEW, uri); startActivity(intent);
更多信息请阅读Intent
意图.。
要提供一个webview在自己的Activity中,包括在你的布局,WebView的窗口设置在Activity的onCreate()
:方法中;
WebView webview = new WebView(this); setContentView(webview);
然后加载所需的网页:
// 最简单的用法:注意异常不会被抛出 // 如果载入此页有错误(见下文) webview.loadUrl("http://slashdot.org/");//或者,你也可以加载一个HTML字符串 String summary = "<html><body>You scored <b>192</b> points.</body></html>"; webview.loadData(summary, "text/html", null);// ... 但是请注意这对HTML有限制// 更多的信息请看loaddata()和loaddatawithbaseurl()的javadocs文档
一个webview有几个自定义点,在这里你可以添加你自己的行为。这些是:
- 创建和设置WebChromeClient的子类,当浏览器的UI发生变化时调用,如:进度条更改、JavaScript的窗口。
(见Debugging Taskshttp://developer.android.com/tools/debugging/index.html) - 创建和设置WebViewClient子类,当底层内容变化时调用,如:错误或表单提交。你也可以再次拦截URL调用。
(通过shouldOverrideUrlLoading()) - 修改WebSettings,例如:让JavaScript可用--setJavaScriptEnabled().
- 增加JavaScript-to-Java接口addJavascriptInterface(Object,String)。
可以将java对象绑定到WebView,这样对象可以被网页的JavaScript控制。
下面是一个更复杂的例子,显示的错误处理,设置和进度通知:
// Let's display the progress in the activity title bar, like the // browser app does. getWindow().requestFeature(Window.FEATURE_PROGRESS); webview.getSettings().setJavaScriptEnabled(true); final Activity activity = this; webview.setWebChromeClient(new WebChromeClient() { public void onProgressChanged(WebView view, int progress) { // Activities and WebViews measure progress with different scales. // The progress meter will automatically disappear when we reach 100% activity.setProgress(progress * 1000); } }); webview.setWebViewClient(new WebViewClient() { public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { Toast.makeText(activity, "Oh no! " + description, Toast.LENGTH_SHORT).show(); } }); webview.loadUrl("http://slashdot.org/");
Cookie和窗口管理
为了安全起见,你的应用程序需要使用自己的缓存,它不共享浏览器应用程序的数据。默认情况下,通过HTML打开新窗口的请求被忽略。无论是通过JavaScript或链路上的目标属性打开,这是真的。你可以定制你的WebChromeClient
提供你自己打开多个窗口的行为,这可以使你随意控制他们的任何方式。标准的行为是要销毁并重新创建一个活动时,更改设备的方向或任何其他配置。这将导致的WebView重新载入当前页面。如果你不希望出现这种情况,您可以将您的Activity屏幕方向和keyboardHidden的变化,然后单独退出WebView。它会自动重新适配自己。运行时如何处理配置更改请阅读更多信息,Handling Runtime Changes。
制作支持不同的屏幕密度的网页
一个的移动设备的屏幕密度是根据在屏幕上的分辨率。低密度的屏幕每英寸的可用像素较少,一个高密度屏幕在每英寸像素效果显著更多 - 。一个屏
幕的密度是很重要的,因为,其他条件都相同,在UI元素(例如,一个按钮),其高度和宽度被定义在屏幕像素方面会出现较大的和较小的密度较低的
屏幕上的更高密度的屏幕上。为简单起见,Android折叠所有实际的屏幕密度为:高,中,低三个广义密度。
缺省情况下,web视图缩放一个网页,以便它被绘制在中等密度的屏幕上的尺寸相匹配的默认外观。因此,在高密度屏幕采用1.5倍缩放(因为它的像素较小)和0.75倍缩放一个低密度画面上(因为它的像素大)。开始的WebView支持API级 ECLAIR,DOM,CSS,和meta标签的功能,以帮助您作为一个web开发目标不同的屏幕密度的屏幕。这里有一个总结的功能,你可以用它来处理不同的屏幕密度:
window.devicePixelRatio
DOM属性。此属性的值指定了默认的比例因子,用于当前设备。例如,如果window.devicePixelRatio值是“1.0”,则该设备被认为一个中等密度(MDPI)的移动设备和默认缩放系数不施加到在网页;如果该值是“1.5”,则该设备是认为是一个高密度的移动设备(HDPI)和页面内容进行缩放1.5倍,如果该值是“0.75”,则该设备被认为一个低密度的移动设备(LDPI)和内容缩放0.75倍。但是,如果您指定“目标densitydpi”元属性(下面讨论),那么你可以停止这个默认的缩放行为。-webkit-device-pixel-ratio
CSS样式查询。使用指定的屏幕密度,该样式表是分别相应的值必须是“0.75”,“1”,或“1.5”,表示方式是低密度
,中密度或高密度的设备,屏幕,分别。比如说:example:<link rel="stylesheet" media="screen and (-webkit-device-pixel-ratio:1.5)" href="hdpi.css" />
样式表仅用于设备的屏幕像素比为1.5,这是高密度的像素比例。
对于viewportmeta标签的target-densitydpi
属性. 你可以指定的Web页面的目标密度,使用以下值:默认缩放将永远不会发生:device-dpi
-使用设备的原始分辨率为目标的DPI。默认缩放不会发生.high-dpi
-使用hdpi、低密度的屏幕缩小适当.medium-dpi
-使用mdpi. 高密度屏幕的扩大和低密度屏幕缩小low-dpi
-使用ldpi. 中,高密度屏适当扩大.-指定要使用的DPI DPI值(可接受的值是70-400).
下面是一个meta标签指定目标密度的例子:
<meta name="viewport" content="target-densitydpi=device-dpi" />
如果你想修改网页密度, 就使用-webkit-device-pixel-ratio
CSS3 Media Query 并/或 window.devicePixelRatio
DOM 属性 然后你应该设置target-densitydpi
meta 属性为device-dpi
. 这将阻止Android的在你的网页进行缩放,并允许你为所有像素密度通过CSS和JavaScript做出必要的调整。
HTML5 视频 播放支持
为了支持内联HTML5视频在您的应用程序,你需要开启硬件加速和设置WebChromeClient,
对于全屏的支持需要onShowCustomView(View, WebChromeClient.CustomViewCallback)
和onHideCustomView()
可选getVideoLoadingProgressView()
Summary
Nested Classes | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
interface | WebView.FindListener | 监听查找结果的接口 | |||||||||
class | WebView.HitTestResult | ||||||||||
interface | WebView.PictureListener | 不推荐使用此接口在API级别12。该接口是现在已经过时。 | |||||||||
class | WebView.WebViewTransport | 返回的WebView跨线程边界传输对象 |
[Expand] |
---|
[Expand] 继承XML 属性 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
From classandroid.view.ViewGroup | |||||||||||
From classandroid.view.View |
常量 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
String | SCHEME_GEO | URI scheme for map address. | |||||||||
String | SCHEME_MAILTO | URI scheme for email address. | |||||||||
String | SCHEME_TEL | URI scheme for telephone number. |
继承的常量 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
从阶级android.view.ViewGroup | |||||||||||
从类android.view.View |
[展开] 继承的字段 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
从类android.view.View |
公共构造函数 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
的WebView( 上下文上下文) 一个Context对象构造一个新的WebView。 | |||||||||||
的WebView( 上下文背景下 的AttributeSetATTRS) 构造一个新的WebView与布局参数。 | |||||||||||
的WebView( 上下文背景下 的AttributeSetATTRS,INT defStyle) 构造一个新的WebView与布局参数和默认样式。 | |||||||||||
的WebView( 上下文背景下 的AttributeSetATTRS,INT defStyle,布尔privateBrowsing) 这个构造函数在API等级17是不推荐。私人浏览功能不再支持直接通过WebView,将在未来的版本中删除。不再私自访问WebSettings ,而改用WebViewDatabase ,CookieManager 和WebStorage 的进行隐私数据操作和细粒度的控制。 |
Public Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
void | addJavascriptInterface( Objectobject, Stringname) 将 Java对象提供 到 Web视图 | ||||||||||
boolean | canGoBack() 获取WebView一个回溯的历史事项 | ||||||||||
boolean | canGoBackOrForward(int steps) 页面是否后退或前进,或 给定数目的后退或前进。 | ||||||||||
boolean | canGoForward() 获取的WebView有一个向前的历史记录项。 | ||||||||||
boolean | canZoomIn() 不推荐使用此方法 API level17。这种方法很容易出现不准确的网页渲染和UI线程之间的竞争条件;建议使用onScaleChanged(WebView, float, float) . | ||||||||||
boolean | canZoomOut() 这种方法被废弃APIlevel17。这种方法很容易由于种族的网页渲染UI线程之间;建议onScaleChanged(WebView, float, float) . | ||||||||||
Picture | capturePicture() 捕捉当前WebView的图片 | ||||||||||
void | clearCache(boolean includeDiskFiles) 清除资源缓存. | ||||||||||
void | clearFormData() 从 目前 的表单域自动 删除 弹出 , 如果存在的话 | ||||||||||
void | clearHistory() 告诉 WebView 清除 其内部的 向后/向前 列表 。 | ||||||||||
void | clearMatches() 清除由 findAllAsync(String) .创建 出的显示强调突出的文本。 | ||||||||||
void | clearSslPreferences() 清除 存储 响应与 SSL 证书错误. | ||||||||||
void | clearView() 清除此 Web视图 , 如果 measurespec 不 measurespec.exactly 。 ondraw() 将 只有白色的 背景 , 并 onmeasure() 将返回0, | ||||||||||
void | computeScroll() 调用父类请求子类更新其 mScrollX 和mScrollY的值. | ||||||||||
WebBackForwardList | copyBackForwardList() 获取 此 Web视图的webbackforwardlist 。 | ||||||||||
void | destroy() 销毁WebView的内部状态. | ||||||||||
boolean | dispatchKeyEvent( KeyEventevent) 调度下一个视图的焦点路径上的关键事件.. | ||||||||||
void | documentHasImages( Messageresponse) 查询文件,看它是否包含任何图片引用。 | ||||||||||
abstract void | dumpViewHierarchyWithProperties( BufferedWriterout, int level) Dumps custom children to hierarchy viewer. | ||||||||||
static String | findAddress( Stringaddr) 获取 一个物理 位置的地址 的第一个子串 | ||||||||||
int | findAll( Stringfind) 这种方法不推荐API level 16. 首选findAllAsync(String) | ||||||||||
void | findAllAsync( Stringfind) 异步的查找网页上所有的实例 | ||||||||||
abstract View | findHierarchyView( StringclassName, int hashCode) Returns a View to enable grabbing screenshots from custom children returned in dumpViewHierarchyWithProperties. | ||||||||||
void | findNext(boolean forward) 滚动并加亮到下一个匹配的 findAllAsync(String) , 直到网页边界 | ||||||||||
void | flingScroll(int vx, int vy) | ||||||||||
void | freeMemory() 通知当前的WebView内存是低的,以便它可以释放任何可用的内存 | ||||||||||
SslCertificate | getCertificate() 获取 主要顶层页的SSL证书,或者null,如果没有证书(该网站是不安全的)。 | ||||||||||
int | getContentHeight() 获取的HTML内容的高度。 | ||||||||||
Bitmap | getFavicon() 获取当前 页的 图标 。 | ||||||||||
WebView.HitTestResult | getHitTestResult() Gets a HitTestResult based on the current cursor node. | ||||||||||
String[] | getHttpAuthUsernamePassword( Stringhost, Stringrealm) 对于一个给定的主机和域检索HTTP身份验证凭据. | ||||||||||
String | getOriginalUrl() 获取当前页面的原始URL.. | ||||||||||
int | getProgress() 获取当前页面的进度. | ||||||||||
float | getScale() 不推荐使用此方法在API等级17。此方法很容易造成不准确的网页渲染和UI线程之间的竞争。建议onScaleChanged(WebView, float, float) . | ||||||||||
WebSettings | getSettings() 获取WebSettings的对象,用于控制设置此WebView. | ||||||||||
String | getTitle() 获取当前页面的标题. | ||||||||||
String | getUrl() 获取当前页面的URL. | ||||||||||
void | goBack() 返回 到 这个 Web视图 的历史记录. | ||||||||||
void | goBackOrForward(int steps) 从当前的步骤数跳转到历史记录的指定步骤数。. | ||||||||||
void | goForward() WebView 的历史记录前进 | ||||||||||
void | invokeZoomPicker() 当前 WebView调用图形变焦选择器. | ||||||||||
boolean | isPrivateBrowsingEnabled() 获取 此WebView 私人浏览是否已启用 . | ||||||||||
void | loadData( Stringdata, StringmimeType, Stringencoding) 这个WebView加载 由 “data” 给定的数据 构建成的URL | ||||||||||
void | loadDataWithBaseURL( StringbaseUrl, Stringdata, StringmimeType, Stringencoding, StringhistoryUrl) Loads the given data into this WebView, using baseUrl as the base URL for the content. | ||||||||||
void | loadUrl( Stringurl) 加载此URL. | ||||||||||
void | loadUrl( Stringurl, Map< String, String> additionalHttpHeaders) 加载给定的URL指定额外的HTTP标头. | ||||||||||
void | onChildViewAdded( Viewparent, Viewchild) 这种方法被废弃在API level8。WebView不再需要viewgroup.onhierarchychangelistener。这种方法 现在 不会实现 。 | ||||||||||
void | onChildViewRemoved( Viewp, Viewchild) 这种方法被废弃在API level8。WebView不再需要viewgroup.onhierarchychangelistener。这种方法现在不会实现。 | ||||||||||
InputConnection | onCreateInputConnection( EditorInfooutAttrs) 创建一个新的InputConnection InputMethod与视图交互 | ||||||||||
boolean | onGenericMotionEvent( MotionEventevent) 实现这个方法来处理通用的手势事件 | ||||||||||
void | onGlobalFocusChanged( ViewoldFocus, ViewnewFocus) 不推荐使用此方法 API level3。不应该执行WebView ViewTreeObserver.OnGlobalFocusChangeListener。这种方法现在什么也不做。 | ||||||||||
boolean | onHoverEvent( MotionEventevent) 实现这个方法来处理悬停事件. | ||||||||||
void | onInitializeAccessibilityEvent( AccessibilityEventevent) 初始化 AccessibilityEvent 事件 源信息. | ||||||||||
void | onInitializeAccessibilityNodeInfo( AccessibilityNodeInfoinfo) 初始化AccessibilityNodeInfo 关于视图的信息. | ||||||||||
boolean | onKeyDown(int keyCode, KeyEventevent) 默认实现 KeyEvent.Callback.onKeyDown() : 如果视图是有效并且可点击,执行按下视图直到 KEYCODE_DPAD_CENTER or KEYCODE_ENTER 释放, | ||||||||||
boolean | onKeyMultiple(int keyCode, int repeatCount, KeyEventevent) 默认实现 KeyEvent.Callback.onKeyMultiple() : 总是返回false (不处理这个事件). | ||||||||||
boolean | onKeyUp(int keyCode, KeyEventevent) 默认 KeyEvent.Callback.onKeyUp() : 执行点击直到 KEYCODE_DPAD_CENTER or KEYCODE_ENTER 释放. | ||||||||||
void | onPause() 暂停 WebView和其相关联的DOM,插件,JavaScript 等 任何额外的处理 | ||||||||||
void | onResume() 恢复webview在onPause()前后. | ||||||||||
boolean | onTouchEvent( MotionEventevent) 实现这个方法处理手势事件。. | ||||||||||
boolean | onTrackballEvent( MotionEventevent) 实现这个方法处理轨迹球运动事件. | ||||||||||
void | onWindowFocusChanged(boolean hasWindowFocus) 当窗口被扣调用或者失去焦点. | ||||||||||
boolean | overlayHorizontalScrollbar() 获取水平滚动条是否有叠加样式 | ||||||||||
boolean | overlayVerticalScrollbar() Gets whether vertical scrollbar has overlay style. | ||||||||||
boolean | pageDown(boolean bottom) 滚动 WebView 页面 大小 一半 内容 | ||||||||||
boolean | pageUp(boolean top) 向上滚动 WebView 页面 大小 一半 内容 | ||||||||||
void | pauseTimers() 暂停webview 所有布局,解析,javaScript times计时器 | ||||||||||
boolean | performAccessibilityAction(int action, Bundlearguments) 在视图上执行指定的动作 | ||||||||||
boolean | performLongClick() 如果被定义将调用调用view的OnLongClickListener | ||||||||||
void | postUrl( Stringurl, byte[] postData) webview使用"Post"方法 加载URL ,附带 postData 数据。 | ||||||||||
void | reload() 重新载入当前 URL. | ||||||||||
void | removeJavascriptInterface( Stringname) 从这个web视图中移除先前注入的Java对象. | ||||||||||
boolean | requestChildRectangleOnScreen( Viewchild, Rectrect, boolean immediate) 当 一组子类需要将一个特殊的矩形定为到屏幕上. | ||||||||||
boolean | requestFocus(int direction, RectpreviouslyFocusedRect) 调用该函数来尝试给予指定的视图或者其子类焦点和方向和特定矩形. 直到符合要求 by getDescendantFocusability() . | ||||||||||
void | requestFocusNodeHref( MessagehrefMsg) 请求 最后锚 点 或 图像元素 的URL | ||||||||||
void | requestImageRef( Messagemsg) 最后一个接触的用户请求的URL的图像 | ||||||||||
WebBackForwardList | restoreState( BundleinState) 这从给定的Bundle对象恢复WebView的状态, | ||||||||||
void | resumeTimers() 恢复 WebViews所有的布局,解析和JavaScript计时器 | ||||||||||
void | savePassword( Stringhost, Stringusername, Stringpassword) 设置 为指定的 主机的 用户名和密码. | ||||||||||
WebBackForwardList | saveState( BundleoutState) 保存此 Web视图 使用的状态 onSaveInstanceState(Bundle) . | ||||||||||
void | saveWebArchive( Stringfilename) 保存当前 视图作为 Web存档. | ||||||||||
void | saveWebArchive( Stringbasename, boolean autoname, ValueCallback< String> callback) 保存当前 视图作为 Web存档 | ||||||||||
void | setBackgroundColor(int color) 设置视图的背景颜色 | ||||||||||
void | setCertificate( SslCertificatecertificate) 这种方法被废弃APIlevel17。调用这个函数没有有用的效果,并将在以后的版本中被忽略。. | ||||||||||
void | setDownloadListener( DownloadListenerlistener) 当内容不能被渲染引擎处理和不应该下载时注册一个接口来使用 | ||||||||||
void | setFindListener( WebView.FindListenerlistener) 在网页上查找 操作 进展 通知 注册监听器 | ||||||||||
void | setHorizontalScrollbarOverlay(boolean overlay) 指定水平滚动条是否有叠加样式 | ||||||||||
void | setHttpAuthUsernamePassword( Stringhost, Stringrealm, Stringusername, Stringpassword) 为一个给定的主机和领域 存储 HTTP 身份验证凭据 | ||||||||||
void | setInitialScale(int scaleInPercent) 设置 WebView 初始比例 | ||||||||||
void | setLayerType(int layerType, Paintpaint) 为视图的层指定类别. | ||||||||||
void | setLayoutParams( ViewGroup.LayoutParamsparams) 设置 此视图关联的 布局参数 | ||||||||||
void | setMapTrackballToArrowKeys(boolean setMap) 默认的情况下 不推荐使用此方法 API level17。,实际将在未来的版本中支持. | ||||||||||
void | setNetworkAvailable(boolean networkUp) 通知WebView的网络状态 | ||||||||||
void | setOverScrollMode(int mode) 设置 该视图的 滚动模式 | ||||||||||
void | setPictureListener( WebView.PictureListenerlistener) 不推荐使用此方法 API level12。这个方法现在已经过时。. | ||||||||||
void | setScrollBarStyle(int style) 指定滚动条的样式. | ||||||||||
void | setVerticalScrollbarOverlay(boolean overlay) 指定 垂直滚动条 是否 有 叠加样式 . | ||||||||||
void | setWebChromeClient( WebChromeClientclient) 设置脚本处理. | ||||||||||
void | setWebViewClient( WebViewClientclient) 设置WebViewClient会接收到各种通知和请求 | ||||||||||
boolean | shouldDelayChildPressedState() 如果是 按下的状态 应推迟到子类 或其子类下 返回true | ||||||||||
boolean | showFindDialog( Stringtext, boolean showIme) 在这个 页面 开始 查找文本 | ||||||||||
void | stopLoading() 停止当前的加载. | ||||||||||
boolean | zoomIn() 执行放大该webView | ||||||||||
boolean | zoomOut() 执行缩小该webview |
Protected Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
int | computeHorizontalScrollOffset() 计算的水平滚动条上的滑块水平范围内的水平偏移量 | ||||||||||
int | computeHorizontalScrollRange() 计算水平滚动条的水平距离 | ||||||||||
int | computeVerticalScrollExtent() 计算的水平滚动条上的滑块垂直范围内的垂直距离 | ||||||||||
int | computeVerticalScrollOffset() 计算的垂直滚动条上的滑块水平范围内的垂直偏移 | ||||||||||
int | computeVerticalScrollRange() 计算的垂直滚动条的垂直距离. | ||||||||||
void | onAttachedToWindow() 当这个视图连接一个窗口则调用. | ||||||||||
void | onConfigurationChanged( ConfigurationnewConfig) 目前正在使用的应用程序的资源配置改变时调用 | ||||||||||
void | onDetachedFromWindow() 当这个视图脱离一个窗口则调用. | ||||||||||
void | onDraw( Canvascanvas) 实现绘制 | ||||||||||
void | onFocusChanged(boolean focused, int direction, RectpreviouslyFocusedRect) 当 系统的 一个视图的焦点状态改变 时 调用 | ||||||||||
void | onMeasure(int widthMeasureSpec, int heightMeasureSpec) 测量视图和它的内容来确定测量宽度和测量高度. | ||||||||||
void | onOverScrolled(int scrollX, int scrollY, boolean clampedX, boolean clampedY) 调用 overScrollBy(int, int, int, int, int, int, int, int, boolean) 回应 的 滚动 操作的结果 。 | ||||||||||
void | onScrollChanged(int l, int t, int oldl, int oldt) 当此视图内部内容滚动时回调此响应 | ||||||||||
void | onSizeChanged(int w, int h, int ow, int oh) 当视图的大小改变期间回调 | ||||||||||
void | onVisibilityChanged( ViewchangedView, int visibility) 当视图可见状态或视图的父类可见状态改变. | ||||||||||
void | onWindowVisibilityChanged(int visibility) 当窗口所包含的可见状态改变回调 (between GONE , INVISIBLE , and VISIBLE ). |
更多相关文章
- android abslistview gridview介绍
- Android布局(一)之基本视图View
- android获取屏幕尺寸、密度(判断手机屏幕类型)
- 详解 Android(安卓)Views 元素的 layout_weight 属性
- Android(安卓)OpenGL相机视角
- Android(安卓)中 MVC 的简单理解
- Android(安卓)fill_parent、wrap_content和match_parent的区别
- Android(安卓)Studio适配利器——如何设置不同机型的预览界面
- 精确适配不同的dpi和屏幕尺寸