当前位置:首页 » 安卓系统 » android代码适配

android代码适配

发布时间: 2022-07-27 12:50:57

⑴ 怎么实现android应用的适配问题

怎样适配多种屏幕

a.在manifest里定义你的程序支持的屏幕类型,相应代码如下:
<supports-screens android:resizeable=["true"| "false"]
android:smallScreens=["true" | "false"] //是否支持小屏
android:normalScreens=["true" | "false"] //是否支持中屏
android:largeScreens=["true" | "false"] //是否支持大屏
android:xlargeScreens=["true" | "false"] //是否支持超大屏
android:anyDensity=["true" | "false"] //是否支持多种不同密度的屏幕
android:requiresSmallestWidthDp=”integer”
android:compatibleWidthLimitDp=”integer”
android:largestWidthLimitDp=”integer”/>

b.对不同大小的屏幕提供不同的layout。

比如,如果需要对大小为large的屏幕提供支持,需要在res目录下新建一个文件夹layout-large/并提供layout。当然,也可以在res目录下建立layout-port和layout-land两个目录,里面分别放置竖屏和横屏两种布局文件,以适应对横屏竖屏自动切换。

c.对不同密度的屏幕提供不同的图片。
应尽量使用点9格式的图片,如需对密度为low的屏幕提供合适的图片,需新建文件夹drawable-ldpi/,并放入合适大小的图片。相应的,medium对应drawable-mdpi /,high对应drawable-hdpi/,extra high对应drawable-xhdpi/。
图片大小的确定:low:medium:high:extra high比例为3:4:6:8。举例来说,对于中等密度(medium)的屏幕你的图片像素大小为48×48,那么低密度(low)屏幕的图片大小应为36×36,高(high)的为72×72,extra high为96×96。

不同密度的屏幕对应的图片比例

3、多屏幕适配的4条黄金原则
a.在layout文件中设置控件尺寸时应采用wrap_content,fill_parent和dp。

具体来说,设置view的属性android:layout_width和android:layout_height的值时,wrap_content,fill_parent或dp比pix更好。相应地,为了使文字大小更好的适应屏幕应该使用sp来定义文字大小。

b.在程序的代码中不要出现具体的像素值。

为了使代码简单,android内部使用pix为单位表示控件的尺寸,但这是基于当前屏幕基础上的。为了适应多种屏幕,android建议开发者不要使用具体的像素来表示控件尺寸。

c.不要使用AbsoluteLayout(android1.5已废弃) 。相应地,应使用RelativeLayout。

⑵ android Fragment中的ViewPager添加适配器应该怎么写代码

package com.genius.demo;
import java.util.List;
import android.os.Parcelable;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.util.Log;
import android.view.View;

public class ViewPageAdapter extends PagerAdapter{
private final static String TAG = "MyPagerAdapter";

List<View> mViewList;

public ViewPageAdapter(List<View> viewList)
{
mViewList = viewList;
}

@Override
public int getCount() {
// TODO Auto-generated method stub
if (mViewList != null)
{
return mViewList.size();
}

return 0;
}

@Override
public Object instantiateItem(View view, int index) {
// TODO Auto-generated method stub

((ViewPager) view).addView(mViewList.get(index), 0);

return mViewList.get(index);
}

@Override
public void destroyItem(View view, int position, Object arg2) {
// TODO Auto-generated method stub

((ViewPager) view).removeView(mViewList.get(position));
}

@Override
public void finishUpdate(View arg0) {
// TODO Auto-generated method stub

}

@Override
public boolean isViewFromObject(View view, Object obj) {
// TODO Auto-generated method stub

return (view == obj);

}

@Override
public void restoreState(Parcelable arg0, ClassLoader arg1) {
// TODO Auto-generated method stub

}

@Override
public Parcelable saveState() {
// TODO Auto-generated method stub

return null;
}

@Override
public void startUpdate(View arg0) {
// TODO Auto-generated method stub
// Log.i(TAG, "startUpdate");

}

}

⑶ 为什么说Android开发屏幕适配很难

1. 代码方式 获取屏幕的宽高 然后根据自己的设计图 给控件设置宽高
优点:能够适配不同屏幕。 ?缺点:代码较多,适合某些特殊需求。
2. 布局方式 ?比如layout-land(横屏时候走这个里面的布局) layout-port(竖屏时候走这里的布局)value-1080-width(名字好像是类似这样忘记了, 这里面可以定义一些 ?按钮的大小,这样屏幕宽度是1080时候就走这里面的参数) hdpi ?xhdpi ?xxhdpi 等放不同分辨率的图片
优点: 简单 不用修改代码 ?缺点:资源文件比较大
一般都是采用1、 2混合的方式来适配。

⑷ 如何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适配器怎样进行数据适配

顾名思义,就是把一些数据给弄得适当,适合以便于在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源码是适配nexus的吗

源程序代码是适配Visual Basic的。
在Visual Basic中的基本语句包括:
一、赋值语句。
赋值语句的语法如下:
变量名或对象.属性=表达式
它的含义是把等号右边的值赋给等号左边的值。
二、判定结构。
一、If语句。
用If...Then结构有条件地执行一个或多个语句。单行语法和多行块语法都可以使用:
If condition Then statement
If condition Then
Statements
End If
Condition 通常是比较式,但它可以是任何计算数值的表达式。Visual Basic 将这个值解释为True或False:一个为零的数值为False,而任何非零数值都被看作True。若condition为True,则Visual Basic执行Then
关键字后面的所有statements。可以使用单行或多行语法有条件地执行一个语句。
注意:If...Then的单行格式不用End If语句。如果condition为True时要执行多行代码,则必须使用多行块If...Then...End If语法。
二、If...Then...Else语句。
用If...Then...Else块定义几个语句块,执行其中一个语句:
If condition1 Then
[statementblock-1]
[ElseIf condition2 Then
[statementblock-2]] ...
[Else
[statementblock-n]]
End If
Visual Basic首先测试condition1。如果它为False,Visual Basic就测试
condition2,依次类推,直到找到一个为True的条件。当它找到一个为
True的条件时,Visual Basic就会执行相应的语句块,然后执行End If后面的代码。作为一个选择,可以包含Else语句块,如果条件都不是True,则Visual Basic执行Else语句块。
If...Then…ElseIf只是If...Then...Else的一个特例。注意,可以使用任意数量的
ElseIf子句,或者一个也不用。可以有一个Else子句,而不管有没有ElseIf
子句。
二、循环语句。
电脑最擅长的就是不厌其烦地重复做一项工作成千上万遍(即重复执行几行代码),这就是通过循环结构来完成的。VB支持的循环结构有:Do…Loop和For…Next。
用Do循环重复执行一个语句块,且重复次数不定。Do…Loop是以计算数值为条件以决定是否继续执行。条件必须是一个数值或者值为True或False的表达式。
在下面的Do…Loop循环中,只要条件为真就执行循环。
Do While 循环条件
循环语句块
Loop
当Visual Basic执行到这个Do循环时首先测试条件,条件为假时,跳过所有语句。如果条件为真,Visual Basic就会执行语句,退回到Do While语句测试条件。只要条件为真,循环可以随意执行几次。如果条件一开始便为假,则不会执行语句。
还有一种Do…Loop语句,是先执行语句,每次执行之后测试条件,循环中的语句至少执行一次。
Do
循环语句块
Loop While 循环条件
在不知道循环要执行几次语句时,用Do循环,知道循环次数时,可以使用For…Next循环。For循环使用一个叫做计数器的变量,重复一次循环之后,计数器的值会增加或减少。
For 计数器=初值To终止值Step增量
循环语句块
Next 计数器
计数器、初值、终止值和增量为数值型。执行For循环时,设置计数器等于初值,测试计数器是否大于终止值,是则退出循环,执行循环语句,计数器增加增量后重复以上步骤。
用Exit语句可以退出For循环、Do循环,它的语法是Exit Do和Exit For,在循环中出现的次数无限制。

⑺ 用android studio怎么做适配

一、关于布局适配 1、不要使用绝对布局 2、尽量使用match_parent 而不是fill_parent 。 3、能够使用权重的地方尽量使用权重(android:layout_weight) 4、如果是纯色背景,尽量使用android的shape 自定义。 5、如果需要在特定分辨率下适配,可以...

⑻ 如何做到 一套代码 安卓iOS都能适配

Android适配是一个大坑,你可能早有耳闻。但是别人告诉你坑,然后你也说坑,肯定是无法令人信服的。我们做学问,不能光知其然不知所以然,适配问题到底有多坑,为什么坑,以及如何从坑里爬出来,就是我们今天要探讨的话题了。

这还得从Android的开放性说起。不同于iOS,Android的设备厂商可以生产任意屏幕大小的手机、平板和TV,谷歌对此并没有做任何限制。直接后果就是设备越来越多,大大小小的屏幕尺寸也是层出不穷。另一方面,程序员都有一个梦想,就是一套代码走天下,谁都不想把美好青春浪费在应付各种奇葩的屏幕适配上去。所以说程序员一谈适配色变,尤其是Android的适配,简直比产品经理改需求还要痛苦。这里有两张图,你可以看下当前形势多么严峻。

⑼ android代码中设置大小时能用dimens适配吗

android代码中设置大小时能用dimens适配,具体操作:
1.单位全部用dp,优先使用包裹内容和填充父窗体和权重来完成布局。
2.通过dimens文件来适配,需要三套,不考虑横屏。
2.1 默认的dimens.xml 放按hdpi适配的参数;
2.2 hdpi的dimens.xml 放按hdpi适配的参数;
2.3 xhdpi的dimens.xml 放按xhdpi适配的参数;
3.适配的时候只用完美的完成一套xhdpi的dimens文件,然后通过代码生成hdpi的,因为就dp来说,他们有固定的比例关系,代码如下:
ldpi 1dp = 0.75px 320*240 160dp = 120px
mdpi 1dp = 1px 480*320 160dp = 160px
hdpi 1dp = 1.5px 800*480 160dp = 240px
xhdpi 1dp = 2px 1280*720 160dp = 320px<360px 180dp = 360px
xxhdpi 1dp = 3px 1920*1080 160dp = 480px < 540px 180dp = 540px

热点内容
做解压橡皮 发布:2025-01-21 15:03:06 浏览:990
双系统win访问mac 发布:2025-01-21 14:53:52 浏览:484
安卓车机系统如何安装carplay 发布:2025-01-21 14:52:24 浏览:589
sql操作手册 发布:2025-01-21 14:46:08 浏览:311
青橙脚本 发布:2025-01-21 14:44:05 浏览:218
东风本田crv时尚版是什么配置 发布:2025-01-21 14:20:04 浏览:219
安卓如何多开软件每个机型不一样 发布:2025-01-21 14:15:29 浏览:501
iis配置php5 发布:2025-01-21 14:08:19 浏览:274
凯叔讲故事为什么联系不到服务器 发布:2025-01-21 13:56:50 浏览:387
linux镜像文件下载 发布:2025-01-21 13:34:36 浏览:218