android內容高度
① android文本的高度怎麼鋪滿屏幕
AlertDialog dialog = builder.create();
dialog.setView(view);
dialog.show();
WindowManager m = getWindowManager();
Display d = m.getDefaultDisplay(); //為獲取屏幕寬、高
android.view.WindowManager.LayoutParams p = dialog.getWindow().getAttributes(); //獲取對話框當前的參數值
p.height = (int) (d.getHeight() * 0.3); //高度設置為屏幕的0.3
p.width = (int) (d.getWidth() * 0.5); //寬度設置為屏幕的0.5
dialog.getWindow().setAttributes(p); //設置生效
這個可以給你參考一下,你應該是自定義樣式的dialog 你只需要在dialog.setView(view);之前把你的布局載入進去就可以了。
② Android屬性匯總
TextView屬性匯總
android:autoLink設置是否當文本為URL鏈接/email/電話號碼/map時,文本顯示為可點擊的鏈接。可選值(none/web/email/phone/map/all)
android:autoText如果設置,將自動執行輸入值的拼寫糾正。此處無效果,在顯示輸入法並輸入的時候起作用。
android:bufferType指定getText()方式取得的文本類別。選項editable 類似於StringBuilder可追加字元,也就是說getText後可調用append方法設置文本內容。spannable 則可在給定的字元區域使用樣式,參見這里1、這里2。
android:capitalize設置英文字母大寫類型。此處無效果,需要彈出輸入法才能看得到,參見EditView此屬性說明。
android:cursorVisible設定游標為顯示/隱藏,默認顯示。
android:digits設置允許輸入哪些字元。如「1234567890.+-*/% ()」
android:drawableBottom在text的下方輸出一個drawable,如圖片。如果指定一個顏色的話會把text的背景設為該顏色,並且同時和background使用時覆蓋後者。
android:drawableLeft在text的左邊輸出一個drawable,如圖片。
android:drawablePadding設置text與drawable(圖片)的間隔,與drawableLeft、 drawableRight、drawableTop、drawableBottom一起使用,可設置為負數,單獨使用沒有效果。
android:drawableRight在text的右邊輸出一個drawable。
android:drawableTop在text的正上方輸出一個drawable。
android:editable設置是否可編輯。
android:editorExtras設置文本的額外的輸入數據。
android:ellipsize設置當文字過長時,該控制項該如何顯示。有如下值設置:」start」—-省略號顯示在開頭;」end」 ——省略號顯示在結尾;」middle」—-省略號顯示在中間;」marquee」 ——以跑馬燈的方式顯示(動畫橫向移動)
android:freezesText設置保存文本的內容以及游標的位置。
android:gravity設置文本位置,如設置成「center」,文本將居中顯示。
android:hintText為空時顯示的文字提示信息,可通過textColorHint設置提示信息的顏色。此屬性在 EditView中使用,但是這里也可以用。
android:imeOptions附加功能,設置右下角IME動作與編輯框相關的動作,如actionDone右下角將顯示一個「完成」,而不設置默認是一個回車符號。這個在EditView中再詳細說明,此處無用。
android:imeActionId設置IME動作ID。
android:imeActionLabel設置IME動作標簽。
android:includeFontPadding設置文本是否包含頂部和底部額外空白,默認為true。
android:inputMethod為文本指定輸入法,需要完全限定名(完整的包名)。例如:com.google.android.inputmethod.pinyin,但是這里報錯找不到。
android:inputType設置文本的類型,用於幫助輸入法顯示合適的鍵盤類型。在EditView中再詳細說明,這里無效果。
android:linksClickable設置鏈接是否點擊連接,即使設置了autoLink。
android:marqueeRepeatLimit在ellipsize指定marquee的情況下,設置重復滾動的次數,當設置為 marquee_forever時表示無限次。
android:ems設置TextView的寬度為N個字元的寬度。這里測試為一個漢字字元寬度
android:maxEms設置TextView的寬度為最長為N個字元的寬度。與ems同時使用時覆蓋ems選項。
android:minEms設置TextView的寬度為最短為N個字元的寬度。與ems同時使用時覆蓋ems選項。
android:maxLength限制顯示的文本長度,超出部分不顯示。
android:lines設置文本的行數,設置兩行就顯示兩行,即使第二行沒有數據。
android:maxLines設置文本的最大顯示行數,與width或者layout_width結合使用,超出部分自動換行,超出行數將不顯示。
android:minLines設置文本的最小行數,與lines類似。
android:lineSpacingExtra設置行間距。
android:lineSpacingMultiplier設置行間距的倍數。如」1.2」
android:numeric如果被設置,該TextView有一個數字輸入法。此處無用,設置後唯一效果是TextView有點擊效果,此屬性在EdtiView將詳細說明。
android:password以小點」.」顯示文本
android:phoneNumber設置為電話號碼的輸入方式。
android:privateImeOptions設置輸入法選項,此處無用,在EditText將進一步討論。
android:scrollHorizontally設置文本超出TextView的寬度的情況下,是否出現橫拉條。
android:selectAllOnFocus如果文本是可選擇的,讓他獲取焦點而不是將游標移動為文本的開始位置或者末尾位置。 TextView中設置後無效果。
android:shadowColor指定文本陰影的顏色,需要與shadowRadius一起使用。
android:shadowDx設置陰影橫向坐標開始位置。
android:shadowDy設置陰影縱向坐標開始位置。
android:shadowRadius設置陰影的半徑。設置為0.1就變成字體的顏色了,一般設置為3.0的效果比較好。
android:singleLine設置單行顯示。如果和layout_width一起使用,當文本不能全部顯示時,後面用「…」來表示。如android:text="test_ singleLine "
android:singleLine="true" android:layout_width="20dp"將只顯示「t…」。如果不設置singleLine或者設置為false,文本將自動換行
android:text設置顯示文本.
android:textAppearance設置文字外。如 「?android:attr/textAppearanceLargeInverse」這里引用的是系統自帶的一個外觀,?表示系統是否有這種外觀,否則使用默認的外觀。可textAppearanceButton/textAppearanceInverse/textAppearanceLarge/textAppearanceLargeInverse/textAppearanceMedium/textAppearanceMediumInverse/textAppearanceSmall/textAppearanceSmallInverse
android:textColor設置文本顏色
android:textColorHighlight被選中文字的底色,默認為藍色
android:textColorHint設置提示信息文字的顏色,默認為灰色。與hint一起使用。
android:textColorLink文字鏈接的顏色.
android:textScaleX設置文字之間間隔,默認為1.0f。
android:textSize設置文字大小,推薦度量單位」sp」,如」15sp」
android:textStyle設置字形[bold(粗體) 0, italic(斜體) 1, bolditalic(又粗又斜) 2] 可以設置一個或多個,用「|」隔開
android:typeface設置文本字體,必須是以下常量值之一:normal 0, sans 1, serif 2, monospace(等寬字體) 3]
android:height設置文本區域的高度,支持度量單位:px(像素)/dp/sp/in/mm(毫米)
android:maxHeight設置文本區域的最大高度
android:minHeight設置文本區域的最小高度
android:width設置文本區域的寬度,支持度量單位:px(像素)/dp/sp/in/mm(毫米),與layout_width 的區別看這里。
android:maxWidth設置文本區域的最大寬度
android:minWidth設置文本區域的最小寬度
Android activity屬性匯總
android:allowTaskReparenting
是否允許activity更換從屬的任務,比如從簡訊息任務 切換到瀏覽器任務。
android:alwaysRetainTaskState
是否保留狀態不變, 比如切換回home, 再從新打開, activity處於最後的狀態
android:clearTaskOnLanunch
比如 P 是 activity, Q 是被P 觸發的 activity, 然後返回Home, 從新啟動 P, 是否顯示 Q
android:configChanges
當配置list發生修改時,是否調用 onConfigurationChanged() 方法 比如 "locale|navigation|orientation".
android:enabled
activity 是否可以被實例化,
android:excludeFromRecents
是否可被顯示在最近打開的activity列表裡
android:exported
是否允許activity被其它程序調用
android:finishOnTaskLaunch
是否關閉已打開的activity當用戶重新啟動這個任務的時候
android.icon
android:label
android:launchMode
activity啟動方式, "standard" "singleTop" "singleTask" "singleInstance"
其中前兩個為一組, 後兩個為一組
android:multiprocess
允許多進程
android:name
activity的類名, 必須指定
androidnHistory
是否需要移除這個activity當用戶切換到其他屏幕時。 這個屬性是 API level 3 中引入的
android:permission
android:process
一 個activity運行時所在的進程名,所有程序組件運行在應用程序默認的進程中,這個進程名跟應用程序的包名一致。中的元素process屬性能夠為所有組件設定一個新的默認值。但是任何組件都可以覆蓋這個默認值,允許你將你的程序放在多進程中運行。 如果這個屬性被分配的名字以:開頭,當這個activity運行時, 一個新的專屬於這個程序的進程將會被創建。 如果這個進程名以小寫字母開頭,這個activity將會運行在全局的進程中,被它的許可所提供。
android:screenOrientation
activity顯示的模式, "unspecified" 默認值 "landscape" 風景畫模式,寬度比高度大一些 "portrait" 肖像模式, 高度比寬度大。 "user" 用戶的設置 "behind" "sensor" "nosensor"
android:stateNotNeeded
是否 activity被銷毀和成功重啟並不保存狀態
android:taskAffinity
activity的親屬關系, 默認情況同一個應用程序下的activity有相同的關系
android:theme
activity的樣式主題, 如果沒有設置,則activity的主題樣式從屬於應用程序, 參見元素的theme屬性
android:windowSoftInputMode
activity主窗口與軟鍵盤的交互模式, 自從API level 3 被引入
活動的主窗口如何與包含屏幕上的軟鍵盤窗口交互。這個屬性的設置將會影響兩件事情:
1> 軟鍵盤的狀態——是否它是隱藏或顯示——當活動(Activity)成為用戶關注的焦點。
2> 活動的主窗口調整——是否減少活動主窗口大小以便騰出空間放軟鍵盤或是否當活動窗口的部分被軟鍵盤覆蓋時它的內容的當前焦點是可見的。
它的設置必須是下面列表中的一個值,或一個」state…」值加一個」adjust…」值的組合。在任一組設置多個值——多個」state…」values,例如&mdash有未定義的結果。各個值之間用|分開。例如: <activity android:windowSoftInputMode="stateVisible|adjustResize" . . . >
在這設置的值(除"stateUnspecified"和"adjustUnspecified"以外)將覆蓋在主題中設置的值
值 描述
"stateUnspecified" 軟鍵盤的狀態(是否它是隱藏或可見)沒有被指定。系統將選擇一個合適的狀態或依賴於主題的設置。這個是為了軟體盤行為默認的設置。
"stateUnchanged" 軟鍵盤被保持無論它上次是什麼狀態,是否可見或隱藏,當主窗口出現在前面時。
"stateHidden" 當用戶選擇該Activity時,軟鍵盤被隱藏——也就是,當用戶確定導航到該Activity時,而不是返回到它由於離開另一個Activity。
"stateAlwaysHidden" 軟鍵盤總是被隱藏的,當該Activity主窗口獲取焦點時。
"stateVisible" 軟鍵盤是可見的,當那個是正常合適的時(當用戶導航到Activity主窗口時)。
"stateAlwaysVisible" 當用戶選擇這個Activity時,軟鍵盤是可見的——也就是,也就是,當用戶確定導航到該Activity時,而不是返回到它由於離開另一個Activity。
"adjustUnspecified" 它不被指定是否該Activity主窗口調整大小以便留出軟鍵盤的空間,或是否窗口上的內容得到屏幕上當前的焦點是可見的。系統將自動選擇這些模式中一種主要依賴於是否窗口的內容有任何布局視圖能夠滾動他們的內容。如果有這樣的一個視圖,這個窗口將調整大小,這樣的假設可以使滾動窗口的內容在一個較小的區域中可見的。這個是主窗口默認的行為設置。
"adjustResize" 該Activity主窗口總是被調整屏幕的大小以便留出軟鍵盤的空間。
"adjustPan" 該Activity主窗口並不調整屏幕的大小以便留出軟鍵盤的空間。相反,當前窗口的內容將自動移動以便當前焦點從不被鍵盤覆蓋和用戶能總是看到輸入內容的部分。這個通常是不期望比調整大小,因為用戶可能關閉軟鍵盤以便獲得與被覆蓋內容的交互操作。
Android EditText 屬性匯總
android:layout_gravity="center_vertical"
設置控制項顯示的位置:默認top,這里居中顯示,還有bottom
android:hint="請輸入數字!"
設置顯示在空間上的提示信息
android:numeric="integer"
設置只能輸入整數,如果是小數則是:decimal
android:singleLine="true"
設置單行輸入,一旦設置為true,則文字不會自動換行。
android:password="true"
設置只能輸入密碼
android:textColor = "#ff8c00"
字體顏色
android:textStyle="bold"
字體,bold, italic, bolditalic
android:textSize="20dip"
大小
android:capitalize = "characters"
以大寫字母寫
android:textAlign="center"
EditText沒有這個屬性,但TextView有
android:textColorHighlight="#cccccc"
被選中文字的底色,默認為藍色
android:textColorHint="#ffff00"
設置提示信息文字的顏色,默認為灰色
android:textScaleX="1.5"
控制字與字之間的間距
android:typeface="monospace"
字型,normal, sans, serif, monospace
android:background="@null"
空間背景,這里沒有,指透明
android:layout_weight="1"
權重,控制控制項之間的地位,在控制控制項顯示的大小時蠻有用的。
android:textAppearance="?android:attr/textAppearanceLargeInverse"
文字外觀,這里引用的是系統自帶的一個外觀,?表示系統是否有這種外觀,否則使用默認的外觀。不知道這樣理解對不對?
通過EditText的layout xml文件中的相關屬性來實現:
1. 密碼框屬性 android:password="true" 這條可以讓EditText顯示的內容自動為星號,輸入時內容會在1秒內變成*字樣。
2. 純數字 android:numeric="true" 這條可以讓輸入法自動變為數字輸入鍵盤,同時僅允許0-9的數字輸入
3. 僅允許 android:capitalize="cwj1987" 這樣僅允許接受輸入cwj1987,一般用於密碼驗證
下面是一些擴展的風格屬性
android:editable="false" 設置EditText不可編輯
android:singleLine="true" 強制輸入的內容在單行
android:ellipsize="end" 自動隱藏尾部溢出數據,一般用於文字內容過長一行無法全部顯示時
---------------------
③ Android開發中怎樣獲取WebView的內容寬度高度
webview.getContentHeight(); //獲取內容高度
獲取內容寬度的話。。除非通過js伺服器那邊返回,,
④ Android開發中怎樣獲取WebView的內容寬度高度
Android開發時,從WebView,我不但想要知道ContentHeight,還想知道ContentWidth。不幸的是,從一個 WebView獲取contentWidth是相當困難,因為SDK中沒有一個像這樣的方法,所以本文為大家呈現了一種實用的解決此問題的方法。
The extensive Android SDK allows you to do many great things with particular views like the WebView for displaying webpages on Android powered devices.
Android SDK 的擴展,通過使用特定的view,允許你做許多事情。比如,WebView,用來在Android手機上展示網頁。
As of lately while I was experimenting with the Android SDK I was using a WebView in one of my activities.
最近,我在體驗Android SDK的時候,在一個Activity中用到了WebView。
From that particular WebView I needed to know the ContentHeight but also the ContentWidth.
從WebView,我不但想要知道ContentHeight,還想知道ContentWidth。
Now getting the contentHeight is easy like so:
現在的情況是:獲取contentHeight很easy,如下:
webview.getContentHeight();
Unfortunately getting the contentWidth from a WebView is rather more difficult, since there is not a simple method like:
不幸的是,從一個WebView獲取contentWidth是相當困難,因為SDK中沒有一個像這樣的方法:
// THIS METHOD DOES NOT EXIST!
webview.getContentWidth();
There are ways to get the contentWidth of the rendered HTML page and that is through javascript. If Javascript can get it for you, then you can also have them in your Java code within your Android App.
當然是有方法獲取contentWidth的,就是通過Javascript來獲取。如果你能夠支持Javascript,那麼你就可以在你的 Android 程序中,使用java代碼來獲取寬度。
By using a JavascriptInterface with your WebView you can let Javascript communicate with your Android App Java code by invoking methods on a registered object that you can embed using the JavascriptInterface.
通過在你的WebView中使用JavascriptInterface,通過調用你注冊的JavascriptInterface方法,可以讓 Javascript和你的Android程序的java代碼相互連通。
So how does this work?
怎麼做呢?
For a quick example I created a simple Activity displaying a webview that loads a webpage wich displays a log message and a Toast message with the contentWidth wich was determined using Javascript. Note that this happens AFTER the page was finished loading, because before the page is finished loading the width might not be fully rendered. Also keep in mind that if there is content loaded asynchronously that it doesn't affect widths (most likely only heights will be affected as the width is almost always fully declared in CSS files unless you have a 100% width webpage).
搭建一個快速的例子:創建一個簡單的展示webView的Activity,一個LogCat消息,一個Toast消息,用來顯示我們通過 Javascript獲取的寬度。注意:這些會在網頁完全載入之後顯示,因為在網頁載入完成之前,寬度可能不能夠正確的獲取到。同時也要注意到,如果是異 步載入,這並不影響寬度(最多高度會受影響,因為寬度總是在CSS文件中做了完全的定義,除非在網頁中你用了100%寬度。)。
Below is the code of the Activity Main.java:
下面的代碼是Activity的代碼:
01 package com.pimmos.android.samples.webviewcontentwidth;
02 import android.app.Activity;
03 import android.os.Bundle;
04 import android.util.Log;
05 import android.webkit.WebView;
06 import android.webkit.WebViewClient;
07 import android.widget.Toast;
08 public class Main extends Activity {
09 private final static String LOG_TAG = "WebViewContentWidth";
10 private final Activity activity = this;
11 private static int webviewContentWidth = 0;
12 private static WebView webview;
13
14 /** Called when the activity is first created. */
15 @Override
16 public void onCreate(Bundle savedInstanceState) {
17 super.onCreate(savedInstanceState);
18 setContentView(R.layout.main);
19 webview = (WebView) findViewById(R.id.webview);
20 webview.getSettings().setJavaScriptEnabled(true);
21 webview.setSaveEnabled(true);
22 webview.addJavascriptInterface(new JavaScriptInterface(), "HTMLOUT");
23 webview.setWebViewClient(new WebViewClient() {
24 @Override
25 public void onPageFinished(WebView view, String url) {
26 webview.loadUrl("javascript:window.HTMLOUT.getContentWidth(document.getElementsByTagName('html')[0].scrollWidth);");
27 }
28 });
29 webview.loadUrl("http://www.pimmos.com/");
30 }
31
32 class JavaScriptInterface {
33 public void getContentWidth(String value) {
34 if (value != null) {
35 webviewContentWidth = Integer.parseInt(value);
36 Log.d(LOG_TAG, "Result from javascript: " + webviewContentWidth);
37 Toast.makeText( activity,
38 "ContentWidth of webpage is: " +
39 webviewContentWidth +
40 "px", Toast.LENGTH_SHORT).show();
41 }
42 }
43 }
44 }
Below is the XML layout used with the Activity wich only contains a simple WebView:
下面是Activity的Layout,主要就是一個簡單的WebView:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<WebView android:id="@+id/webview"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
</LinearLayout>
AndroidManifest.xml layout:
AndroidManifest.xml代碼:
<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="com.pimmos.android.samples.webviewcontentwidth"
android:versionCode="1" android:versionName="1.0">
<application android:icon="@drawable/icon"
android:label="@string/app_name">
<activity android:name=".Main"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category
android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<uses-sdk android:minSdkVersion="7" />
<uses-permission android:name="android.permission.INTERNET" />
</manifest>
You can also download the full source of Android Application - WebViewContentWidth!
⑤ iOS與Android用戶界面(UI)設計規范
相信很多人都在開發設計APP時會遇到很多界面上的問題,要以多大尺寸來設計?解析度是多少?該怎麼切圖給開發......
下面的文字就給出一點點技巧總結,但也要給合團隊在開發時的習慣。每個工程師們所使用的控制項,書寫布局習慣來實際移交的圖是不一樣的,但八九不離十,都是遵循一個原則,便捷開發、自適應強的開發模式。
一、尺寸及解析度
設計圖單位:像素72dpi。在設計的時候並不是每個尺寸都要做一套,尺寸按自己的手機來設計,比較方便預覽效果,一般用640*960或者640*1136的尺寸來設計,現在iPhone 6和Plus出來後有很多人會使用6屏幕尺寸來設計。
如果是我來做的話,我會使用640×1136,對Plus做單獨的修改適配,因為Plus的屏幕實在是大了,遵循屏大顯示更多內容的原則這里本應該是需要修的了,有更好辦法的話希望大家可以分享一下。
Ps:作圖的時候盡可能確保都是用形狀工具(快捷鍵 U)畫的,這樣更方便後期的切圖或者尺寸變更。
二、界面基本組成元素
iPhone的app界面一般由四個元素組成,分別是:狀態欄(status bar)、導航欄(navigation)、主菜單欄(submenu)、內容區域(content)。
PS:在最新的iOS7的風格中,蘋果已經開始慢慢弱化狀態欄的存在,將狀態欄和導航欄合在了一起,但是再怎麼變,尺寸高度也還是沒有變的,只不過大家在設計iOS7風格的界面的時候多多注意下~
三、圖標尺寸
四、字體大小
iPhone 上的字體英文為: HelveticaNeue 至於中文,Mac下用的是黑體-簡,Windows下則為華文黑體,所有字體要用雙數字型大小。
下圖是網路移動用戶體驗部(MUX)做過的一個小調查,可以看出用戶在iOS app中可接受的文字大小。
五、切圖
切圖是APP設計中的一個重要過程,關繫到APP的界面實現,及各種適配性還有各種性能
蘋果在沒6 Plus前,我們只需要提供兩種圖,普通圖及視網膜屏幕圖。
以640×1136(640×960是一樣的)做的設計圖的話就會好辦一點。直接出設計圖上的原大小圖標,比如我們命名一個圖片叫 img-line.png,我們給開發的圖就要改變這個名字叫 [email protected] 就是在後綴名前加上@2x表示視網膜屏的圖,iPhone4的還需要把這個圖尺寸按比例縮小50%,得到正真的img-line.png。然後把這兩個圖移交給開發,iPhone6的圖在規范里是與5s使用的是一樣的,也是@2x圖。有些UI則需要做適當的適配,比如拉長,拉高,這個開發會去做。
對於iPhone 6 plus的話范里給出的是@3x相信大家也知道是怎麼回事,但如果要使用PS放大的話,大家做圖的時候就需要使用形狀工具來做,放大後還需要仔細微調,這里就不多做講解
PS: 在出可按的圖片切圖時需要注意圖片的可按區域大小,有時圖標很小,實際切出來的放在上面,用手指是按不到的,我們就需要對圖片單獨處理,拓寬圖片的有效區域,這里是拓寬非放大,就是改變畫布大小使圖片尺寸面積擴大,使圖片四周拓寬多餘的透明區域 ,從而改變可按大小。
六、顏色值問題
iOS顏色值取 RGB各顏色的值比如某個色值,給予IOS開發的色值為 R:12 G:34 B:56 給出的值就是 12,34,56(有時也要根據開發的習慣,有時也用十六進制)
七、內部設計
1、所有能點擊的圖片不得小於44px(Retina需要88px)
2、單獨存在的部件必須是雙數尺寸
3、兩倍圖以@2x作為命名後綴
4、充分考慮每個控制按鈕在4中狀態下的樣式,如圖:
一、尺寸及解析度
Android界面尺寸:480*800、720*1280、1080*1920
Android比iPhone的寸尺多了很多套,建議取用720*1280這個尺寸,這個尺寸720*1280中顯示完美,在1080*1920中看起來比較清晰,切圖後的圖片文件大小也適中,應用的內存消耗也不會過高。
二、界面基本組成元素
Android的app界面和iPhone的基本相同:狀態欄、導航欄、主菜單、內容區域。
Android中我們取用的720*1280的尺寸設計,那我們就說說在這個尺寸下這些元素的尺寸。
狀態欄高度為:50px
導航欄高度為:96px
主菜單欄高度為:96px
內容區域高度為:1038px (1280-50-96-96=1038)
Android最近出的手機都幾乎去掉了實體鍵,把功能鍵移到了屏幕中,當然高度也是和菜單欄一樣的:96px
Android為了在界面上區別於iOS,Android 4.0開始提出的一套HOLO的UI風格,一些app的最新版本都採用了這一風格,這一風格最明顯的變化就是將下方的主菜單移到了導航欄下面,這樣的方式解決了現在很多手機去除實體鍵後再屏幕中顯示而出現的雙底欄的尷尬情景。
三、圖標尺寸
Android設計規范中, 使用的單位是dp, dp在安卓機上不同的密度轉換後的px是不一樣的。
四、字體大小
Android 上的字體為:Droid sans fallback,是谷歌自己的字體,與微軟雅黑很像。
同樣,網路移動用戶體驗部(MUX)的調查中,可以看出用戶可接受的文字相應問題。
具體大小,還是那句話,找自己喜歡的app界面,手機截圖後放進PS自己對比調節字體大小,切記,一定是高清截圖。
五、切圖
Android設計規范中單位是dp,dp在安卓機上不同的密度轉換後的px 是不一樣的,所以按照設計圖的px轉換成dp也是不一樣的,這個可以使用轉換工具轉換,開發一般會有,也有些開發會使用px做單位,因為做了前期的轉換工作。
六、顏色值問題
Android顏色值取值為十六進制的值 比如一綠色的值, 給開發的值為 #5bc43e
⑥ android狀態欄高度是多少
Android中兩種獲取狀態欄高度的方法
方法一:
(Contextcontext){
doublestatusBarHeight=Math.ceil(25*context.getResources().getDisplayMetrics().density);
returnstatusBarHeight;
}
這種方法很簡單,只有一行代碼:
狀態欄高度=取大於其的最小整數(25*上下文_獲取應用包的資源實例_獲取當前屏幕尺寸_屏幕密度比例)
其中density並不是真實的屏幕密度,而是一個相對密度,基準密度為160dpi,比如我測試的手機為HTC one m8,查的屏幕密度為441dpi,相對160為2.75,density就取為3。各解析度的density取值為:
ldpi(dpi=120,density=0.75)
mdpi(dpi=160,density=1)
hdpi(dpi=240,density=1.5)
xhdpi(dpi=320,density=2)
xxhdpi(dpi=480,density=3)
所以得到的狀態欄高度為25*3=75
由這種方法得到的狀態欄高度具有較大局限性,比如因為某種需要去掉狀態欄或本身沒有狀態欄,此時狀態欄高度應為0,但是該方法依然能夠得到一個非零的狀態欄高度。
方法二:
privateintgetStatusBarHeight(Contextcontext){
intresult=0;
intresourceId=context.getResources().getIdentifier("status_bar_height","dimen","android");
if(resourceId>0){
result=context.getResources().getDimensionPixelSize(resourceId);
}
returnresult;
}
這里我們用到了getIdentifier()的方法來獲取資源的ID,其中第一個參數是要獲取資源對象的名稱,比如我們要獲取狀態欄的相關內容,這里填入"status_bar_height";第二個參數是我們要獲取什麼屬性,我們要獲取高度內容,所以填入"dimen";第三個是包名,狀態欄是系統內容,故填入「android」。
另外一個用到的辦法是getDimensionPixelSize(),由函數名就能知道是根據資源ID獲得資源像素尺寸,這里就直接獲得狀態欄的高度。
這種方法在狀態欄不存在的時候就會獲得其高度為0.
⑦ Android開發中怎樣獲取WebView的內容寬度高度
webview.getContentHeight(); //獲取內容高度 獲取內容寬度的話。。除非通過js伺服器那邊返回,,
⑧ Android開發中怎樣獲取WebView的內容寬度高度
可以根據webview的getwidth和getHeight的寬度和高度,來獲取顯示的高度和寬度,要注意的是需要等待界面載入完才能獲取到。
⑨ android 自定義view 的高度,寬度怎麼設置
Android中View是顯示控制項,需要用一個layout布局來裝載,layout尺寸大寫的設置如下:
1. 盡量使用wrap_content、match_parent、weight 來規定layout的大小。
2. 要確保布局的靈活性並適應各種尺寸的屏幕,應使用 「wrap_content」 和 「match_parent」 控制某些視圖組件的寬度和高度。
3. 使用 「wrap_content」,系統就會將視圖的寬度或高度設置成所需的最小尺寸以適應視圖中的內容,而 「match_parent」(在低於 API 級別 8 的級別中稱為「fill_parent」)則會展開組件以匹配其父視圖的尺寸。
4. 如果使用 「wrap_content」 和 「match_parent」 尺寸值而不是硬編碼的尺寸,視圖就會相應地僅使用自身所需的空間或展開以填滿可用空間。此方法可讓布局正確適應各種屏幕尺寸和屏幕方向。
5. 如果某些地方必須要規定控制項的大小,那麼要使用dp 或者 dip單位。
⑩ Android開發中怎樣獲取WebView的內容寬度高度
Android SDK 的擴展通過使用特定的view允許你做許多事情比如WebView用來在Android手機上展示網頁
As of lately while I was experimenting with the Android SDK I was using a WebView in one of my activities
最近我在體驗Android SDK的時候在一個Activity中用到了WebView
From that particular WebView I needed to know the ContentHeight but also the ContentWidth
從WebView我不但想要知道ContentHeight還想知道ContentWidth
Now getting the contentHeight is easy like so:
現在的情況是獲取contentHeight很easy如下
webviewgetContentHeight();
Unfortunately getting the contentWidth from a WebView is rather more difficult since there is not a simple method like:
不幸的是從一個WebView獲取contentWidth是相當困難因為SDK中沒有一個像這樣的方法
// THIS METHOD DOES NOT EXIST!
webviewgetContentWidth();
There are ways to get the contentWidth of the rendered HTML page and that is through Javascript If Javascript can get it for you then you can also have them in your Java code within your Android App
當然是有方法獲取contentWidth的就是通過Javascript來獲取如果你能夠支持Javascript那麼你就可以在你的Android 程序中使用java代碼來獲取寬度
By using a JavascriptInterface with your WebView you can let Javascript communicate with your Android App Java code by invoking methods on a registered object that you can embed using the JavascriptInterface
通過在你的WebView中使用JavascriptInterface通過調用你注冊的JavascriptInterface方法可以讓Javascript和你的Android程序的java代碼相互連通
So how does this work?
怎麼做呢?
For a quick example I created a simple Activity displaying a webview that loads a webpage wich displays a log message and a Toast message with the contentWidth wich was determined using Javascript Note that this happens AFTER the page was finished loading because before the page is finished loading the width might not be fully rendered Also keep in mind that if there is content loaded asynchronously that it doesnt affect widths (most likely only heights will be affected as the width is almost always fully declared in CSS files unless you have a % width webpage)
搭建一個快速的例子創建一個簡單的展示webView的Activity一個LogCat消息一個Toast消息用來顯示我們通過 Javascript獲取的寬度注意這些會在網頁完全載入之後顯示因為在網頁載入完成之前寬度可能不能夠正確的獲取到同時也要注意到如果是異 步載入這並不影響寬度(最多高度會受影響因為寬度總是在CSS文件中做了完全的定義除非在網頁中你用了%寬度)
Below is the code of the Activity Mainjava:
下面的代碼是Activity的代碼
package ;
import androidappActivity;
import androidosBundle;
import androitilLog;
import androidwebkitWebView;
import androidwebkitWebViewClient;
import androidwidgetToast;
publicclass Main extends Activity {
privatefinalstatic String LOG_TAG = "WebViewContentWidth";
privatefinal Activity activity = this;
privatestaticint webviewContentWidth = ;
privatestatic WebView webview;
/** Called when the activity is first created */
@Override
publicvoid onCreate(Bundle savedInstanceState) {
superonCreate(savedInstanceState);
setContentView(Rlayoutmain);
webview = (WebView) findViewById(Ridwebview);
webviewgetSettings()setJavaScriptEnabled(true);
webviewsetSaveEnabled(true);
webviewaddJavascriptInterface(new JavaScriptInterface() "HTMLOUT");
webviewsetWebViewClient(new WebViewClient() {
@Override
publicvoid onPageFinished(WebView view String url) {
webviewloadUrl("javascript:windowHTMLOUTgetContentWidth(documentgetElementsByTagName(html)[]scrollWidth);");
}
});
webviewloadUrl(";);
}
class JavaScriptInterface {
publicvoid getContentWidth(String value) {
if (value != null) {
webviewContentWidth = IntegerparseInt(value);
Logd(LOG_TAG "Result from javascript: " + webviewContentWidth);
ToastmakeText( activity
"ContentWidth of webpage is: " +
webviewContentWidth +
"px" ToastLENGTH_SHORT)show();
}
}
}
}
Below is the XML layout used with the Activity wich only contains a simple WebView:
下面是Activity的Layout主要就是一個簡單的WebView
<?xml version="" encoding="utf"?>
<LinearLayout
xmlns:android=";
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<WebView android:id="@+id/webview"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
</LinearLayout>
AndroidManifestxml layout:
AndroidManifestxml代碼
<?xml version="" encoding="utf"?>
<manifest
xmlns:android=";
package=""
android:versionCode="" android:versionName="">
<application android:icon="@drawable/icon"
android:label="@string/app_name">
<activity android:name="Main"
android:label="@string/app_name">
<intentfilter>
<action android:name="androidintentactionMAIN" />
<category
android:name="androidintentcategoryLAUNCHER" />
</intentfilter>
</activity>
</application>
<usessdk android:minSdkVersion="" />
<usespermission android:name="androidpermissionINTERNET" />
</manifest>
You can also download the full source of Android Application WebViewContentWidth!