1,图片适配(在不同像素密度的手机上,加载不同文件夹下的图片)
    一套图(800*480,将截取的图片放置在hdpi下,小图(变形不明显),
    大图(根据适配的手机,做单独的截取,比如有两款手机适配(做两套分辨率的图)))

  总结:drawable下放置的图片分别可以加载到哪些类型的手机上:

    ldpi的图片加载到320*240的手机上

    mdpi---->没有图片(可以放480*320)

    hdpi的图片加载到800*480的手机上

    xhdpi的图片加载到1280*720的手机上( 5英寸)

    xxhdpi的图片加载到1920*1080的手机上(5英寸)

不同的手机加载不同的图片 其实跟手机的像素密度有关,那么什么是像素密度呢?

  像素密度就是一个英寸上面分布像素点的个数,例如

  1280*720 5英寸

  1280:手机的竖屏上面分布了1280个像素点
  720:手机的横屏上面分不了720个像素点
  5英寸:手机屏幕的斜对角线的英寸数

像素密度=(1280*1280+720*720)/5=293.7   划分在xhdpi下

2,dimens.xml适配(在不同的像素密度的手机上,加载不同的资源文件)
    dp单位,适配效果,不能完全适配
    指定手机配置了dimens.xml中属性dp值以后,默认手机也需要做相同的属性字段的配置

3,layout适配(在不同的像素密度的手机上,加载不同的布局文件) layout-1280x720/layout.xml

4,java代码适配(获取手机屏幕的宽高像素值,根据手机屏幕宽高像素值的百分比去设置控件宽高)
    TextView显示的宽高为手机屏幕宽高的各1/2
    1,获取手机屏幕上横竖对应的像素点的个数
    2,取一半分配给控件展示
    3,指定对应的规则,给控件所在的父布局,让后将其作用在子控件上
代码如下:

activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/rl"
tools:context=".MainActivity" >

<TextView
android:id="@+id/tv"
android:background="#000000"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world" />

</RelativeLayout>

public class MainActivity extends Activity {

private static final String tag = "MainActivity";
private TextView tv;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);

setContentView(R.layout.activity_main);

//1,获取手机屏幕宽高
DisplayMetrics displayMetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);

//获取宽度以及高度
// displayMetrics.heightPixels
// displayMetrics.widthPixels

Log.i(tag, "displayMetrics.heightPixels = "+displayMetrics.heightPixels);
Log.i(tag, "displayMetrics.widthPixels = "+displayMetrics.widthPixels);

//2,获取宽高的各1/2
//在数学角度上做四舍五入操作 160px/2 = 80px
// 161.2px/2 = 80.6px 81.1px
int height = (int)(displayMetrics.heightPixels/2+0.5);
int width = (int)(displayMetrics.widthPixels/2+0.5);

//3,将宽高的规则设置给textView所在的夫控件,作用在textView上,android的控件默认是没有宽高的,由其父布局给他分配宽高
LayoutParams layoutParams = new RelativeLayout.LayoutParams(width, height);
tv = (TextView) findViewById(R.id.tv);
tv.setLayoutParams(layoutParams);
}
}

5,权重适配(剩余空间的分配规则,线性布局上,width = 0dp height = 0dp)

Android中的适配方式的更多相关文章

  1. android中两种方式打开网页

    一.你要打开一个网页你可以自己写一个webview,在自己的程序中就可以打开. wv = (WebView) findViewById(R.id.webView1); wv.getSettings() ...

  2. Android中 实现队列方式处理优先级信息

    需求:当界面在处理消息A时,突然接收到消息B,需要立马显示B的信息,然后再继续显示消息A,或者接收到消息C,再显示完消息A后再显示消息C: 原理很简单 在一个轮询中,查询消息列表中的元素,先处理优先级 ...

  3. Android 中数据存储方式有哪些?

    a) 文件存储b) xml,SharedPreferencec) SQLite数据库d) ContentProvidere) 网络

  4. Xamarin.Android中使用android:onClick="xxx"属性

    原文:Xamarin.Android中使用android:onClick="xxx"属性 在原生Android开发中,为一个View增加点击事件,有三种方式: 1.使用匿名对象 ( ...

  5. Android中的IPC机制

    Android IPC简介 IPC是Inter-Process Communication的缩写,含义就是进程间通信或者跨进程通信,是指两个进程之间进行数据交换的过程.那么什么是进程,什么是线程,进程 ...

  6. Android中HttpURLConnection对象是怎么生成的

    try { URL mUrl = new URL("https://www.jianshu.com/"); HttpURLConnection http = (HttpURLCon ...

  7. 【转】深入理解Android中的SharedPreferences

    SharedPreferences作为Android中数据存储方式的一种,我们经常会用到,它适合用来保存那些少量的数据,特别是键值对数据,比如配置信息,登录信息等.不过要想做到正确使用SharedPr ...

  8. Android 屏幕适配方式

    适配:即当前应用在相同的手机上面显示相同的效果.适配前需要首先确定当前手机所属像素密度类型(如:xhdpi.hdpi.mdpi等) 像素密度:每英寸上分布的像素点个数,单位(dpi,ppi),利用勾股 ...

  9. Android中的内存管理机制以及正确的使用方式

    概述 从操作系统的角度来说,内存就是一块数据存储区域,属于可被操作系统调度的资源.现代多任务(进程)的操作系统中,内存管理尤为重要,操作系统需要为每一个进程合理的分配内存资源,所以可以从两方面来理解操 ...

随机推荐

  1. PHP简单 对象(object) 与 数组(array) 的转换

    数组是PHP的灵魂,非常强大,但有时候面向对象编程也是挺方便的,数组 与 对象 之间切换也是常有的事: /** * 数组 转 对象 * * @param array $arr 数组 * @return ...

  2. Shell标准输出、标准错误 >/dev/null 2>&1

    Shell中可能经常能看到:>/dev/null  2>&1 eg:sudo kill -9 `ps -elf |grep -v grep|grep $1|awk '{print ...

  3. CentOS 7下安装Mono

    最近的项目中需要用到Linux作为服务器,而我们的开发技术是基于.NET的,所以只能在CentOS 7上尝试着安装一下Mono,下面是具体的安装步骤: 1.安装一些必备的依赖项 yum -y inst ...

  4. 网站建设中帝国cms如何循环调用栏目下级分类

    类似的形式,调用下级分类 ?php $bclassid=[!--self.classid--]; //选择当前栏目的id,如果调用指定栏目下的多级分类,则填写栏目id //取得本栏目下的子栏目 ? [ ...

  5. mac 安装nginx

    首先准备工作,打开mac终端 1.安装brew  输入命令 curl -LsSf http://github.com/mxcl/homebrew/tarball/master | sudo tar x ...

  6. HTML中图像代替提交按钮

    1. 用图像代替提交按钮 当只有一个提交按钮的时候 ,可以简单的实现,不用添加事件函数,代码是: <input type = "image"' name = ".. ...

  7. Apache与Nginx对客户端请求的处理机制对比

    Apache与Nginx对客户端请求的处理机制对比 模块 大致为四个模块,核心模块.HTTP模块.邮件模块,以及第三方模块 核心模块主要包含两类功能的支持,一类是主体功能,包括进程管理,权限管理,错误 ...

  8. 深入研究java.lang.Runtime类

    一.概述      Runtime类封装了运行时的环境.每个 Java 应用程序都有一个 Runtime 类实例,使应用程序能够与其运行的环境相连接.      一般不能实例化一个Runtime对象, ...

  9. 51nod1256(乘法逆元)

    题目链接: http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1256 题意:中文题诶~ 思路: M, N 互质, 求满足 K ...

  10. 解决SVN Upgrade working copy问题

    解决SVN Upgrade working copy,无法上传到svn上的解决方案是SVN Upgrade working copy老有问题,而且还特别慢.还有种方法,将原来上传到svn的项目中有个. ...