當前位置:首頁 » 安卓系統 » androidoptions

androidoptions

發布時間: 2022-10-19 10:46:24

⑴ 關於Android 中 Options.inSampleSize怎麼用

如果圖片太大會造成OOM內存溢出的錯誤,需要用Bitmap的壓縮機制。 解決方案: 1.使用BitmapFactory.decodeStream替代createBitmap方法 原因是該方法直讀取圖片位元組,調用JNI>>nativeDecodeAsset()來完成decode,無需再使用java層的createBitmap。 2.使用壓縮讀取技術 BitmapFactory.Options options = new BitmapFactory.Options(); options.inJustDecodeBounds = true; BitmapFactory.decodeFile(imageSdUri, options); final int height = options.outHeight; final int width = options.outWidth; options.inSampleSize = 1; int w = 320; int h = 480; h = w*height/width;//計算出寬高等比率 int a = options.outWidth/ w; int b = options.outHeight / h; options.inSampleSize = Math.max(a, b); options.inJustDecodeBounds = false; Bitmap bitmap = BitmapFactory.decodeFile(imageSdUri, options); 3.及時釋放Bitamp Bitmap對象在不使用時,我們應該先調用recycle()釋放內存,然後才它設置為null.雖然recycle()從源碼上看,調用它應該能立即釋放Bitmap的主要內存,但是測試結果顯示它並沒能立即釋放內存。但是我它應該還是能大大的加速Bitmap的主要內存的釋放。

⑵ 關於Android 中 Options.inSampleSize怎麼用

Android 中 Options.inSampleSize使用的完整代碼是:
public static Bitmap createImageThumbnail(String filePath){
Bitmap bitmap = null;
BitmapFactory.Options opts = new BitmapFactory.Options();
opts.inJustDecodeBounds = true;
BitmapFactory.decodeFile(filePath, opts);

opts.inSampleSize = computeSampleSize(opts, -1, 128*128);
opts.inJustDecodeBounds = false;

try {
bitmap = BitmapFactory.decodeFile(filePath, opts);
}catch (Exception e) {
// TODO: handle exception
}
return bitmap;
}

public static int computeSampleSize(BitmapFactory.Options options, int minSideLength, int maxNumOfPixels) {
int initialSize = computeInitialSampleSize(options, minSideLength, maxNumOfPixels);
int roundedSize;
if (initialSize <= 8) {
roundedSize = 1;
while (roundedSize < initialSize) {
roundedSize <<= 1;
}
} else {
roundedSize = (initialSize + 7) / 8 * 8;
}
return roundedSize;
}

private static int computeInitialSampleSize(BitmapFactory.Options options,int minSideLength, int maxNumOfPixels) {
double w = options.outWidth;
double h = options.outHeight;
int lowerBound = (maxNumOfPixels == -1) ? 1 : (int) Math.ceil(Math.sqrt(w * h / maxNumOfPixels));
int upperBound = (minSideLength == -1) ? 128 :(int) Math.min(Math.floor(w / minSideLength), Math.floor(h / minSideLength));
if (upperBound < lowerBound) {
// return the larger one when there is no overlapping zone.
return lowerBound;
}
if ((maxNumOfPixels == -1) && (minSideLength == -1)) {
return 1;
} else if (minSideLength == -1) {
return lowerBound;
} else {
return upperBound;
}
}

⑶ 關於Android 中 Options.inSampleSize怎麼用

Android中Options.inSampleSize的用法為:
1、設置恰當的inSampleSize可以使BitmapFactory分配更少的空間以消除該錯誤。inSampleSize的具體含義請參考SDK文檔。例如:
BitmapFactory.Options opts = new BitmapFactory.Options();
opts.inSampleSize = 4;
Bitmap bitmap = BitmapFactory.decodeFile(imageFile, opts);
2、設置恰當的inSampleSize是解決該問題的關鍵之一。BitmapFactory.Options提供了另一個成員inJustDecodeBounds。
BitmapFactory.Options opts = new BitmapFactory.Options();
opts.inJustDecodeBounds = true;
Bitmap bitmap = BitmapFactory.decodeFile(imageFile, opts);
3、設置inJustDecodeBounds為true後,decodeFile並不分配空間,但可計算出原始圖片的長度和寬度,即opts.width和opts.height。有了這兩個參數,再通過一定的演算法,即可得到一個恰當的inSampleSize。
查看Android源碼,Android提供了一種動態計算的方法。
public static int computeSampleSize(BitmapFactory.Options options,

int minSideLength, int maxNumOfPixels) {

int initialSize = computeInitialSampleSize(options, minSideLength,

maxNumOfPixels);

int roundedSize;

if (initialSize <= 8) {

roundedSize = 1;

while (roundedSize < initialSize) {

roundedSize <<= 1;

}

} else {

roundedSize = (initialSize + 7) / 8 * 8;

}

return roundedSize;

}

private static int computeInitialSampleSize(BitmapFactory.Options options,

int minSideLength, int maxNumOfPixels) {

double w = options.outWidth;

double h = options.outHeight;

int lowerBound = (maxNumOfPixels == -1) ? 1 :

(int) Math.ceil(Math.sqrt(w * h / maxNumOfPixels));

int upperBound = (minSideLength == -1) ? 128 :

(int) Math.min(Math.floor(w / minSideLength),

Math.floor(h / minSideLength));

if (upperBound < lowerBound) {

// return the larger one when there is no overlapping zone.

return lowerBound;

}

if ((maxNumOfPixels == -1) &&

(minSideLength == -1)) {

return 1;

} else if (minSideLength == -1) {

return lowerBound;

} else {

return upperBound;

}

}

⑷ 關於Android 中 Options.inSampleSize怎麼用

你好,很高興為你解答
你可以試試這樣做
Options.inSampleSize=2;//圖片寬高都為原來的二分之一,即圖片為原來的四分之一

⑸ 關於Android 中 Options.inSampleSize怎麼用

Options.inSampleSize=2;//圖片寬高都為原來的二分之一,即圖片為原來的四分之一

祝你愉快,滿意請採納。

⑹ 關於Android 中 Options.inSampleSize怎麼用

轉自: https://..com/question/2204559676913369588.html

這個是讀取bitmap時用到的屬性,是為了對原圖降采樣.

比如原圖是一個 4000 * 4000 點陣的圖,佔用內存就是 4000 * 4000 * 單個像素佔用位元組數

單個像素佔用位元組數取決於你用的是  RGB565 , ARGB8888 等. 4000 * 4000 這個解析度已很接近目前市面主流機器的默認照片解析度.

假設你用的是 RGB565 解析這張圖,那一個點就佔用2個位元組.如果完整解析這個圖片,就需要 大約3.2MB的內存.

如果你用了一個GridView,同時顯示了30張這種圖,那幾乎可以確定你會收到一個OOM異常.

所以需要對這種大圖進行降采樣,以減小內存佔用.畢竟拇指大小的地方根本用不著顯示那麼高的解析度.

因為直接從點陣中隔行抽取最有效率,所以為了兼顧效率, inSampleSize 這個屬性只認2的整數倍為有效.

比如你將 inSampleSize 賦值為2,那就是每隔2行采1行,每隔2列采一列,那你解析出的圖片就是原圖大小的1/4.

這個值也可以填寫非2的倍數,非2的倍數會被四捨五入.

綜上,用這個參數解析bitmap就是為了減少內存佔用.

一下是我的一個根據指定大小對圖片文件降采樣讀取的一個函數,供參考.

/**

* author: liuxu

* de-sample according to given width and height. if required width or height is

* smaller than the origin picture's with or height, de-sample it.

* NOTE: if image quality is your first concern, do not use this method.

* @param path full path for the picture

* @param width the required width

* @param height the required height

* @return bitmap

*/

public static Bitmap decodeBitmapForSize(String path, int width, int height) {

final BitmapFactory.Options options = new BitmapFactory.Options();

if (width != 0 && height != 0) {

// decode with inJustDecodeBounds=true to check size

options.inJustDecodeBounds = true;

BitmapFactory.decodeFile(path, options);

// calculate inSampleSize according to the requested size

options.inSampleSize = calculateInSampleSize(options, width, height);

options.inJustDecodeBounds = false;

}

// decode bitmap with the calculated inSampleSize

options.inPreferredConfig = Config.RGB_565;

options.inPurgeable = true;

options.inInputShareable = true;

return BitmapFactory.decodeFile(path, options);

}

/**

* author: liuxu

* de-sample according to given width and height

* @param options options

* @param reqWidth the required width

* @param reqHeight the required height

* @return the calculated sample size

*/

private static int calculateInSampleSize(BitmapFactory.Options options,

int reqWidth, int reqHeight) {

// raw height and width of image

final int height = options.outHeight;

final int width = options.outWidth;

int initSize = 1;

if (height > reqHeight || width > reqWidth) {

if (width > height) {

initSize = Math.round((float) height / (float) reqHeight);

} else {

initSize = Math.round((float) width / (float) reqWidth);

}

}

/*

* the function rounds up the sample size to a power of 2 or multiple of 8 because

* BitmapFactory only honors sample size this way. For example, BitmapFactory

* down samples an image  by  2 even though the request is 3.

*/

int roundedSize;

if (initSize <= 8) {

roundedSize = 1;

while (roundedSize < initSize) {

roundedSize <<= 1;

}

} else {

roundedSize = (initSize + 7) / 8 * 8;

}

return roundedSize;

}

⑺ 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中OptionsMenu(包括點擊more展開的部分)字體顏色之類的如何設置

你可以把你想要的字體及顏色做成圖片,然後添加成它icon 的背景圖,這樣也可以實現改變字體顏色的效果! 這樣可以實現吧,因為沒有直接修改的方法吧!如果找到的話,希望你分享下!

熱點內容
sqlwhereor效率 發布:2025-03-10 09:57:06 瀏覽:103
12306java 發布:2025-03-10 09:52:39 瀏覽:602
php鍵值 發布:2025-03-10 09:51:14 瀏覽:629
FTP對吧 發布:2025-03-10 09:50:28 瀏覽:94
單機游戲怎麼解壓安裝 發布:2025-03-10 09:49:41 瀏覽:672
我的世界所有伺服器都能刷tnt么 發布:2025-03-10 09:25:41 瀏覽:288
相冊加密oppo 發布:2025-03-10 09:06:45 瀏覽:615
計程車網上學習登錄密碼多少 發布:2025-03-10 09:06:43 瀏覽:670
保險公司工資怎麼演算法 發布:2025-03-10 09:03:50 瀏覽:144
yy模擬器源碼 發布:2025-03-10 09:00:47 瀏覽:770