博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
整合大量开源库项目(六)ListView动画,Activity"抽象化",顺便提一提”抽象类“And"接口"...
阅读量:5925 次
发布时间:2019-06-19

本文共 3476 字,大约阅读时间需要 11 分钟。

转载请注明出处:

昨天发了一个自己写的简单的诸如EditText一个自定义控件,不过貌似反响不太好,这里再推一推,希望大家给予意见和支持:

OK,言归正传,上一次添加了一个“个人开发:界面,希望把之后自己写的一些东西都加入里面,作为一个”大型Lib”使用,所以就简单的把内容和界面搭了一下,也大致区分了下栏目,这种展示性的还是以ListView为佳,上下效果图。

图片效果

就是点进去之后,缓慢的加载这么个效果。

说一下,加这么个效果的好处:

1.在加载的过程中可以做一些异步的事情,降低系统的负荷

2.让整个页面的出现显得更柔和


实现:

只需要在ListView里添加android:layoutAnimation="@anim/code_item_anim"

指向一个animation就行了,当然你也可以在java代码里加。

一个作为动画实现,一个座位每一次的延迟加载。

这里贴一下所用到的素材文件:

code_item_anim

list_anim.xml

Activity和Adapter的代码在源码里找把,文章最后会贴的。


再说下Activity的”抽象化“

平时,我们要用一些通用的方法怎么办?

1.写工具类,调用(这个我感觉是最多的了)。

2.写一个公有父类,然后用父类的Protected的方法(Dialog之类的用的比较多)。

3.其他。

好,那么我来贴一下所谓的”抽象化“。

public abstract class Son extends Activity{
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(getLayout()); bindID(); init(); setOnclick(); logic(); } public abstract int getLayout(); public abstract void bindID(); public abstract void init(); public abstract void setOnclick(); public abstract void logic();}

有一个类叫Son继承于Activity,有一系列的抽象方法(当然,其实这些抽象方法是不是抽象的不要紧,但是一定是抽象类)

然后,又有一个类继承了Son

//像这样只是继承了public class CodeActivity extends Son

那么集成一个抽象类,就要实现他的抽象方法,像这样

@Override    public int getLayout() {        LogUtils.d("--->CodeActivity getLayout");        return R.layout.activity_code;    }    @Override    public void init() {    }    @Override    public void bindID() {    }    @Override    public void setOnclick() {    }    @Override    public void logic() {        LogUtils.d("--->CodeActivity logic");    }

代码就这些,我们来说下为什么这么做。

我们繁杂的Activity的onCreate方法其实是我们要Code最多的地方,从findviewbyid到setOnclickListener,然后还可能有一些其他业务逻辑的操作。

但是我这么一抽象,就间接的把onCreate方法进行了分层,每一个方法很清楚的告诉别人(读你代码的人),你这是关于什么的,让代码的可读性更强,逻辑更清晰。

当然,已有很多小伙伴是在Activity内部写了一个诸如private void init();然后在onCreate方法中init();一下,其实也行,但是有可能你每一个Activity都得那么做,但是现在,我们只需要extends Son就可以完成这些操作,何乐而不为呢?

这里也只是举了一个例子,你也可以声明Interface来做,也行效果相同。

像这样:

下面理一下基础:

抽象类

抽象类是用来捕捉子类的通用特性的 。它不能被实例化,只能被用作子类的超类。抽象类是被用来创建继承层级里子类的模板

基类

public abstract class GenericServlet implements Servlet, ServletConfig, Serializable {
// abstract method abstract void service(ServletRequest req, ServletResponse res); void init() { // Its implementation } // other method related to Servlet}

实现

public class HttpServlet extends GenericServlet {
void service(ServletRequest req, ServletResponse res) { // implementation } protected void doGet(HttpServletRequest req, HttpServletResponse resp) { // Implementation } protected void doPost(HttpServletRequest req, HttpServletResponse resp) { // Implementation } // some other methods related to HttpServlet}

接口

接口是抽象方法的集合。如果一个类实现了某个接口,那么它就继承了这个接口的抽象方法。这就像契约模式,如果实现了这个接口,那么就必须确保使用这些方法。接口只是一种形式,接口自身不能做任何事情。

接口:

public interface Externalizable extends Serializable {
void writeExternal(ObjectOutput out) throws IOException; void readExternal(ObjectInput in) throws IOException, ClassNotFoundException;}

实现:

public class Employee implements Externalizable {
int employeeId; String employeeName; @Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException { employeeId = in.readInt(); employeeName = (String) in.readObject(); } @Override public void writeExternal(ObjectOutput out) throws IOException { out.writeInt(employeeId); out.writeObject(employeeName); }}

源码地址:

这里写图片描述

记得点个赞哦,谢谢支持!

你可能感兴趣的文章
组策略管理——软件限制策略(4)
查看>>
DataV:可视化大屏展示神器实战分享
查看>>
Android实现ListView(1)
查看>>
打造自己的装机U盘(二)
查看>>
TCP连接出现大量TIME_WAIT的解决办法
查看>>
为什么PostgreSQL比MongoDB还快之完结篇(深挖单点索引查询)
查看>>
CenterOS x64安装serv-U
查看>>
Linux命令大总结(早期学习时的笔记)
查看>>
如何恢复master数据库
查看>>
安装SQL Server 2005时,出现“SQL Server 服务无法启动。……”提示的解决方法
查看>>
编写iptables脚本实现IP地址、端口过滤
查看>>
Linux-PAM & PAM-MySQL的总结
查看>>
libgdx游戏引擎开发笔记(十)SuperJumper游戏例子的讲解(篇四)---- 主游戏界面内部框架编写...
查看>>
解决笔记本重装问题(VISTA系统改为XP系统)
查看>>
实践 Neutron 前的两个准备工作 - 每天5分钟玩转 OpenStack(78)
查看>>
7z压缩文档的powershell示例
查看>>
10.2.0.5启动enterprise manager
查看>>
Oracle hang 之sqlplus -prelim使用方法
查看>>
浅谈RBF函数
查看>>
一个简单的MVC模式练习
查看>>