《第一行代码--Android》阅读笔记之界面设计

1.单位dp、dip、sp、pt、px、in、mm

这里引用StackOverFlow上的一个解答:

  • px is one pixel.
  • sp is scale-independent pixels.
  • dip is Density-independent pixels.( dip == dp is ture)

Here is the difference

dp
Density-independent Pixels - an abstract unit that is based on the physical density of the screen. These units are relative to a 160 dpi screen, so one dp is one pixel on a 160 dpi screen. The ratio of dp-to-pixel will change with the screen density, but not necessarily in direct proportion. Note: The compiler accepts both "dip" and "dp", though "dp" is more consistent with "sp".

即:dp=160*px/dpi

sp
Scale-independent Pixels - this is like the dp unit, but it is also scaled by the user‘s font size preference. It is recommend you use this unit when specifying font sizes, so they will be adjusted for both the screen density and user‘s preference.

Remenber this:

You would use

  • sp for font sizes
  • dip for everything else

To make it absolutely clear - try to never use anything but sp or dp unless you absolutely have to. Using sp/dp will make your Android applications compatible with multiple screen densities and resolutions.

2.可见性invisible与gone

invisible:控件消失,点击事件失效,仍然占据着位置

gone:控件消失,布局位置被腾空

3.设置进度条Style

设置为水平:style="?android:attr/progressBarStyleHorizontal"

4.LinearLayout

想要在某一行设置一个EditText和Button, 让Button宽度包裹内容,让EditText占据屏幕剩余宽度

<EditText

android:id="@+id/input_message"

android:layout_width="0dp"

android:layout_height="wrap_content"

android:layout_weight="1"

android:hint="Type something"

/>

<Button

android:id="@+id/send"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="Send"

/>

5.一个简易快速ListView,可显示一批String

private String[] data = { "Apple", "Banana", "Orange", "Watermelon",

"Pear", "Grape", "Pineapple", "Strawberry", "Cherry", "Mango" };

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

ArrayAdapter<String> adapter = new ArrayAdapter<String>(

MainActivity.this, android.R.layout.simple_list_item_1, data);

ListView listView = (ListView) findViewById(R.id.list_view);

listView.setAdapter(adapter);

}

6.自定义Adapter时候重载getView()方法的作用

这个方法在每个子项被滚动到屏幕内的时候会被调用

7.ListView性能优化

使用Adapter中getView()方法的参数convertView,避免每次重复加载布局文件

使用ViewHolder来记录绑定的控件id与控件实例

8.编写聊天界面方式选择

使用一个布局,用于存储来往消息气泡,根据消息流向设置控件可见性

这样的方式要优于使用多个布局文件

时间: 2024-11-04 03:37:12

《第一行代码--Android》阅读笔记之界面设计的相关文章

《第一行代码——Android》封面诞生记

<第一行代码——Android>已经上市快一个月了,目前销售情况还算良好,也是特别感谢众多朋友的支持.其实一本书如果想要卖的好,除了内容必 须要给力之外,封面的设计也是至关重要的,而本书的封面无疑是在充实的内容之外又披上了一层华丽的外衣.作为作者,其实我的任务就是将内容写好而已,其它 所有相关工作都不是由我负责的.本书封面设计的所有细节都是由陈冰先生一手抓起的,之后他在图灵社区上记录了本书封面的诞生过程.在经过他同意的情况下, 我将这篇文章转到我的博客上,也是让感兴趣的朋友们了解一些不为人知的

历时一年,我的著作《第一行代码——Android》火爆预售!

前言 其实我当初决定开始写博客的想法挺简单的,觉得自己搞技术这么多年了,总应该要留下点什么.既然没能写出什么出色的应用,那至少也要留下点文字分享给大家,以指引在我后面的开发者们,毕竟我也从前辈们的博客那里受惠了很多. 受邀 下定决心之后我就开始了我的博客之旅,令我没想到的是,我写的文章竟然非常受大家的欢迎,短时间内就聚集了大量的人气.更令我没想到的事,在我开始写博客不久之后,人民邮电出版社图灵公司的副总编辑陈冰先生就联系上了我,希望我可以写一本关于Android开发技术的书籍! 陈冰,第一次听到

历时一年,我的著作《第一行代码——Android》已出版!

前言 事实上我当初决定開始写博客的想法挺简单的,认为自己搞技术这么多年了,总应该要留下点什么.既然没能写出什么出色的应用,那至少也要留下点文字分享给大家,以指引在我后面的开发人员们,毕竟我也从前辈们的博客那里受惠了非常多. 受邀 下定决心之后我就開始了我的博客之旅,令我没想到的是,我写的文章居然非常受大家的欢迎,短时间内就聚集了大量的人气.更令我没想到的事,在我開始写博客不久之后,人民邮电出版社图灵公司的副总编辑陈冰先生就联系上了我,希望我能够写一本关于Android开发技术的书籍! 陈冰,第一

《第一行代码——Android》

<第一行代码--Android>是Android初学者的最佳入门书.全书由浅入深.系统全面地讲解了Android软件开发的方方面面. 第1章带领你搭建Android开发环境,完成你的第一个Android程序. 第2章至第13章完整地讲解了Android开发中的各种基本知识和关键技术,包括四大组件.UI.碎片.广播机制.数据存储.服务.多媒体.网络.定位服务.传感器,以及分布式版本控制系统Git的使用等等.在部分章节会穿插相关技术的高级使用技巧. 第14章和第15章则将带领你编写一个完整的项目,

20172327 2017-2018-2 《第一行代码Android》第一章学习总结

学号 2017-2018-2 <第一行代码Android>第一章学习总结 教材学习内容总结 - Android系统架构: 1.Linux内核层 Android系统是基于Linux内核的,这一层为Android设备的各种硬件提供了底层的驱动,如显示驱动,音频驱动,照相机驱动,蓝牙驱动,Wi-Fi驱动,电源管理等. 2.系统运行底层 - 通过一些C/C++库来为Android系统提供了主要的特性支持 库名 功能 SQLite库 提供数据库的支持 OpenGL/ES库 提供3D绘图支持 Webkit

晒订单赢图灵图书,《第一行代码——Android》福利活动劲爆来袭!

我的著作<第一行代码--Android>已经预售几天了,这段时间也有不少朋友早早地就订购了这本书,感谢大家对我一如既往的支持,在离发货还有十几天的时候就预订了这本书. 为了特别感谢在预售期就这么支持我的朋友们,现在图灵公司大力支持下举办一个晒订单赢图灵图书的活动,欢迎已经订购和准备订购的朋友们积极参与进来.如果你还没有订购,只需在7月31号之前下单,就可以参与此活动,购买地址见左侧导航栏. 活动介绍 凡是预售期间(即7月31号之前)在当当.京东.亚马逊.互动其中之一(不包含淘宝)订购<第

第一行代码----android篇1.0:活动

   做.NET有4年了,最近由于个人兴趣开始学习Android,网上看了下,郭霖老师的”第一行代码“不错,就以此为教程,写个博客,希望共勉吧!   1:活动是什么及其基本用法    活动是什么,英文名称是“Activity”,专业定义是“一种可以包含用户界面的组件,主要用于和用户进行交互”.在我看来就是.net中的aspx页面,但又不完全是.    如何建立?    如上图所示,点击上图Browse       点击ok,建立活动.活动建立显示的初始页面如下. 到此,建立活动,其实就是一个类,

第一行代码 Android 第二版到货啦

今日android第一行代码[第二版]已到,收获的季节到了 先看一下封面 书签: 以后就把空闲时间送给它吧 先来看一下本书的目录: 第1章 开始启程--你的第1行Android代码 第2章 先从看得到的入手--探究活动 第3章 软件也要拼脸蛋--UI开发的点点滴滴 第4章 手机平板要兼顾--探究碎片 第5章 全局大喇叭--详解广播机制 第6章 数据存储全方案--详解持久化技术 第7章 跨程序共享数据--探究内容提供器 第8章 丰富你的程序--运用手机多媒体 第9章 看看精彩的世界--使用网络技术

阅读郭林《第一行代码》的笔记——第6章 数据存储全方案,详解持久化技术

瞬时数据是指那些存储在内存当中,有可能会因为程序关闭或其他原因导致内存被回收而丢失的数据.这对于一些关键性的数据信息来说是绝对不能容忍的,谁都不希望自己刚发出去的一条微博,刷新一下就没了吧.那么怎样才能保证让一些关键性的数据不会丢失呢?这就需要用到数据持久化技术了. 持久化技术简介 数据持久化就是指将那些内存中的瞬时数据保存到存储设备中,保证即使在手机或电脑关机的情况下,这些数据仍然不会丢失.保存在内存中的数据是处于瞬时状态的,而保存在存储设备中的数据是处于持久状态的,持久化技术则是提供了一种机