`
jandroid
  • 浏览: 1906724 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

【android基础学习之五】——基础控件Menu,Dialog,ImageView,ImageButton

 
阅读更多

声明:学习的书籍《Android应用开发揭秘》,这里记录学习该书籍的日志,引用的相关代码与总结描述,没有商业的用途,完全是自我学习的一个记录,刚刚学习不可避免会出现很多问题,若是有错误还请大家多多批评。

一、 按钮(Button)

按钮控件已经在之前的例子学习中使用到,主要的是一个setOnClickListener事件。

二、 菜单(Menu)

一般Android手机都有menu这个按键来显示相应的菜单,实现菜单效果,需要通过onCreateOptionsMenu来实现,然后对其事件进行相关的监听来实现不同任务,可以通过两种方式来实现:

1. 通过XML布局实现;

2. 通过Menu.add方法实现

实例分析:通过上面两种方式来实现菜单效果,main.xml使用XML布局方式实现,main2.xml使用Menu.add方法实现。

1. 通过XML布局:

首先需要在res目录下建立menu文件夹,并且在该目录下建立menu.xml文件,在该文件中创建需要的菜单。


然后对应的Activity01重写onCreateOptionsMenu方法来装载这个menu文件

最后可以加上对菜单按钮事件的监听

【扩展点】:关于Intent的理解与使用

Intent 是一个将要执行的动作的抽象的描述,一般来说是作为参数来使用,由Intent来协助完成android各个组件之间的通讯。比如说调用startActivity()来启动一个activity,或者由broadcaseIntent()来传递给所有感兴趣的BroadcaseReceiver, 再或者由startService()/bindservice()来启动一个后台的service.所以可以看出来,intent主要是用来启动其他的activity 或者service,所以可以将intent理解成activity之间的粘合剂。

可以参考该文章http://wenku.baidu.com/view/76db47858762caaedd33d452.html

2 通过Menu.add方法:

即在onCreateOptionsMenu方法中通过menu.add方法进行添加,如;

实例效果:左图为第一种实现方式,右图为第二种实现方式

三、 对话框(Dialog)

实现对话框效果,主要是使用AlertDialog.Builder类,还可以自定义对话框。

实例关键源码分析:

【扩展点】

1. LayoutInflater factory = LayoutInflater.from(Activity01.this);

Inflater英文意思是膨胀。LayoutInflater的作用类似于 findViewById(),不同点是LayoutInflater是用来找layout文件夹下的xml布局文件,并且实例化!而 findViewById()是找具体某一个xml下的具体 widget控件(如:Button,TextView等)。

补充总结:

(1).一般来讲,我们用LayoutInflater做一件事:inflate。inflate这个方法总共有四种形式,目的都是把xml表述的layout转化为View。

(2).获得LayoutInflater的方法三种:

(3)setContentView和inflate的区别:

上述注释掉的代码和没有注释掉的代码两种情况是相同的。

区别:
setContentView()一旦调用, layout就会立刻显示UI;而inflate只会把Layout形成一个以view类实现成的对象,有需要时再用setContentView(view)显示出来。一般在activity中通过setContentView()将界面显示出来,但是如果在非activity中如何对控件布局设置操作了,这就需要LayoutInflater动态加载。

public View inflate(int Resourece,ViewGroup root)
作用:填充一个新的视图层次结构从指定的XML资源文件中
reSource:View的layout的ID
root: 生成的层次结构的根视图
return 填充的层次结构的根视图。如果参数root提供了,那么root就是根视图;否则填充的XML文件的根就是根视图。

其余几个重载的inflate函数类似。

该区别引用自:http://www.cnblogs.com/sanjinxiong/articles/2125142.html

2. AlertDialog.Builder()的使用

AlertDialog是Dialog的一个直接子类,AlertDialog也是Android系统当中最常用的对话框之一。
一个AlertDialog可以有两个以上的Button,可以对一个AlertDialog设置相应的信息。比如title,massage,setSingleChoiceItems,setPositiveButton,setNegativeButton等等。。。。

但不能直接通过AlertDialog的构造函数来生产一个AlertDialog。研究AlertDialog的源码发现AlertDialog所有的构造方法都是写保护的所以不能通过:AlertDialog alertDialog = new AlertDialog();来得到。只能通过:

AlertDialog.BuilderalertDialog=newAlertDialog.Builder(this);

四、 图片视图(imageView)

针对imageVIew对象,通过setImageResource()方法设置要显示图片的资源索引。

实例分析:实现imageView对象,Alpha值的递减。

关键源码:

【扩展点】Handler的使用

handler类允许你发送消息和处理线程消息队列中的消息及runnable对象。handler实例都是与一个线程和该线程的消息队列一起使用,一旦创建了一个新的handler实例,系统就把该实例与一个线程和该线程的消息队列捆绑起来,这将可以发送消息和runnable对象给该消息队列,并在消息队列出口处处理它们。

handler类有两种主要用途:1。按照时间计划,在未来某时刻,对处理一个消息或执行某个runnable实例。2。把一个对另外线程对象的操作请求放入消息队列中,从而避免线程间冲突。

时间类消息通过如下方法使用: post(Runnable), postAtTime(Runnable, long), postDelayed(Runnable, long), sendEmptyMessage(int), sendMessage(Message), sendMessageAtTime(Message, long), and sendMessageDelayed(Message, long)

methods. post之类函数可以传输一个runnable对象给消息队列,并在到达消息队列后被调用。sendmessage之类函数可以传送一个包含数据的message对象,该message对象可以被Handler类的handleMessage(Message) 方法所处理。

post之类函数和sendmessage之类的函数都可以指定消息的执行时机,是立即执行、稍后一段时间执行,还是在某个确定时刻执行。这可以用来实现超时、消息或其他时间相关的操作。

当一个进程启动时,主线程独立执行一个消息队列,该队列管理着应用顶层的对象(如:activities、broadcast receivers等等)和所有创建的窗口。你可以创建自己的一个线程,并通过handler来与主线程进行通信。这可以通过在新的线程中调用主线程的handler的post和sendmessage操作来实现。

一、图片按钮(ImageButton)

ImageButton对象通过setImageDrawable()方法设置显示图片。

基础控件差不多就学习到这里了,下面是一些效果的实现。

学习到P92页

分享到:
评论

相关推荐

    实验二-Android基本控件应用.docx

    按钮控件是 Android 中最常用的控件之一,包括 Button 和 ImageButton 两种。Button 控件继承自 TextView 类,用于实现简单的按钮功能。ImageButton 控件继承自 ImageView,用于显示图片按钮。 状态开关按钮...

    android开发入门与实战(下)

    第16章 Android综合案例五——手机信息查看助手 16.1 手机信息查看助手功能规划和可行性分析 16.1.1 手机信息查看助手功能规划 16.1.2 手机信息查看助手可行性分析 16.2 手机信息查看助手功能实现 16.2.1 手机信息...

    android开发揭秘PDF

    2.3 创建第一个Android项目——HeUoAndroid 2.3.1 创建HelloAndroid项目 2.3.2 运行HelloAndroid及模拟器的使用 2.3.3 调试HelloAndroid 2.4 小结 第二部分 基础篇 第3章 Android程序设计基础 3.1 Android程序框架 ...

    《Android应用开发揭秘》附带光盘代码.

     2.3 创建第一个Android项目——HeUoAndroid  2.3.1 创建HelloAndroid项目  2.3.2 运行HelloAndroid及模拟器的使用  2.3.3 调试HelloAndroid  2.4 小结  第二部分 基础篇  第3章 Android程序设计基础  3.1 ...

    《Android应用开发揭秘》源码

     2.3 创建第一个Android项目——HeUoAndroid  2.3.1 创建HelloAndroid项目  2.3.2 运行HelloAndroid及模拟器的使用  2.3.3 调试HelloAndroid  2.4 小结  第二部分 基础篇  第3章 Android程序设计基础  3.1 ...

    Android应用开发揭秘pdf高清版

    《Android应用开发揭秘》内容全面,不仅详细讲解了Android框架、Android组件、用户界面开发、游戏开发、数据存储、多媒体开发和网络开发等基础知识,而且还深入阐述了传感器、语音识别、桌面组件开发、Android游戏...

    Android应用基础实验指导书.doc

    ImageView 进度条:ProgressBar、ProgressDialog、SeekBar、RatingBar 选择器:DatePicker、TimePicker 菜单:Menu、ContentMenu 对话框:Dialog、ProgressDialog 常用的控件有文本框、按钮和列表等。 2.控件的实现 ...

    Android典型技术模块开发详解

    第三篇 Android开发基础详解 第7章 常用控件 7.1 Button(按钮) 7.2 ImageButton(图片按钮) 7.3 ToggleButton(开关按钮) 7.4 TextView(文本视图) 7.5 ImageView(图片视图) 7.6 EditText(编辑框) 7.7 ...

    ophone&android 开发完全讲义随书源码

    │ ├─ch04_activitydialog │ │ ├─assets │ │ ├─bin │ │ │ └─net │ │ │ └─blogjava │ │ │ └─mobile │ │ ├─gen │ │ │ └─net │ │ │ └─blogjava │ │ │ └─mobile │ │ ├─...

Global site tag (gtag.js) - Google Analytics