導航:首頁 > 操作系統 > android適配方法

android適配方法

發布時間:2022-07-01 06:31:45

『壹』 android適配問題

開發安卓app考慮機型適配,主要從以下三個方面考慮適配:
1.操作系統適配,即適配Android 2.X,4.X,5.X……每個版本的操作系統,都有其特定的變化,對於App開發者而言,最重要的一點就是要明確每一個版本API Changed List。
2.廠家型號,即適配三星、小米、Note5、米2……這塊有兩種適配方式,一是公版適配,二是定製開發。我們先從公版適配說起,這也是大多數App在用的方式。
公版適配這里指的是只存在一套代碼,一個APK,要適配所有的廠商或機型。比較差的方式通常就是在代碼中涉及到不同廠商或型號的地方通過if語句利用Build里的廠商標識等進行不同的策略,其結果就是適配得越多,if語句越復雜,越難維護。其實只要利用一個工廠模式就可以做得更靈活一些,
3.硬體兼容。主要是對包括屏幕分、CPU、內存、外存、感測器等進行適配,其主要思路也是抽象隔離。 在數據層,最主要的是進行外部存儲的適配,即考慮數據存儲的位置、格式、易失性等。通常這種持久化的數據存儲,都要考慮存儲位置及其易失性問題,不要把關鍵數據保存在易失的外部存儲當中,還有Android 5.X開始的外卡的不可訪問性,進而,可以根據存儲空間和數據特點考慮明文格式還是密文格式,壓縮還是不壓縮。
由於android手機的碎片化,沒有像ios那樣只有固定的機型和尺寸,所以要做到全部適配是不可能,合適的做法是適配市場上流行的機型尺寸、廠商和硬體設備。

『貳』 如何解決android設備的適配問題

一、一些基本概念
1、長度(真實長度):英寸、inch
2、解析度:density 每英寸像素數 dpi(密度)
3、像素:px
4、dip的公式:px /dip=dpi/160 所以 dip 類似於英寸、長度(dp=dip,sp類似於dip) dip=160*inch
dip= 160/dpi * px
當dip一定時,dpi 越大,px就越大
5、廣義解析度=長px*寬px
二、常用規律
1、平時我們說 手機的解析度是 320*480的,其實的這里的解析度是相對解析度
意思是:水平方向上的像素數是320,垂直方向上像素數是480,
解析度是160(默認是160,意思是每英寸像素數160)
那麼水平方向:320 /160=2英寸
垂直方向:480/160=3英寸
於是乎 屏幕對角線 是根號下4*9=3.6(這就是常說的3.6英寸屏幕)

2、說一個手機的屏幕參數有三個:長寬像素之積(相對解析度)、真實解析度(dpi)、對角線長度

3、模擬器的解析度都是160,所以像素越大,屏越大

4、l、m、h 三個文件夾是按 真是解析度dpi 來對應找文件的。

5、有三種方案解決屏幕適配
(1)按像素比 y/開發時用的屏幕像素=x/用戶設備像素
(2)按長度 用dip(假設屏幕尺寸基本不變)
(3)按密度 放在l、m、h文件夾(假設屏幕尺寸基本不變,dpi越大 px越大)

6、如果手機是hdpi,但hdpi里沒有東西,l里有東西,程序就會去l里找圖片並且把它按比例放大。

7、最全的辦法:單獨適配
屏幕解析度:1024x600
density:1(160)
文件夾:values-mdpi-1024x600

屏幕解析度:1024x600
density:1.5(240)
文件夾:values-hdpi-683x400 由1024/1.5 600/1.5得到,需要四捨五入。

屏幕解析度:800x480
density:1(160)
文件夾:values-mdpi-800x480

屏幕解析度:800x480
density:1.5(240)
文件夾:values-hdpi-533x320 由800/1.5 480/1.5得到,需要四捨五入。

以此類推
一般情況下需要創建出values 、values-mdpi 、 values-hdpi文件夾,以備在一些沒有規定的尺寸屏幕上找不到資源的情況。

『叄』 android中Adapter有什麼作用常見的Adapter有哪些

Adapter即適配器,適配器的作用是允許硬體或電子介面與其它硬體或電子介面相連,也可以是信息介面。

常見的Adapter如:電源適配器、三角架基座轉接部件、USB與串口的轉接設備等。

適配器模式主要應用於,當介面里定義的方法無法滿足客戶的需求,或者說介面里定義的方法的名稱或者方法界面與客戶需求有沖突的情況。

(3)android適配方法擴展閱讀

Adapter主要在View上顯示,可以看作是界面數據綁定的一種理解。它所操縱的數據一般都是一些比較復雜的數據,如數組,鏈表,資料庫,集合等。適配器就像顯示器,把復雜的東西按人可以接受的方式來展現。

ArrayAdapter,SimpleAdapter,SimpleCursorAdapter這三個都是繼承BaseAdapter,BaseAdapter是一個抽象類,需要子類繼承並實現其中的方法才能使用,常用於用戶自定義適配器時,顯示比較復雜的數據。

『肆』 Android一般開發的時候的屏幕適配是怎麼做的

Android中一個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單位。
6. 欄位必須使用 sp單位。
7. 將不同的圖片放到不同的drawable目錄下,解析度的匹配規則如下:
drawable-mdpi 320 * 480
drawable-hdpi 480*800
drawable-xhdpi 720 * 1280
drawable-xxhdpi 1080 * 1920
drawable-xxxhdpi 1080+

『伍』 AndroidUI的適配有哪些

字體使用sp,使用dp,多使用match_parent,wrap_content,weight
圖片資源,不同圖片的的解析度,放在相應的文件夾下可使用百分比代替。

『陸』 如何Android屏幕的純代碼界面適配

Android中一個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單位。
6. 欄位必須使用 sp單位。
7. 將不同的圖片放到不同的drawable目錄下,解析度的匹配規則如下:
drawable-mdpi 320 * 480
drawable-hdpi 480*800
drawable-xhdpi 720 * 1280
drawable-xxhdpi 1080 * 1920
drawable-xxxhdpi 1080+

『柒』 android如何適配不同解析度

Android應用如何適配不同解析度的手機,主要分三塊考慮:
1.界面配置,根據不同的解析度,創建手機界面文件
例子:
在res下創建 layout-800x480,layout-480x320,並在各自不同解析度的文件夾下創建界面文件
2.圖片配置,不同的解析度,界面的長寬比不一致,需要不同規格的圖片,在drawable-hdpi,drawable-ldpi,drawable-mdpi 中放不同解析度的圖片.
注:為了減小整個應用程序安裝包大小,選用最高解析度適配,特殊界面圖片特殊處理.
3.動態實現的界面,樣式的設定,不同解析度,界面的字體大小,字體等需要不同的樣式,且需要動態生成的情況下,需要把不同解析度的配置信息保存到應用中。
例子:
在RES里創建 values-480x320 values-800x400 value-1280x720,並在創建的文件夾中分別創建dimens.xml,<dimen name="Text_size">30px</dimen>,在程序中直接調R.dimen.Text_sizeint sizeOfText = (int) this.getResources().getDimension(R.dimen.Text_size);
注:實際應用發現,字體大小適配時,比如只適配了如下屏幕字體
values-480x320 values-800x480 value-1280x720當出現手機屏幕解析度為 854x480時會自動找最大字體適配 (value-1280x720).

總結:如果字體800x480以上沒有適配,手機自動按最大解析度適配.

『捌』 Android的界面是如何適配多樣化屏幕

在研究Android的icon設計之前,有必要先了解Android的界面是如何適配多樣化屏幕的。

適配性

上一篇博文中提到,由於同一個UI元素(如100 x100像素的圖片)在高精度的屏幕上要比低精度的屏幕上看起來要小,為了讓這兩個屏幕上的圖片看起來效果差不多,可以採用以下兩種方法:

『玖』 android studio 怎麼做屏幕適配

一、關於布局適配建議
1、不要使用絕對布局
2、盡量使用match_parent 而不是fill_parent 。
3、能夠使用權重的地方盡量使用權重(android:layout_weight)
4、如果是純色背景,盡量使用android的shape 自定義。
5、如果需要在特定解析度下適配,可以在res目錄上新建layout-HxW.xml的文件夾。比如要適配1080*1800的屏幕(魅族MX3採用此解析度)則新建layout-1800x1080.xml的文件夾,然後在下面定義布局。Android系統會優先查找解析度相同的布局,如果不存在則換使用默認的layout下的布局。

二、術語和概念
四種屏幕尺寸分類:: small, normal, large, and xlarge
四種密度分類: ldpi (low), mdpi (medium), hdpi (high), and xhdpi (extra high)
需要注意的是: xhdpi是從 Android 2.2 (API Level 8)才開始增加的分類.
xlarge是從Android 2.3 (API Level 9)才開始增加的分類.
DPI是「dot per inch」的縮寫,每英寸像素數。
一般情況下的普通屏幕:ldpi是120,mdpi是160,hdpi是240,xhdpi是320。

三、如何做到自適應屏幕大小呢?
1)界面布局方面
需要根據物理尺寸的大小准備5套布局,layout(放一些通用布局xml文件,比如界面中頂部和底部的布局,不會隨著屏幕大小變化,類似windos窗口的title bar),layout-small(屏幕尺寸小於3英寸左右的布局),layout-normal(屏幕尺寸小於4.5英寸左右),layout-large(4英寸-7英寸之間),layout-xlarge(7-10英寸之間)
2)圖片資源方面
需要根據dpi值准備5套圖片資源,drawable,drawalbe-ldpi,drawable-mdpi,drawable-hdpi,drawable-xhdpi
Android有個自動匹配機制去選擇對應的布局和圖片資源

四、兩種獲取屏幕解析度信息的方法:
DisplayMetrics metrics = new DisplayMetrics();
Display display = activity.getWindowManager().getDefaultDisplay();
display.getMetrics(metrics);
//這里得到的像素值是設備獨立像素dp
//DisplayMetrics metrics=activity.getResources().getDisplayMetrics(); 這樣獲得的參數信息不正確,不要使用這種方式。
不能使用android.content.res.Resources.getSystem().getDisplayMetrics()。這個得到的寬和高是空的。

『拾』 android適配器怎樣進行數據適配

顧名思義,就是把一些數據給弄得適當,適合以便於在View上顯示。適配器就像顯示器,把復雜的東西按人可以接受的方式來展現。也可以這樣來理解適配器,ListView通過適配器,理解我們要對ListView里加入什麼內容,而我們在適配器里@Override的方法,就是讓我們寫上我們要告訴這個ListView的一些基本內容。
可以說適配器就是數據和視圖之間的橋梁,學好適配器還是非常重要的。

讓我們先從各個方面理解適配器,然後看一些例子我想應該就可以徹底掌握它了!

適配器的工作原理:
適配器是怎麼處理得到的數據,並把它顯示出來的呢?其實很簡單,說白了適配器它也是一個類,在類裡面它實 現了父類的這幾個方法:
public int getCount() //得到數據的行數
public Object getItem(int position) //根據position得到某一行的記錄
public long getItemId(intposition) //的到某一條記錄的ID
還有最重要的:
publicView getView(intposition, View convertView, ViewGroup parent)
//相比於其它幾個方法這個方法是最重要的,它顯式的定義了適配器將要以什麼樣的方式去顯示我們所 填充的數據,在自定義的適配器裡面我們通常會給它寫個布局文件。
這些在最後的一兩個例子里會仔細講解,我們從簡單的看起:首先看看常用的適配器

我們常用的適配器一共有三個,當然不包含自定義的適配器:就是ArrayAdapter,SimpleAdapter,SimpleCursorAdapter 這三個,他們都是繼承於BaseAdapter 。

下面我會逐一介紹,我們在具體應用中來繼續學習Adapter:
說道Adapter不得不說道ListView,或者說用到ListView不得不提到Adapter
在android開發中ListView是比較常用的組件,它以列表的形式展示具體內容,並且能夠根據數據的長度自適應顯示。
而列表的顯示需要三個元素:
1.ListVeiw 用來展示列表的View。
2.適配器 用來把數據映射到ListView上的中介。
3.數據 具體的將被映射的字元串,圖片,或者基本組件。

根據列表的適配器類型,列表分為三種,ArrayAdapter,SimpleAdapter和SimpleCursorAdapter
其中以ArrayAdapter最為簡單,只能展示一行字。SimpleAdapter有最好的擴充性,可以自定義出各種效果。SimpleCursorAdapter可以認為是SimpleAdapter對資料庫的簡單結合,可以方面的把資料庫的內容以列表的形式展示出來

我們從最簡單的ListView開始(ArrayAdapter):

我打算把這幾種適配器的例子放在一個app裡面,然後上傳到我的資源,再分享鏈接給大家。所以我打算由MainActivity里的Button來跳轉到各個例子,現在讓我們一步步的把這個Demo寫出來。

項目開始啦!

(1)首先,新建一個app ,名字叫做 AdapterDemo ,先在activity_main.xml里添加一個button,一會跳轉的時候使用。

(2)然後新建一個類ArrayAdapterDemo繼承自Activity作為我們第一個小例子的Activity,@Override 我們的onCreate方法
新建一個xml文件arrayadapterdemo.xml作為我們的布局文件,其中包含一個文本域和一個ListView,代碼如下:
arrayadapterdemo.xml:
?

1
2
3
4
5
6
7
8
9
10

<!--?xml version="1.0" encoding="utf-8"?-->
<linearlayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical">

<textview android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="這是ArrayAdapter的一個例子">
</textview>

<listview android:id="@+id/arrayadapterdemolistview" android:layout_width="wrap_content" android:layout_height="wrap_content">
</listview>

</linearlayout>

(3)然後回到ArrayAdapterDemo,定義一個Listview暫且叫做lv,並且lv=(ListView)findViewById(R.id.arrayadapterdemolistview); ,setContentView()為剛才的xml布局,然後為lv設置一個適配器,這里使用的是安卓原生的ArrayAdapter(Context context, inttextViewResourceId, List objects)來裝配數據,要裝配這些數據就需要一個連接ListView視圖對象和數組數據的適配器 來兩者的適配工作。
ArrayAdapter的構造需要三個參數,依次為:this,布局文件(注意這里的布局文件描述的是列表的每一行的布局, android.R.layout.simple_list_item_1是系統定義好的布局文件只顯示一行文字,數據源(一個List集合)。同時用setAdapter()完 成適配的最後工作。
一般寫一個getData()方法來作為最後一個參數,最終代碼如下:

?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36

package com.example.adapterdemo;

import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;

public class ArrayAdapterDemo extends Activity {
private ListView lv;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.arrayadapterdemo);
lv=(ListView)findViewById(R.id.arrayadapterdemolistview);
lv.setAdapter(new ArrayAdapter<string>(this,
android.R.layout.simple_expandable_list_item_1, getData()));
}

public List<string> getData(){

List<string> data = new ArrayList<string>();
data.add("測試數據1");
data.add("測試數據2");
data.add("測試數據3");
data.add("測試數據4");

return data;

}

}
</string></string></string></string>

再在AndroidManifest.xml中注冊Activity並在主界面中完成button監聽跳轉就可以了。

閱讀全文

與android適配方法相關的資料

熱點內容
pythonswampy示例 瀏覽:95
有沒有什麼語音講書看書的app 瀏覽:995
文件夾怎麼做標題 瀏覽:33
騰訊雲伺服器如何防止被攻擊 瀏覽:881
六稜柱的體積演算法 瀏覽:935
淘寶什麼雲伺服器好用 瀏覽:340
pythonoa項目 瀏覽:307
android杜比音效 瀏覽:341
殺手47為什麼連接不了伺服器 瀏覽:108
靜態路徑命令 瀏覽:533
一直編譯不過怎麼辦 瀏覽:829
汽車串聯並聯演算法 瀏覽:458
助眠解壓的聲音音頻小哥哥 瀏覽:277
pythoncmd換行 瀏覽:376
linux取消行號 瀏覽:355
安卓原生系統官網是什麼 瀏覽:444
底部主圖源碼 瀏覽:878
伺服器崩了有什麼提示 瀏覽:780
遠程海康伺服器用什麼瀏覽器 瀏覽:232
解壓報紙圖片 瀏覽:956