前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android开发笔记(八十六)几个特殊的类

Android开发笔记(八十六)几个特殊的类

作者头像
aqi00
发布2019-01-18 14:29:28
5870
发布2019-01-18 14:29:28
举报
文章被收录于专栏:老欧说安卓老欧说安卓

接口interface

interface是一些功能的集合,但它只定义了对象必须实现的成员,而不包含成员的实现代码,成员的具体代码由实现接口的类提供。Android对接口的使用场景主要有三类:事件监听器接口、对象序列化结构、线程类相关接口。

事件监听器接口

这类接口名称一般以Listener或者CallBack结尾,监听器定义了事件触发时应该进行的操作方法,具体操作步骤需要自定义实现。常见的监听器接口有: 1、点击监听器,如OnClickListener、OnLongClickListener、OnCheckedChangeListener、OnItemClickListener、OnItemLongClickListener、OnItemSelectedListener等等,详见《Android开发笔记(四十三)点击事件》;以及OnSeekBarChangeListener,详见《Android开发笔记(五十八)铃声与震动》; 2、UI监听器,如AnimationListener、OnPageChangeListener、TextWatcher,详见《Android开发笔记(四十四)动态UI事件》; 3、浏览器交互监听器,如WebViewClient、WebChromeClient、DownloadListener,详见《Android开发笔记(六十四)网页加载与JS调用》; 4、手机信号监听器,如LocationListener、PhoneStateListener,详见《Android开发笔记(四十六)手机相关事件》; 5、摄像头监听器,如AutoFocusCallback、ShutterCallback、PictureCallback、OnZoomChangeListener,详见《Android开发笔记(五十六)摄像头拍照》; 6、媒体录制与播放监听器,如OnErrorListener、OnInfoListener、OnPreparedListener、OnCompletionListener、OnSeekCompleteListener、OnVideoSizeChangedListener,详见《Android开发笔记(五十七)录像录音与播放》;

对象序列化接口

这类接口主要有Parcelable和Serializable两种结构定义,对象序列化接口的详细介绍参见《Android开发笔记(二十七)对象序列化》。

线程类相关接口

这类接口定义了线程可定制的操作方法,主要包括以下三种接口: 1、Runnable接口,用于定义一系列连续处理的事务,详见《Android开发笔记(四十七)Runnable接口实现多线程》; 2、ThreadFactory接口,用于定义线程池中的线程工厂方法,详见《Android开发笔记(七十六)线程池管理》; 3、UncaughtExceptionHandler接口,用于定义线程遇到未知异常时的处理方法,详见《Android开发笔记(七十八)异常容错处理》;

抽象类abtract class

抽象类是一个包含抽象方法的类,不过是否包含抽象方法这不是必要条件,只要类名被abtract修饰即可认为是抽象类。所谓抽象方法,其实与接口中的方法类似,都是只定义了成员方法,但不包括成员的实现代码,具体代码由抽象类的派生类来实现。抽象类与普通类的区别主要有三点: 1、抽象方法必须为public或者protected,因为如果为private,则不能被子类继承,就无法实现该方法; 2、抽象类与接口一样都不能直接实例化对象; 3、由抽象类派生出的子类必须实现父类的抽象方法,否则该子类也必须定义为抽象类; Android对抽象类的使用场景主要有三类:部分基础控件、适配器、自定义处理对象。

部分基础控件

此种抽象类主要是一些聚合了其他控件主要功能的类,包括: 1、复合按钮CompoundButton,其实它并未定义抽象方法,仅仅是个中间层的基类。CompoundButton的派生类包括RadioButton、CheckBox、Switch等等,详见《Android开发笔记(三十七)按钮类控件》; 2、适配视图AdapterView,它与适配器联合使用,实现列表展示的效果。AdapterView的派生类包括Spinner、ListView、GridView等等,详见《Android开发笔记(三十八)列表类视图》; 3、基础动画Animation,它也没有定义抽象方法,但定义了一个空方法applyTransformation,每个派生类都要重写该方法,以实现具体的动画效果。Animation的派生类包括AlphaAnimation、RotateAnimation、ScaleAnimation、TranslateAnimation等等,详见《Android开发笔记(十五)淡入淡出动画》、《Android开发笔记(十六)秋千摇摆动画》;

适配器

适配器在实际使用时都要派生重写,所以sdk里的适配器类都是抽象类或接口,包括: 1、列表适配器,如ListAdapter、SpinnerAdapter、BaseAdapter等等,详见《Android开发笔记(三十八)列表类视图》; 2、页面适配器,如PagerAdapter、FragmentPagerAdapter、FragmentStatePagerAdapter等等,详见《Android开发笔记(二十一)横幅轮播页Banner》;

自定义处理对象

在该情况中,抽象类里的个别方法需要开发者来实现,具体的类包括: 1、SQLite操作类SQLiteOpenHelper,需要开发者实现onCreate和onUpgrade方法,详见《Android开发笔记(三十)SQLite数据库基础操作》; 2、异步任务处理AsyncTask,需要开发者实现doInBackground方法,详见《Android开发笔记(四十九)异步任务处理AsyncTask》;

内部类

Java允许在类中再定义类,这种在其它类内部定义的类就叫做内部类。内部类有四种,分别是类中内部类、方法内部类、参数内部类和静态嵌套类,其中Android开发中常用的是类中内部类和参数内部类两种。

类中内部类

类中内部类在类内部定义,它与上级类的成员方法平级;之所以单独形成一个内部类,是因为类中的功能可以单独管理;但它又不新建一个java文件,是因为内部类与上级类存在一定程度的耦合。内部类有如下特点: 1、内部类可以访问上级类的所有成员(包括变量和方法),当然包括私有成员; 2、内部类中的this指的是内部类本身,如果要用上级类的实例对象,得使用“上级类的类名.this”获取; Android开发中常见的类中内部类主要有以下几种: 1、各种建造者Builder,用于对象参数的统一建造,避免在运行过程中发生参数值变更; 2、各种布局参数LayoutParams,用于布局参数的赋值与获取;

参数内部类

参数内部类又叫匿名内部类,它在方法调用时,以临时定义类的形式传入参数位,因为是临时定义,所以没有指定具体的类名。匿名内部类主要用于代码行很少的自定义类,在实际开发中,常见的匿名内部类多是由OnClickListener或者Runnable派生出来。 下面是基于OnClickListener的匿名内部类代码例子:

代码语言:javascript
复制
	vh.txtLineOne.setOnClickListener(new OnClickListener() {
		public void onClick(View v) {
			Intent intent = new Intent(mContext, GangpeiDetailActivity.class);
			((Activity) mContext).startActivity(intent);
		}
	});

下面是基于Runnable的匿名内部类代码例子:

代码语言:javascript
复制
	//通过Handler来确保init方法的执行在主线程中
	handler.post(new Runnable() {
	    public void run() {
	        //调用客户端setContactInfo方法
	        webView.loadUrl("javascript:setContactInfo('" + getJsonStr() + "')");
	    }
	});

点此查看Android开发笔记的完整目录

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016年04月18日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 接口interface
    • 事件监听器接口
      • 对象序列化接口
        • 线程类相关接口
        • 抽象类abtract class
          • 部分基础控件
            • 适配器
              • 自定义处理对象
              • 内部类
                • 类中内部类
                  • 参数内部类
                  相关产品与服务
                  数据库
                  云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档