android ui篇 自己写界面
对于一些较为简单的界面则自己进行写。
在这里就需要了解xml文件中一些基本的属性以及android手机的知识。
一、目前手机屏幕像素密度基本有5种情况。(以下像素密度简称密度)
密度 ldpi mdpi hdpi xhdpi xxhdpi
密度值 120 160 240 320 480
分辨率 240x320 320x480 480x800 720x1280 1080x1920
换算 1dp=0.75px 1dp=1px 1dp=1.5px 1dp=2px 1dp=3px
当安卓系统字号为“普通”时,sp==dp,换算到px和dp一样。
1.320x480和480x800的屏幕宽度都是320dp,720x1280和1080x1920屏幕宽度都是360dp.
2.默认360dp的屏幕布局(较为主流),对320dp的屏幕单独布局,布局文件放到layout-w320dp文件夹中,其他特殊分辨率的可以将布局文件放在标有分辨率的文件夹中,如layout-854x480。
xml的基本属性以及案例:
在学习控件的过程中我们应该对一些常用的XML属性有更深入的理解,这有利于我们继续学习Android的高级技术。
1:android:id
如果要在代码或在XML布局文件中引用某个控件,该控件必须要设置android:id的属性-@id/value或者@+id/value。
第一种格式中的value必须要在R.id类中存在,也就是说,要为当前控件指定一个在R.id类中已经存在的int类型变量作为其ID值,如果该变量不存在的话,XML布局文件无法验证通过。第二种在@和id之间多了一个加号,表示如果value指定的变量如果在R.id类中存在,则使用已经存在的变量值作为其ID值,否则将会在R.id类中新建一个int类型的变量并储存。
2:android:layout_width和android:layout_height
这两个属性分别用来设置控件的宽度和高度,是必选的。可以设置的值除了fill_parent和wrap_content外,还可以设置精确的值,单位是px或者dp(dip)。其中fill_parent表示尽可能地充满父控件的空间,如果当前控件是最上层,就是充满整个屏幕。wrap_content表示根据控件中的内容来确定,也就是说,在满足完全显示控件内容的情况下,把宽度和高度设置为最小。
3:android:layout_margin
设置控件到相邻控件或者边缘的距离可以使用android:layout_margin属性。该属性设置了4个方向的距离,也就是上下左右这4个。
例如:android:layout_margin="50dp"。如果想要单独设置某一个方向的距离,可以单独使用android:marginTop、Bottom、Left、Right这4个属性。
如果同时设定了android:layout_margin和这4个属性的话,系统优先使用android:layout_margin的属性值。
4:android:padding
android:padding属性可以设置控件的内容在4个方向距离控件边缘的距离。与android:layout_margin类似,它也有单独设置某一个方向距离的属性,
同时也优先于这4个单独的属性。我们初学者比较容易混淆android:padding和android:layout_margin的概念。其实这二者很容易区分,有layout的属性是指控件与控件或者是边缘之间的距离,所以加上了layout,它和控件的布局相关;而没有layout的属性是指该控件中的内容距离控件边缘的距离,和控件的布局位置无关。
5:android:layout_weight
这个属性在进行均衡布局时非常有用。所谓均衡布局,是指两个或者多个控件要占用等比例的区域,它们所占的比例不因屏幕的方向变化、屏幕的密度变化以及总宽度或高度的变化而变化。例如,有3个按钮,要求在水平方向各占1/3的长度,就可以将这3个控件的android:layout_weight属性设置为相等的3个值(必须是正整数,不需要加任何单位),如android:layout_weight="1"。
6:android:layout_gravity和android:gravity
这两个属性分别表示控件和控件中的内容的位置。例如,在一个<LinearLayout>>标签中,有一个<Button>按钮,要想使Button在水平方向居中,即可以在<Button>标签中设置android:layout_gravity属性,也可以在<LinearLayout>标签中设置android:gravity属性。
android:layout_gravity和android:gravity可设置的属性值完全一样,常用的属性值如下:
center_horizontal:水平居中
center_vertical:垂直居中
center:水平和垂直都居中
left:设置到左侧
right:设置到右侧
top:设置到顶端
botton:设置底端
以上属性均可设置多个,用" | "号连接。
7:android:visibility
该属性决定了当前控件是否可见。可设置以下3个属性值。
visible:控件可见
invisible:控件不可见,但保留控件的位置
gone:控件不可见,也不保留控件的位置
代码修改:View.setVisibility(View.GONE);
8:android:background
该属性用于设置控件的背景色或背景图。如果要设置背景色,需要使用#color形式的属性值,其中color表示一个16进制的颜色值。
设置背景图的话,格式为@drawable/resourceId,其中resourceId表示图像的资源ID,假如我们想要更改我们整个界面的背景图的话,
可以先找到最上层的一个Layout,在其标签里设置它的android:background=“@drawable/background"。
9:android:onClick
从Android1.6开始,视图便多了一个android:onClick属性,通过该属性,可以直接定义当前布局文件的Activity类中的单击事件的方法名。
该方法的定义要和单击事件一致,方法名可以任意指定,但访问修饰符必须是public。
此外还有android:clickable和android:longClickable,这两个属性都需要设置布尔类型的属性值,前者表示当前控件是否可以接受单击事件,后者表示当前控件是否可以接受长按单击事件(按住控件不动,则触发长按单击事件)。
10:android:focusable和android:focusableInTouchMode
大多数的控件都可以获得焦点,也就是处在选中状态。android:focusable决定当前控件是否可以获得焦点。
如果将android:foucsableInTouchMode属性值设置为true,当触摸控件时,会先将焦点移动到被触摸的控件上,然后需要再次触摸该控件才会响应单击事件。使用该属性需要将android:focusable属性值设置为true。
不错的android界面设计例子:网上搜miniTwitter
android ui篇 自己写界面的更多相关文章
- android ui篇
android ui篇主要做两件事情. 第一件事情就是能够自己去定义基本的简单的界面. 第二件事情就是能够使用开源library去构造一些复杂的界面. 第一件事情就需要对于布局等方面知识有着基本的掌握 ...
- iOS开发UI篇—手写控件,frame,center和bounds属性
iOS开发UI基础—手写控件,frame,center和bounds属性 一.手写控件 1.手写控件的步骤 (1)使用相应的控件类创建控件对象 (2)设置该控件的各种属性 (3)添加控件到视图中 (4 ...
- Android UI 之 Tab类型界面总结
Android 程序中实现Tab类型界面很常见,本人在做项目的时候也经常用到,所以想在这里总结一下,实现tab类型界面的几种方式,供大家参考.如有不对之处,欢迎大家指正! 一.TabActivity ...
- Android UI开发第四十一篇——墨迹天气3.0引导界面及动画实现
周末升级了墨迹天气,看着引导界面做的不错,模仿一下,可能与原作者的代码实现不一样,但是实现的效果还是差不多的.先分享一篇以前的文章,android动画的基础知识,<Android UI开发第十二 ...
- Android UI开发第三十九篇——Tab界面实现汇总及比较
Tab布局是iOS的经典布局,Android应用中也有大量应用,前面也写过Android中TAb的实现,<Android UI开发第十八篇——ActivityGroup实现tab功能>.这 ...
- 【Android UI设计与开发】第01期:引导界面(一)ViewPager介绍和使用详解
做Android开发加起来差不多也有一年多的时间了,总是想写点自己在开发中的心得体会与大家一起交流分享.共同进步,刚开始写也不知该如何下手,仔细想了一下,既然是刚开始写,那就从一个软件给人最直观的感受 ...
- (转)Android项目重构之路:界面篇
在前一篇文章<Android项目重构之路:架构篇>中已经简单说明了项目的架构,将项目分为了四个层级:模型层.接口层.核心层.界面层.其中,最上层的界面,是变化最频繁的一个层面,也是最复杂最 ...
- 【Android UI设计与开发】第05期:引导界面(五)实现应用程序只启动一次引导界面
[Android UI设计与开发]第05期:引导界面(五)实现应用程序只启动一次引导界面 jingqing 发表于 2013-7-11 14:42:02 浏览(229501) 这篇文章算是对整个引导界 ...
- CodeFirst写界面——自己写客户端UI库
何谓CBS程序 CBS程序就是Client+Browser+Service的程序 纯CS程序写界面,有各种难处,那么我就在Client端引入Browser,让Browser渲染基于HTML的UI界面 ...
随机推荐
- 【转载】LR - 细节解析,为什么LR脚本会去访问“脚本中不存在的“资源?
问题描述 同事遇到的一个问题,LR执行性能测试脚本时,总报出错误,无法访问一个图片的地址,但脚本中明明没有对该资源的请求. Action4.c(12): Warning -27796: Failed ...
- jQuery.delegate() 函数详解
delegate()函数用于为指定元素的一个或多个事件绑定事件处理函数. 此外,你还可以额外传递给事件处理函数一些所需的数据. 即使是执行delegate()函数之后新添加的元素,只要它符合条件,绑定 ...
- asp.net core mvc视频A:笔记2-2.接收数据
传参方式一:使用内置方法传递 运行结果 其他获取方法 Session对象在HttpContext中 启用Session 使用Session 运行演示 传参方式二:数据绑定 普通类型(string).自 ...
- RAD Studio XE8 技术研讨会讲义与范例程序下载
感谢各位程序猿亲临现场參加我们的公布会,现奉上会议当天的讲义与范例程序供大家參考: 2015/5/25~27北京.深圳 『RAD Studio XE8技术研讨会』 下载讲义:http://pan ...
- Android各种模拟器使用笔记
[√]天天模拟器 优点: 缺点: 个人经验 ADB 版本过低的解决办法 去启动时的广告方法 去除多余进程方法 ADB无法连接到模拟器 原因分析: 解决方案: 安装APP(APK)时非常非常慢TTMNQ ...
- C的字符串操作接口实现
近期在写一个关于用HTTP控制storm的的UI功能.已经实现完毕,採用在nginx里面增加相应的模块调用来实现,模块中调用一个动态载入的SO.这个SO用THRIFT和zookeeper client ...
- 李洪强经典面试题39-iOS 程序员 6 级考试(答案和解释)
iOS 程序员 6 级考试(答案和解释) 我是前言 1. 下面的代码分别输出什么? @implementation Son : Father- (id)init { self = [super i ...
- php使用imagick模块实现图片缩放、裁剪、压缩示例
PHP 使用Imagick模块 缩放,裁剪,压缩图片 包括gif图片 缩放 裁剪 复制代码代码如下: /** * 图片裁剪 * 裁剪规则: * 1. 高度为空或为零 按宽度缩放 高度自适 ...
- 表转List泛型数组
转换那块怕忘记,留存一下 using System; using System.Collections.Generic; using System.Data; using System.Linq; u ...
- hihoCoder #1321 : 搜索五•数独 (Dancing Links ,精确覆盖)
hiho一下第102周的题目. 原题地址:http://hihocoder.com/problemset/problem/1321 题意:输入一个9*9数独矩阵,0表示没填的空位,输出这个数独的答案. ...