Giter Site home page Giter Site logo

lixiangdebaby / hodgepodge Goto Github PK

View Code? Open in Web Editor NEW

This project forked from dingshuangdian/hodgepodge

0.0 1.0 0.0 12.79 MB

mvvm模式+rxjava2+retrofit2+constraintlayout布局高仿腾讯新闻客户端,#视频列表滑动自动播放+recycleview复杂混合布局实现+优雅的上拉加载下拉刷新#fragment懒加载完美实现及封装

Java 100.00%

hodgepodge's Introduction

高仿腾讯新闻

mvvm+databinding+rxjava2实现高仿腾讯新闻客户端

app所有数据来源互联网抓取,仅供学习交流

项目会一直持续更新,感谢大家的支持!!!

欢迎start&fork

*部分页面效果图*

首页                热点精选                视频

*懒加载封装基类*

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
    mInflater = inflater;
    mContainer = container;
    if (t != null && t.getRoot() != null) {
        return t.getRoot();
    } else {
        initFragment();
        return t.getRoot();
    }
}

@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    inInit = true;
    initData();
    isCanLoadData();
}
public T setBinding(T k) {
    k = DataBindingUtil.inflate(mInflater, setContentView(), mContainer, false);
    t = k;
    return k;
}

@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
    super.setUserVisibleHint(isVisibleToUser);
    isCanLoadData();
}

public abstract void initFragment();
public abstract void initData();

private void isCanLoadData() {
    if (!inInit) {
        return;
    }
    if (getUserVisibleHint()) {
        lazyLoad();
        isLoad = true;
    } else {
        if (isLoad) {
            stopLoad();
        }
    }
}

@Override
public void onDestroyView() {
    super.onDestroyView();
    inInit = false;
    isLoad = false;
}

public abstract int setContentView();

public abstract void lazyLoad();

public void stopLoad() {

}

*带全局网络监听,权限控制,沉浸式状态栏等的activity基类*

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    initView();
    StatusBarUtil.setRootViewFitsSystemWindows(this, true);
    StatusBarUtil.setTranslucentStatus(this);
    // StatusBarUtil.setStatusBarColor(this, R.color.edit_stroke);
    if (!StatusBarUtil.setStatusBarDarkTheme(this, true)) {
        StatusBarUtil.setStatusBarColor(this, 0x55000000);
    }
    listener = this;
    //Android 7.0以上需要动态注册
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N && !getClass().getSimpleName().equals("SplashScreenActivity")) {
        //实例化IntentFilter对象
        IntentFilter filter = new IntentFilter();
        filter.addAction("android.net.conn.CONNECTIVITY_CHANGE");
        receiver = new NetworkStateReceiver();
        //注册广播接收
        registerReceiver(receiver, filter);
    }
}

混淆打包(已经适配大多数框架,拿来直接用)

buildTypes {
    release {
        //开启代码混淆
        minifyEnabled true
        //Zipalign优化
        zipAlignEnabled true
        // 移除无用的resource文件
        shrinkResources true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }

}

部分代码

 -optimizationpasses 5
 # 混淆时不使用大小写混合,混淆后的类名为小写
 -dontusemixedcaseclassnames
 
 # 指定不去忽略非公共的库的类
 -dontskipnonpubliclibraryclasses
 
 # 指定不去忽略非公共的库的类的成员
 -dontskipnonpubliclibraryclassmembers
 
 # 不做预校验,可加快混淆速度
 # preverify是proguard的4个步骤之一
 # Android不需要preverify,去掉这一步可以加快混淆速度
 -dontpreverify
 
 # 不优化输入的类文件
 -dontoptimize
 
 # 混淆时生成日志文件,即映射文件
 -verbose
 
 # 指定映射文件的名称
 -printmapping proguardMapping.txt
 
 #混淆时所采用的算法
 -optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
 
 # 保护代码中的Annotation不被混淆
 -keepattributes *Annotation*

hodgepodge's People

Contributors

dingshuangdian avatar eywalink avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.