Android零基础入门(四):UI基础入门

目录

第一节:Android入门

Android概况

Android发展史

常见概念

Android系统架构

Android版本

Android前景

Android开发工具

第二节:Activity入门

第三节:View入门

第四节:Android布局之线性布局

第五节:UI基础控件

一、TextView

二、Button

三、EditText

四、ImageView

五、ImageButton

六、CheckBox

七、RadioButton/RadioGroup

八、ToggleButton 开关

九、SeekBar 可拖拽进度条

十、ProgressBar 进度条

十一、RatingBar 评分进度条

十二、Time/DatePicker

一、TimePicker

二、DatePicker

第六节:Activity管理

一、创建Activity过程

二、启动Activity

三、BackStack回退栈


第一节:Android入门

Android概况

Andy Rubin:Android公司开发领头人,2003年成立Android公司,2005年被Google收购,任Google公司副总裁,2013年离职。

Android发展史

常见概念

SDK:Software Development Kit,软件开发工具包
NDK:Native Development Kit,Android原生工具开发包

Android系统架构

第一层:Applications---用户

第二层:Application Framework---开发人员

第三层:Libraries(Android RunTime)---开发人员

第四层:Linux Kernel---内核层,跟硬件打交道,如各种硬件的驱动

 

Linux Kernel:我们知道Android其实就是一个操作系统,其底层是基于Linux Kernel的,这一层主要完成的是操作系统所具有的功能,比如这一层有许多的驱动程序,正是通过这些驱动程序来驱动我们设备上的硬件设备的。

Android Runtime:Android的运行环境,我们学过java的都知道,java程序的运行需要java的核心包的支持,然后通过JVM虚拟机来运行我们的应用程序,这里Android Runtime里的Core Libraries就相当于java的JDK,是运行android应用程序所需要的核心库,Dalvik Virtual Machine就相当于JVM,这是Google专为Android开发的运行android应用程序所需的虚拟机。

Liberaries:这里面都是Android的库文件,例如我们访问SQLite数据库的库文件等等。

Application Framework:应用程序的框架,这个是非常的重要的,相信Framework这个词大家都应该非常的熟悉了,我们学习Android也主要学的就是这一层,我们通过这些各种各样的框架来实现我们的Application。

Application:这个就是我们开发的Application了。

Android版本

Android2.3:号称最稳定的版本,以前装机量最大的一个版本。

Android3.x:主要用在平板,手机很少用。

Android4.0:实现手机平板跨平台搭载。

开发人员版本选择:考虑市场占有率、版本稳定性、客户群体等。

Android前景

应用领域:车载、智能家电、pos机、AR(增强现实)领域、VR(虚拟现实)领域等。

Android开发工具

IntelliJ IDEA:简称IDEA ,是java编程语言开发的集成环境。

Eclipse:Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。

AndroidStudio:是谷歌推出一个Android集成开发工具,基于IntelliJ IDEA. 类似 Eclipse ADT,Android Studio 提供了集成的 Android 开发工具用于开发和调试。(推荐)

第二节:Activity入门

什么是Activity

  • Activity是一个应用程序组件
  • 为应用程序提供一个可视化页面
  • 用户通过此页面与应用程序进行交互

启动Activity要素

Activity与Layout之间的关系:静态加载控件

Activity与View之间的关系:动态修改控件

 

第三节:View入门

什么是View

  • 屏幕方块内所显示的内容,都可以称为View或View的子类

为控件添加监听器

  1. 定义Button类
  2. 获取Button对象
  3. 定义内部类实现OnClickListener接口
  4. 重写onClick方法
  5. 生成监听器对象
  6. 为控件添加监听器
public class MainActivity extends Activity {
	//监听器:1.定义Button类
	private Button button;
	private int sum=0;
	private ButtonListener buttonListener;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		//监听器:2.获取Button对象
		button=(Button)findViewById(R.id.button);
		//监听器:5.生成监听器对象
		buttonListener=new ButtonListener();
		//监听器:6.为按钮添加监听器
		button.setOnClickListener(buttonListener);
	}
	//监听器:3.定义内部类并实现OnClickListener接口
    class ButtonListener implements OnClickListener{
    //监听器:4.重写onClick方法
		@Override
		public void onClick(View v) {
			// 当控件被点击之后调用
			sum++;
			System.out.println("*************当前点击次数为:"+sum);
			textView.setText("*************当前点击次数为:"+sum);
			
		}
    	
    }
}

简化:步骤3-6可以简化成为控件添加监听器,一个实现View.OnClickListener接口的匿名类。

public class MainActivity extends Activity {
	//监听器:1.定义Button类
	private Button button;
	private int sum=0;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		//监听器:2.获取Button对象
		button=(Button)findViewById(R.id.button);
		//监听器:3.为按钮添加监听器
		button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                // 当控件被点击之后调用
			    sum++;
			    System.out.println("*************当前点击次数为:"+sum);
			    textView.setText("*************当前点击次数为:"+sum);
            }
        });
	}
	
}

第四节:Android布局之线性布局

常见布局的种类

  • FrameLayout框架布局
  • LinearLayout线性布局
  • AbsoluteLayout绝对布局
  • RelativeLayout相对布局
  • TableLayout表格布局
  • GridLayout网格布局
  • ConstraintLayout约束布局

布局的实现方式

  1. 通过XML布局文件实现控件布局
  2. 通过java代码实现控件布局

gravity与layout_gravity

  • android:gravity:用于设置该控件中内容相对于该控件的对齐方式
  • android:layout_gravity:用于设置该控件相对于父控件的对齐方式

padding与margin边距

  • padding:用于设置该控件中内容相对于该控件的边距,即内边距。
  • margin:用于设置该控件相对于其他控件的边距,即外边距。

weight

  • layout_weight的值用于在线性布局中指定父控件剩余空间的分配比例。

 

第五节:UI基础控件

一、TextView

属性 ID 

  • @id引用设置好的ID
  • @+id创建新的ID

属性background

  • 设置颜色:“#00ff00”或“@color/gray”
  • 设置图片:"@drawable/ic_launcher"

属性text

  • 直接输入字符:"hello world"
  • 引用strings文件:"@strings/title"推荐使用,不同语言版本翻译比较容易

属性 textSize

  • 官方推荐使用sp单位,个人建议用dp,改变系统字体大小不会影响界面美观。

属性autoLink:设置文本类型

  • none不设置
  • web网页
  • email邮箱
  • phone电话
  • map地图
  • all全部

属性drawableLeft:文字左侧添加图片

属性lines="3"设置行数为3

属性ellipsize:文字超出显示范围时用省略号替换(需要配合lines属性)

  • start
  • middle
  • end尾部显示...
  • marquee跑马灯;需要设置其他属性 textIsSelectable="true";marqueeRepeatLimit="marquee_forever";singleLine=true;

属性textStyle:设置粗体bold

二、Button

实现监听器四种方式解析

  1. 创建成员内部类
  2. 创建匿名内部类
  3. Activity直接实现监听器接口
  4. 通过XML布局文件定义onClick属性

三、EditText

属性inputType:设置输入文本的类型,如textPassword密码

属性hint:提示信息

属性textColorHint:提示信息颜色

属性maxLength:文字多个的个数

四、ImageView

属性src="@drawable/cat"

属性scaleType:缩放类型

  • center 图片比ImageView大,显示中间部分;图片比ImageView小,居中显示。
  • centerCrop 不管图片大还是ImageView大,都居中填满整个ImageView。
  • centerInside 图片比ImageView大,缩小图片保证完整显示;图片比ImageView小,居中显示。
  • fitCenter 不管图片大还是ImageView大,图片完整显示,尽可能填满ImageView。
  • fitStart 图片上边与ImageView上边对齐
  • fitEnd图片下边与ImageView下边对齐
  • fitXY
  • Matrix

五、ImageButton

ImageView和Button的结合

六、CheckBox

XML属性checked="true";

事件监听器CompoundButton.OnCheckedChangeListener:选中或取消时触发

  • public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) 参数1:被点击的CheckBox;参数1:是否选中状态

 

七、RadioButton/RadioGroup

RadioGroup包裹RadioButton

RadioGroup事件监听器RadioGroup.OnCheckedChangeListener:选择某个radioButton时触发

  • public void onCheckedChanged(RadioGroup group, int checkedId) 参数1:当前RadioGroup控件;参数2:被点击的RadioButton的ID

八、ToggleButton 开关

XML属性textOff:关闭状态显示的文本

XML属性textOn:打开状态显示的文本

事件监听器OnClickListener

方法isChecked():是否打开状态

九、SeekBar 可拖拽进度条

事件监听器OnSeekBarChangeListener,三个抽象方法

  • public void onStopTrackingTouch(SeekBar seekBar) 将在结束拖拽进度条时被触发
  • public void onStartTrackingTouch(SeekBar seekBar) 将在开始拖拽进度条时被触发
  • public void onProgressChanged(SeekBar seekBar, int progress,boolean fromUser) 将在进度发生变化时被触发。参数 1、当前绑定的seekBar对象;参数2、当前进度数值;参数3、是否为用户手动触发

方法setMax(100):设置进度条最大值

方法setProgress(30):设置进度条当前值

十、ProgressBar 进度条

XML属性style:设置样式

  • 默认:圆形
  • style="?android:attr/progressBarStyleLarge" 大号圆形
  • android:id="@+id/progressBar_small"小号圆形
  • style="?android:attr/progressBarStyleHorizontal" 条形,进度确定,可设置次级进度条

incrementProgressBy(20):累加进度

incrementSecondaryProgressBy(40):累加次要进度

setMax(100):设置最大值

.setProgress(30):设置进度

setSecondaryProgress(40):设置次要进度

 

十一、RatingBar 评分进度条

XML属性isIndecator="false":允许用户手动更改进度。

XML属性numStarts="5":星星的个数。

XML属性stepSize="0.5":一次调整半颗星。

事件监听器OnRatingBarChangeListener:

  • public void onRatingChanged(RatingBar ratingBar, float rating,boolean fromUser) 参数1:当前绑定的ratingBar对象;参数2:当前rating评分的进度;参数3:是否由用户触发
     

十二、Time/DatePicker

一、TimePicker

setIs24HourView(true):设置时间选择器为24小时制

setCurrentHour(Hour):设置时间选择器时间:小时

setCurrentMinute(Minute):设置时间选择器时间:分钟

事件监听器OnTimeChangedListener:

  • public void onTimeChanged(TimePicker view, int hourOfDay, int minute) 当时间选择器发生改变时触发

二、DatePicker

datePicker.init(Year, Month, Day, new OnDateChangedListener() {

			@Override
			public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
				// 当日期选择器发生改变时,触发
				System.out.println("From DatePicker : " + year + "/"
						+ (monthOfYear + 1) + "/" + dayOfMonth);
				setTitle("From DatePicker : " + year + "/" + (monthOfYear + 1)
						+ "/" + dayOfMonth);
			}

第六节:Activity管理

一、创建Activity过程

  1. 创建一个类继承自Activity。
  2. 重写onCreate方法,在方法中为类设置布局setContentView。
  3. 在manifest文件中注册Activity。

二、启动Activity

  1. 创建Intent意图对象
  2. 调用setClass设置要启动的Activity
  3. 调用startActivity进行跳转

三、BackStack回退栈

保存Activity的栈,每次打开的Activity都会压如栈中,按返回键会销毁栈中最顶层的Activity。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值