android UI开发及常用控件

1.        TextView:

1)      android:layout_height指定了控件的高度,android:layout_width指定了控件的宽度,Android中所有的控件都具有这两个属性,可选值有三种match_parent、fill_parent和wrap_content,其中match_parent和fill_parent的意义相同,现在官方更加推荐使用match_parent。

2)      使用android:gravity来指定文字的对齐方式,可选值有top、bottom、left、right、center等,可以用“|”来同时指定多个值,这里我们指定的"center"

3)      Android:textSize指定文字大小,通过android:textColor属性可以指定文字的颜色

2.        Button:

1)      监听Button的点击事件,onClick()方法,我们只需要在这个方法中加入待处理的逻辑。一种采用匿名类的方式:

button.setOnClickListener( new OnClickListener(){

@Override

public void onClick(View v)

{}

});

2)      一种是实现接口的方式:implements OnClickListener,然后重载onClick()方法

3.        EditText:

1)      使用android:hint属性来指定了一段提示性的文本

2)      通过android:maxLines指定了EditText的最大行数为两行,这样当输入的内容超过两行时,文本就会向上滚动,而EditText则不会再继续拉伸

4.        ImageView: 使用android:src属性给ImageView指定了一张图片, android:src = "@drawable/ic_launcher"

5.        ProgressBar:用于在界面显示一个进度条,表示正在加载数据。

1)      通过android:visibility进行指定,可选值有三种,visibleinvisiblegone。visible表示控件是可见的,这个值是默认值,。invisible表示控件不可见,但是它仍然占据着原来的位置和大小,可以理解成控件变成透明状态了。gone则表示控件不仅不可见,而且不再占用任何屏幕空间。我们还可以通过代码来设置控件的可见性,使用的是setVisibility()方法,可以传入View.VISIBLE、View.INVISIBLE和View.GONE三种值。

2)      ProgressBar指定不同的样式,除了圆形进度条,通过style属性可以将它指定成水平进度条style="?android:attr/progressBarStyleHorizontal"。还可以通过android:max属性给进度条设置一个最大值

6.        AlertDialog: 可以在当前的界面弹出一个对话框,这个对话框是置顶于所有界面元素之上的,能够屏蔽掉其他控件的交互能力,因此一般AlertDialog都是用于提示一些非常重要的内容或者警告信息。通过AlertDialog.Builder创建出一个AlertDialog的实例,然后可以为这个对话框设置标题、内容、可否取消等属性,接下来调用setPositiveButton()方法为对话框设置确定按钮的点击事件,调用setNegativeButton()方法设置取消按钮的点击事件.

7.        ProgressDialog:

1)      AlertDialog有点类似,都可以在界面上弹出一个对话框,都能够屏蔽掉其他控件的交互能力。不同的是,ProgressDialog会在对话框中显示一个进度条,一般是用于表示当前操作比较耗时,让用户耐心地等待。

2)      如果在setCancelable()中传入了false,表示ProgressDialog是不能通过Back键取消掉的,这时你就一定要在代码中做好控制,当数据加载完成后必须要调用ProgressDialog的dismiss()方法来关闭对话框,否则ProgressDialog将会一直存在

8.        线性布局:

1)      线性布局:LinearLayout,将控件在线性方向上依次排列。通过android:orientation属性指定了排列方向是vertical,如果指定的是horizontal,控件就会在水平方向上排列。需要注意,如果LinearLayout的排列方向是horizontal,内部的控件就绝对不能将宽度指定为match_parent因为这样的话单独一个控件就会将整个水平方向占满,其他的控件就没有可放置的位置了。同样的道理,如果LinearLayout的排列方向是vertical,内部的控件就不能将高度指定为match_parent

2)      android:layout_gravity属性:android:gravity是用于指定文字在控件中的对齐方式,而android:layout_gravity是用于指定控件在布局中的对齐方式。LinearLayout的排列方向是horizontal时,只有垂直方向上的对齐方式才会生效,因为此时水平方向上的长度是不固定的,每添加一个控件,水平方向上的长度都会改变,因而无法指定该方向上的对齐方式。同样的道理,当LinearLayout的排列方向是vertical时,只有水平方向上的对齐方式才会生效。

3)      android: layout_weight:这个属性允许我们使用比例的方式来指定控件的大小。我们仅指定了EditText的android:layout_weight属性,并将Button的宽度改回wrap_content。这表示Button的宽度仍然按照wrap_content来计算,而EditText则会占满屏幕所有的剩余空间。

9.        RelativeLayout又称作相对布局:

1)      相对于父布局的常见属性有:android:layout_alignParentLeft、android:layout_alignParentTop、 android:layout_alignParentRight、android:layout_alignParentBottom、android:layout_centerInParent

2)      相对于控件的常见属性有:android:layout_above、android:layout_below、android:layout_toLeftOf、android:layout_toRightOf

3)      控件边缘对齐的属性有:android:layout_alignLeft、android:layout_alignRight、android:layout_alignTop、android:layout_ alignBottom

10.    FrameLayout:这种布局没有任何的定位方式,所有的控件都会摆放在布局的左上角,应用场景较少。

11.    TableLayout允许我们使用表格的方式来排列控件,并不常用。在TableLayout中每加入一个TableRow就表示在表格中添加了一行,然后在TableRow中每加入一个控件,就表示在该行中加入了一列,TableRow中的控件是不能指定宽度的。对单元格进行合使用android:layout_span="2"让登录按钮占据两列的空间。因为在TableRow中我们无法指定控件的宽度。这时使用android:stretchColumns属性就可以很好地解决这个问题:<TableLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"

android:layout_height="match_parent"

android:stretchColumns="1"

>

……

</TableLayout>

这里将android:stretchColumns的值指定为1,表示如果表格不能完全占满屏幕宽度,就将第二列进行拉伸。

12.    自定义控件:

1)      重写标题栏:首先定义一个title.xml,其中使用了android:layout_margin这个属性,它可以指定控件在上下左右方向上偏移的距离,当然也可以使用android:layout_marginLeft或android:layout_marginTop等属性来单独指定控件在某个方向上偏移的距离。然后在activity_main.xml中引入布局<include layout="@layout/title"/>。最后在MainActivity中将系统的自带的标题栏隐藏掉requestWindowFeature(Window.FEATURE_NO_TITLE);。

2)      创建自定义控件:首先新建TitleLayout继承自LinearLayout,让它成为我们自定义的标题栏控件。在实际工作中,事先写好的布局文件往往不能满足我们的需求,有时会根据情况在代码中自定义控件,这就需要用到LayoutInflater。LayoutInflater在Android中是“扩展、膨胀”的意思,作用类似于findViewById(),不同的是LayoutInflater是用来获得布局文件对象的,而findViewById()是用来获得具体控件的。然后需要在布局文件中添加这个自定义控件,修改activity_main.xml中的代码。另外可以尝试为标题栏中的按钮注册点击事件,修改TitleLayout中的代码。

13.    ListView的简单用法:数组中的数据是无法直接传递给ListView的,我们还需要借助适配器来完成。Android中提供了很多适配器的实现类,此处使用的就是ArrayAdapter。最后,还需要调用ListView的setAdapter()方法,将构建好的适配器对象传递进去,这样ListView和数据之间的关联就建立完成了。Android中适配器主要是为了构建数据和视图之间的桥梁。

14.    定制ListView界面:新建adapter,重写getView函数(注意其中使用LayoutInflater.from(getContext()).inflate(resourceId,null); 使用这个填充器来把xml布局文件转为View对象)。另外可以在getView中进行优化,如果convertView为空,则使用LayoutInflater去加载布局,如果不为空则直接对convertView进行重用。这样就大大提高了ListView的运行效率,在快速滚动的时候也可以表现出更好的性能。此外,新增一个内部类ViewHolder,用于对控件的实例进行缓存。

15.    px是像素的意思,pt是磅数的意思,1磅等于1/72英寸,一般pt都会作为字体的单位来使用。dp是密度无关像素的意思,也被称作dip,和px相比,它在不同密度的屏幕中的显示比例将保持一致。根据Android的规定,在160dpi的屏幕上,1dp等于1px,而在320dpi的屏幕上,1dp就等于2px。因此,使用dp来指定控件的宽和高,就可以保证控件在不同密度的屏幕中的显示比例保持一致。sp是可伸缩像素的意思,它采用了和dp同样的设计理念,解决了文字大小的适配问题。

摘至《第一行代码》

《疯狂讲义》

1.      Spinner是用户向用户提供列表选择框的控件,如果使用Spinner时已经确定列表选择框的内容,只需Spinner指定android:entries属性即可正常工作。如果需要在程序运行时动态决定Spinner的列表项,则可使用Adapter提供列表项。

2.      实现自动播放可以使用AdapterViewFlipper实现。

3.      StackView实现了以“堆叠”的方式显示多个列表项。

4.      ProgressBar的子类SeekBar实现拖动条的功能,绑定OnSeekBarChangeListener监听器可以对滑动事件进行监听。RatingBar是星级评分条,与拖动条的用法和功能相似。

5.      ViewSwitcher可以实现类似于手机launch的桌面切换功能。

6.      TabHost实现更多个标签页在4.x以上版本已经被丢弃,官方推荐使用Fragment实现tab标签页切换。

7.      常见的对话框有AlertDialog, ProgressDialog,DatePickerDialog和TimePickerDialog。功能最丰富、实际应用最广的对话框是AlertDialog(普通文本,单选列表,多选列表,自定义等)。

8.      PopupWindow可以作为下拉显示出来,也可以显示在指定位置。

9.      Android中选项菜单(optionMenu)是通过MENU按键触发的,android3.0以后并不要求手机设备支持MENU按键,这样android推荐使用ActionBar代替菜单。Android同样支持上下文菜单(ContextMenu),当用户长按某个组件时触发上下文菜单。PopupMenu代表弹出式菜单,会在指定的组件上弹出PopupMenu

10.  onCreateOptionsMenu会在窗口顶部的ActionBar创建菜单栏,ActionBar可以实现tab导航和下拉式导航。


1、Android显示GIF动画 GifView GifView 是一个为了解决android现在没有直接显示gif的view,只能通过mediaplay来显示这个问题的项目,其用法和 ImageView一样,支持gif图片 使用方法:1-把GifView.jar加入你的项目。2-在xml配置GifView的基本属性,GifView继承自View类,和Button、ImageView一样是一个UI控件。 如: 3-在代码配置常用属性: // 从xml得到GifView的句柄 gf1 = (GifView) findViewById(R.id.gif1); // 设置Gif图片源 gf1.setGifImage(R.drawable.gif1); // 添加监听器 gf1.setOnClickListener(this); // 设置显示的大小,拉伸或者压缩 gf1.setShowDimension(300, 300); // 设置加载方式:先加载后显示、边加载边显示、只显示第一帧再显示 gf1.setGifImageType(GifImageType.COVER); GifView的Jar包共有四个类: GifAction.java 观察者类,监视GIF是否加载成功 GifFrame.java 里面三个成员:当前图片、延时、下张Frame的链接。 GifDecoder.java 解码线程类 GifView.java 主类,包括常用方法,如GifView构造方法、设置图片源、延迟、绘制等。 2、Calendar.v0.5.0 是 Android 平台的一个日历显示组件。 3、CWAC EndlessAdapter 是 Android 上一个可以无限往下滑进行列表数据加载的控件。 4、Android Horizontal ListView 是 Android 上一个水平滑动的 ListView 组件。 5、Android ViewBadger 视图布局。 6、滑动刷新的ListView Android PullToRefresh 为 Android 应用提供一个向下滑动即刷新列表的功能,就两个目标文件。 7、pakerfeldt-android-viewflow 是 Android 平台上一个视图切换的效果库。ViewFlow 相当于 Android UI 部件提供水平滚动的 ViewGroup,使用 Adapter 进行条目绑定。 8、Android 导航菜单 RibbonMenu 是 Android 上的一个导航菜单组件。就三个目标文件,菜单项直接在 XML 定义,可添加文本和图标。 9、AndroidUI工具包 android-ui-utils 是一个工具包用来帮助设计和开发 Android 用户界面,包含三个单独的工具:Android Asset Studio用户界面原型模具,Android 设计预览,时常需要重复确认程序版面设计状况的 Android App 开发者,应该会爱上这个轻量级的 Java 程序:Andorid Design Preview 工具,通过 USB 连接之后,只要简单的在计算机选取您想要显示的程序版面范围,就可将镜像结果直接显示于手机装置之上。 10、Androidui开发类库 GreenDroid 是一个Androidui开发类库,能够使你的Android开发更加简便和快捷。 11、Android滑动式菜单 SlidingMenu 是 Android 上实现类似 Facebook 和 Path 2.0 滑动式菜单的组件。 12、AsyncImageView 是 Android 上的一个异步从网络上获取图片并进行浏览的开源组件,可自动在本地进行缓存。该项目是 GreenDroid 的一部分。 13、仿Path按钮动画效果 PathButton 仿照Path应用首页左下角的Button动画效果写了个简单的Demo,由于数学不好,坐标总是和理想有出入,只是大致实现了动画效果,若果有人能把坐标算对,那么修改我的demo就能做成类似Path的那种动画效果!希望大家出点力帮着优化一下,并分享出来! 14、Android Intent开发包 OpenIntents Ope
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值