美文网首页 Android知识进阶(遥远的重头开始)
Android-2019新项目个人最新工程结构(每个人都不一样,

Android-2019新项目个人最新工程结构(每个人都不一样,

作者: MonkeyLei | 来源:发表于2019-07-21 16:52 被阅读0次

记录下最近的工程结构,之后如果有更好的再回味下...

之前的封装过程 MonkeyLei:Android-基本的MVP结构的模板工程(泛型,Rx通用请求,BaseAdapter实践目录链接)

以及完善后的工程NetNut/Android模板基础工程

就是目前新工程经过两个项目的重构,思考进行了完善,同时工程结构也发送了改变,采用分模块的形式(也就是分个人中心、首页,用户模块的形式,不再总得分activity, fragment, pop等结构):

image

<figcaption style="margin-top: 0.66667em; padding: 0px 1em; font-size: 0.9em; line-height: 1.5; text-align: center; color: rgb(153, 153, 153);">总得结构</figcaption>

image

<figcaption style="margin-top: 0.66667em; padding: 0px 1em; font-size: 0.9em; line-height: 1.5; text-align: center; color: rgb(153, 153, 153);">采用模块划分,更加适合团队合作开发</figcaption>

小萌新感觉这样更适合多人协同开发,而且公共的东西可以提出来,比如base模块就是大家都可以共用。后续还会针对其进行完善的,可能自己想做或者做错了呢! ! 嘻嘻....。

另外我的基础界面,如下

image

里面之前封装了点击事件(针对多次连续点击进行了处理),我增加了一个功能,就是如果一旦点击,则让这个view禁止点击(xxxview.setEnabled(false)), 当结束网络请求(不管失败还是成功)或者说点击进行了页面跳转等其他操作,此时恢复按钮点击事件(xxxview.setEnabled(true))。

简单看下吧 BaseViewOnClickListener.java

import android.view.View;

import java.lang.ref.WeakReference;
import java.util.HashMap;

/*
*@Description: 点击事件封装,避免重复点击
*@Author: hl
*@Time: 2018/6/14 10:18
*/
public class BaseViewOnClickListener implements View.OnClickListener {
    private long mLastClickTime  = 0;
    private static final int TIME_INTERVAL = 1000;
    private WeakReference<View.OnClickListener> clickListenerWeakReference;
    private HashMap<View, Boolean> viewHashMap = new HashMap<>();

    public BaseViewOnClickListener(View.OnClickListener viewOnclick){
        this.clickListenerWeakReference = new WeakReference<>(viewOnclick);
    }

    @Override
    public void onClick(View view) {
        if ((System.currentTimeMillis() - mLastClickTime) >= TIME_INTERVAL) {
            ///< 禁止多次点击
            if (viewHashMap.containsKey(view) && viewHashMap.get(view)){
                return;
            }
            viewHashMap.put(view, true);
            view.setEnabled(false);
            clickListenerWeakReference.get().onClick(view);
            mLastClickTime = System.currentTimeMillis();
        }
    }

    /**
     * 释放让其可点击
     */
    public void enableClick(){
        for(View key: viewHashMap.keySet())
        {
            if (viewHashMap.get(key)){
                key.setEnabled(true);
                viewHashMap.put(key, false);
            }
        }
    }
}

然后再基础界面里面处理下(主要是点击事件相关处理部分,其他的基础界面大家应该都有自己的处理方式了)比如 BaseAppCompatActivity.java

    @Override
    public void onComplete() {
        if (null != baseViewOnClickListener){
            baseViewOnClickListener.enableClick();
        }
    }

    /**
     * 初始化监听事件
     * @param viewOnclick
     */
    protected void initOnClickEvent(View.OnClickListener viewOnclick){
        baseViewOnClickListener = new BaseViewOnClickListener(viewOnclick);
    }

    /**
     * 设置控件监听事件
     * @param views
     */
    protected void setOnClickEvent(View... views){
        for (View view : views){
            viewList.add(view);
            view.setOnClickListener(baseViewOnClickListener);
        }
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        onComplete();
        for (int i = 0; i < viewList.size(); ++i){
            if (null != viewList.get(i)){
                viewList.get(i).setOnClickListener(null);
            }
        }
        viewList.clear();
    }

我再想,或者还有什么更牛皮的方式来针对这个UI和事件进行捆绑,再琢磨琢磨吧。。。目前网络请求其实已经进行了捆绑,点击禁止再次点击,然后通用网络请求结束自行放开点击。还不错。 如果点击事件是进行页面跳转(销毁页面的情况,也会自动恢复,清楚点击等操作)。 基本上问题不大了! 能避免很多问题。。。如果可能的话,还可以给view增加呼吸效果,表面正在处理.....反正小萌新这么想的,也部分这样做了....

好吧,菜鸟自啄一把! 年前不知道还能不能更新几篇,“在这里祝大家新年快乐,万事如意。凡事开心就行,什么乱七八糟的无所谓啦!”“也希望自己能更坚持,更开心,更好,更幸福,更加不菜!希望家人幸福,爱人幸福,朋友幸福”

相关文章

  • Android-2019新项目个人最新工程结构(每个人都不一样,

    记录下最近的工程结构,之后如果有更好的再回味下... 之前的封装过程 MonkeyLei:Android-基本的M...

  • 揭秘……命由谁造?

    每个人毕生的追求都不一样,每个人毕生的喜欢都不一样;每个人毕生的选择也都不一样,有的人的选择可能刚好符合了...

  • 最新项目

    配一张和客户沟通的图片 第一段:做过活动运营的小伙伴应该都知道,能够大老远来参加活动的小伙伴都是真爱。那么大老远坐...

  • sql 记一次sql写方法优化: 查询每个分组最新的记录 20

    biz_cloudsign_login是登录记录, 表数据28万。需求是:查询每个人最新登录记录。 表结构 思路:...

  • 如果世界漆黑,其实我很美

    在这个世界上,每个人的命运都不相同,每个人的故事都不一样,每个人的经历也不一样,每个人都有他们自己的一生。人们生下...

  • 盲区

    每个人看到的都不一样 每个人都有看不到的地方

  • 1996年的爱情故事

    前言 每个人都爱过,每个人对爱情的理解都不一样,有人...

  • 每个人的生活都不一样

    每个人活着都不容易,所遇到的人和事也是不一样的;每个人心态也是不一样的,每个阶段的心态都不一样;每个人看待问题的角...

  • 人心

    人与人真的不一样,每个人想要的温度都不一样,每个人想要的温暖也不一样;每个人想要的爱情同样不一样,每个人想要的家也...

  • 要坚定选择适合自己的路走下去

    写这句话,说明每个人的情况都不一样,每个人都有每个人的选择,每个人的选择不一样,未来发展都会不一样。 其实选择有很...

网友评论

    本文标题:Android-2019新项目个人最新工程结构(每个人都不一样,

    本文链接:https://www.haomeiwen.com/subject/tbcvlctx.html