常用控件

  控件是对数据和方法的封装。控件可以有自己的属性和方法。属性是控件数据的简单访问者。方法则是控件的一些简单而可见的功能。所有控件都是继承View类

介绍android原生提供几种常用的控件button/imagebutton、checkbox/radiobutton、progressbar/seekbar、tabSpec/tabHost、ListView、Dialog,主要为了掌握控件使用的一般规律。

1、button 按钮

  Button是各种UI中最常用的控件之一,用户可以通过触摸它来触发一系列事件,要知道一个没有点击事件的Button是没有任何意义的,

因为使用者的固定思维是见到它就想去点!

  布局文件里button的xml声明:

 <Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/btn_ok"
android:id="@+id/btn_ok"
/>

  android:layout_width="wrap_content" --自适应,据自己的值占据控件来决定大小
  android:layout_height="fill_parent" --充满父控件,自动放大到与父控件一样的大小

  其中每个组件的layout_width和layout_height属性是必须的

  一般也可以是具体的大小,即:数字+单位,如android:layout_height ="30px",由于移动设备屏幕尺寸太多了,不推荐使用强制设定大小,通用性不好。

  @+表示声明,新增一个id,会自动在R.java文件里创建。如 android:id="@+id/btn_ok"
  @表示引用 如 android:text="@string/hello_world",引用string.xml的名为hello_world的值

  xml自定义值可以这样:

 <string name="hello_world">Hello world!</string>

  有些人会问直接 android:text="Hello world!"不是更方便,为什么还要引用xml文件?其实android这样设计为了国际化和编写弹性的应用程序,

xml解析时会讲到(了解更多XML:android学习日记23--Android XML解析),不多做解释了。布局组件等一般设置格式:

<布局/组件名称
android:属性="属性类型"
……
/>

如底下的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:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<!-- 线性布局 -->
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"> <TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world"
android:id="@+id/tv"
/> <Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/btn_ok"
android:id="@+id/btn_ok"
/> <!-- wrap_content:自适应 -->
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/btn_cancle"
android:id="@+id/btn_cancle"
/> <ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/blank"
android:id="@+id/btn_img"
/> </LinearLayout> </RelativeLayout>

几乎每个组件都是上面的声明方式。

  java代码里定义btn_ok = (Button)findViewById(R.id.btn_ok);其他组件也可以通过类似的方法获得,前提是在布局文件里有指定id,获得的类型都是Object,记得类型转化添加监听器 可以implements OnClickListener 重写 OnClick方法来自定义按钮按下触发事件。也可以通过内部类实现,btn_ok.setOnClickListincer(new OnclickListner() { @override public void OnClick(View v) { ...}})

具体代码在第二点imagebutton里贴出代码。

2、imagebutton
可添加背景图片,其他同Button。

指定背景图片为res/drawable 下名为blank的图片:

android:background="@drawable/blank"

注意:android res包底下的资源文件名都不能是中文或大写字母开头的。
event.getAction()==MotionEvent.ACTION_DOWN 监听按钮按下事件
event.getAction()==MotionEvent.ACTION_UP 监听按钮弹起事件
getResources().getDrawable 获得资源图片的方法

Activity代码:

 package com.example.button;

 import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnTouchListener;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.TextView; public class MainActivity extends Activity{ private TextView tv;
private Button btn_ok,btn_cancle;
private ImageButton btn_img; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); tv = (TextView)findViewById(R.id.tv); btn_ok = (Button)findViewById(R.id.btn_ok);
btn_cancle = (Button)findViewById(R.id.btn_cancle); btn_img = (ImageButton)findViewById(R.id.btn_img); // 内部类 实现 监听
btn_img.setOnTouchListener(new OnTouchListener() { @Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
if(event.getAction()==MotionEvent.ACTION_DOWN) {
btn_img.setBackgroundDrawable(getResources().getDrawable(R.drawable.face1));
}else if(event.getAction()==MotionEvent.ACTION_UP) {
btn_img.setBackgroundDrawable(getResources().getDrawable(R.drawable.blank));
}
return false;
}
}); // 也可以 通过implements OnClickListener 实现监听
btn_ok.setOnClickListener(new OnClickListener() { @Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(v == btn_ok) {
tv.setText("触发确定按钮事件");
}
}
}); // 内部类 实现监听器
btn_cancle.setOnClickListener(new OnClickListener() { @Override
public void onClick(View v) {
// TODO Auto-generated method stub
if(v == btn_cancle) {
tv.setText("触发取消按钮事件");
}
}
}); } @Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
} }

代码运行效果:

点击'确定'按钮,左边textview 显示'触发确定按钮'

点击 imagebutton 显示笑脸,放开即还原。

顺便说点监听器的题外话:

1、监听器是个抽象类,它包含了一个事件触发时系统会去调用的函数;

2、在子类中,根据您项目的需要重写这个函数;

3、派生后的监听器需要绑定到按钮上,就像一个耳机可以发出声音,但您不去戴它,您是听不到它发出的声音的。一般的情况是这个按钮可能需要这个监听器,而另外一个按钮需要另外一个监听器,每个监听器各司其职,但功能相似时,也可以多个按钮共同绑定一个监听器;

4、各种控件,都有常用的事件,如点击按钮,拖动一个滚动条,切换一个ListView的选项等等,他的绑定监听器的函数命名规则是setOnXXListener

android学习日记03--常用控件button/imagebutton的更多相关文章

  1. android学习日记03--常用控件Dialog

    常用控件 9.Dialog 我们经常会需要在Android界面上弹出一些对话框,比如询问用户或者让用户选择.这些功能我们叫它Android Dialog对话框 对话框,要创建对话框之前首先要创建Bui ...

  2. android学习日记03--常用控件checkbox/radiobutton

    常用控件3.checkbox 复选框,确定是否勾选,点击一下勾选,点击第二下取消,当有一系列备选项时适合用checkbox控件,方便用户提交数据. 贴上例子Activity的java代码 packag ...

  3. android学习日记03--常用控件ListView

    常用控件 8.ListView 列表视图,比如游戏的排行榜.列表数据可以根据屏幕大小自适应 列表的显示需要三个元素: a.ListVeiw:用来展示列表的View. b.适配器:用来把数据映射到Lis ...

  4. android学习日记03--常用控件tabSpec/tabHost

    常用控件7.TabSpec和TabHost 比较常用的控件,感觉手机QQ的整体布局就是这个,只不过tab放在底部而已.TabSpec相当于浏览器的分页,而TabHost就相当于分页的集合TabSpec ...

  5. android学习日记03--常用控件progressbar/seekbar

    常用控件 5.progressbar 进度条,比较常用的组件,在某些操作的进度中的可视指示器,为用户呈现操作的进度,还它有一个次要的进度条,用来显示中间进度,如在流媒体播放的缓冲区的进度.一个进度条也 ...

  6. Android学习笔记_30_常用控件使用

    一.状态栏通知(Notification): 如果需要查看消息,可以拖动状态栏到屏幕下方即可查看消息.发送消息的代码如下: public void sendNotice(View v){ int ic ...

  7. android内部培训视频_第三节 常用控件(Button,TextView,EditText,AutocompleteTextView)

    第三节:常用控件 一.Button 需要掌握的属性: 1.可切换的背景 2.9.png使用 3.按钮点击事件 1)  onClick 3) 匿名类 4) 公共类 二.TextView 常用属性 1.a ...

  8. Android布局属性与常用控件

    一.Android常用布局属性 1. LinearLayout的特有属性 android:orientation:设置布局排列方式   android:layout_weight:设置所占布局的权重  ...

  9. Android SDK提供的常用控件Widget “常用控件”“Android原生”

    Android提供一个标准的视图工具箱来帮助创建简单的UI界面.通过使用这些控件(必要时,可以对这些控件进行修改). 创建一个简单的.xml文件,从预览窗口可以看到Android SDK提供的原生控件 ...

随机推荐

  1. Zend Framework XML外部实体和安全绕过漏洞

    漏洞版本: Zend Framework 1.x 漏洞描述: Bugtraq ID:66358 Zend Framework是一款开放源代码的PHP5开发框架实现. Zend Framework存在多 ...

  2. CSS预处理器Sass(Scss)、Less、Stylus

    CSS 预处理编译器能让我成程序化其的方式编写CSS代码,可以引入CSS中没有的变量.条件.函数等特性,从而让代码更简单易维护,但一般按预处理器语法编写的代码无法直接在浏览器中运行,需用通过工具比如g ...

  3. 【Web前沿技术】纯 CSS3 打造的10个精美加载进度条动画

    之前向大家介绍8款优秀的 jQuery 加载动画和进度条插件,今天这篇文章向大家推荐10个纯 CSS3 代码实现精美加载进度条动画效果的方案.加载动画和进度条在网站和 Web 应用中的使用非常流行,特 ...

  4. 《深入Java虚拟机学习笔记》- 第1章 Java体系结构

    一.体系结构组成 当编写并运行一个Java程序时,就同时体验了这四种技术.用Java语言编写源代码,编译成Java Class文件,然后再在Java虚拟机上运行class文件.当编写程序时,通过调用类 ...

  5. Python第一个入门程序

    #!usr/bin/env python3 #在UNIX上,当某程序在控制台中被引用时,该文件的头两个字节先被读入.如果这两个字节是ASCII字符 #!, #shell就会认为该文件将要由解释器执行, ...

  6. oracle ref游标

    Oracle 系列:REF Cursor 在上文  Oracle 系列:Cursor  (参见:http://blog.csdn.net/qfs_v/archive/2008/05/06/240479 ...

  7. bzoj 1432 [ZJOI2009]Function(找规律)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1432 [思路] 找(cha)规(ti)律(jie) 分析戳这儿 click here ...

  8. 五个小例子教你搞懂 JavaScript 作用域问题

    众所周知,JavaScript 的作用域和其他传统语言(类C)差别比较大,掌握并熟练运用JavaScript 的作用域知识,不仅有利于我们阅读理解别人的代码,也有助于我们编写自己的可靠代码. 下面笔者 ...

  9. win10+vs2013+Qt5.4 安装方法

    环境:win10 cn_visual_studio_ultimate_2013_x86_dvd_3009109 qt-opensource-windows-x86-msvc2013_64_opengl ...

  10. ACM2034

    /*人见人爱A-BProblem Description参加过上个月月赛的同学一定还记得其中的一个最简单的题目,就是{A}+{B},那个题目求的是两个集合的并集,今天我们这个A-B求的是两个集合的差, ...