Coder Social home page Coder Social logo

androidbasicproject's Introduction

AndroidBasicProject是一个简易的Android基础项目,方便您快速进行开发。 包含以下内容:

  • BaseActivity、BaseFragment
  • Activity栈管理
  • 异常信息收集
  • 日志打印
  • 丰富的工具类

通用适配器请参考: CommonAdapter

APK下载

##使用步骤

第一步:

dependencies {
    compile 'com.classic.core:classic:2.0'
}

第二步:

public class YourApplication extends Application {

    @Override public void onCreate() {
        super.onCreate();

        /**
         * 默认配置
         * 内部调用了: initDir() initLog(false) initExceptionHandler()三个方法
         */
        BasicConfig.getInstance(this).init();

//        or

        /**
         * 自定义配置
         * initDir() 初始化SDCard缓存目录
         * initLog() 初始化日志打印
         * initExceptionHandler() 初始化异常信息收集
         */
        BasicConfig.getInstance(this)
                   .initDir() // or initDir(rootDirName)
                   .initExceptionHandler()
                   .initLog(true); //更多初始化日志方法见下方


        

        /**
         * @param tag 日志标示
         */
        initLog(tag)
                
        /**
         * @param tag 日志标示
         * @param isDebug true:打印全部日志,false:不打印日志
         */
        initLog(tag, isDebug)

        /**
         * @param tag 日志标示,可以为空
         * @param methodCount 显示方法行数,默认为:2
         * @param isHideThreadInfo 是否显示线程信息,默认显示
         * @param logTool 自定义日志打印,可以为空
         * @param isDebug true:打印全部日志,false:不打印日志
         */
        initLog(tag, methodCount, isHideThreadInfo, logTool, isDebug)
    }
}

##代码示例

Activity示例

public class TestActivity extends BaseActivity {
    private RecyclerView mRecyclerView;

    @Override public int getLayoutResId() {
        return R.layout.activity_main;
    }

    //初始化一些数据
    @Override public void initData() {
        super.initData();
        Intent intent = getIntent();
        params = intent.getStringExtra(...);
    }

    //初始化view
    @Override public void initView() {
        super.initView();
        mRecyclerView = (RecyclerView) findViewById(R.id.main_rv);
        LinearLayoutManager manager = new LinearLayoutManager(this);
        manager.setOrientation(LinearLayoutManager.VERTICAL);
        mRecyclerView.setLayoutManager(manager);
        mRecyclerView.setHasFixedSize(true);
        mRecyclerView.setItemAnimator(new DefaultItemAnimator());
        
        /**
         * 使用Fragment
         * 参数1:被替换为Fragment的视图id
         * 参数2:BaseFragment对象
         */
        changeFragment(R.id.fragment_layout, new ImageFragment());
    }


    //以下为可选方法,根据需要进行重载.
    //方法执行顺序:
    //initPre() --> initInstanceState(Bundle savedInstanceState) --> initData() --> initView() --> register()
    //unRegister()方法默认在onDestroy()内部执行

    //这里可以注册一些广播、服务
    @Override public void register() { }
    //注销广播、服务
    @Override public void unRegister() { }
    //只有第一次才会执行,这里可以做一些界面功能引导
    @Override public void onFirst() { }
    //这个方法会在setContentView(...)方法之前执行
    @Override public void initPre() { }
    //处理状态的恢复操作
    @Override public void initInstanceState(Bundle savedInstanceState) { }
    @Override public void initToolbar() { }
    //view点击事件统一处理
    @Override public void viewClick(View v) { }
    @Override public void showProgress() { }
    @Override public void hideProgress() { }
}

Fragment示例

public class TestFragment extends BaseFragment {
    private TextView mTitle;

    @Override public int getLayoutResId() {
        return R.layout.activity_listview_item;
    }

    @Override public void initView(View parentView) {
        super.initView(parentView);
        mTitle = (TextView) parentView.findViewById(R.id.item_title_tv);
    }

    //以下为可选方法,根据需要进行重载.
    //方法执行顺序:
    //initInstanceState(Bundle savedInstanceState) --> initData() --> initView(View parentView) --> register()
    //unRegister()方法默认在onDestroyView()内部执行

    //这里可以注册一些广播、服务
    @Override public void register() { }
    //注销广播、服务
    @Override public void unRegister() { }
    //只有第一次才会执行,这里可以做一些界面功能引导
    @Override public void onFirst() { }
    //处理状态的恢复操作
    @Override public void initInstanceState(Bundle savedInstanceState) { }
    @Override public void initData() { }
    @Override public void onChange() { }
    @Override public void onHidden() { }
    //view点击事件统一处理
    @Override public void viewClick(View v) { }
    @Override public void showProgress() { }
    @Override public void hideProgress() { }
}

启动页示例

public class SplashActivity extends BaseSplashActivity {

    @Override protected void setSplashResources(List<SplashImgResource> resources) {
        /**
         * SplashImgResource参数:
         * mResId - 图片资源的ID。
         * playerTime - 图片资源的播放时间,单位为毫秒。。
         * startAlpha - 图片资源开始时的透明程度。0-255之间。
         * isExpand - 如果为true,则图片会被拉伸至全屏幕大小进行展示,否则按原大小展示。
         */
        resources.add(new SplashImgResource(R.mipmap.splash,1500,100f,true));
        resources.add(new SplashImgResource(R.mipmap.splash1,1500,100f,true));
        resources.add(new SplashImgResource(R.mipmap.splash2,1500,100f,true));
    }
    
    @Override protected boolean isAutoStartNextActivity() {
        return false;
    }
    @Override protected Class<?> nextActivity() {
        return null;
        //如果isAutoStartNextActivity设置为true,这里需要指定跳转的activity
        //return MainActivity.class;
    }
    
    @Override protected void runOnBackground() {
        //这里可以执行耗时操作、初始化工作
        //请注意:如果执行了耗时操作,那么启动页会等到耗时操作执行完才会进行跳转
        //try {
        //  Thread.sleep(15 * 1000);
        //} catch (InterruptedException e) {
        //  e.printStackTrace();
        //}
    }
}

打印日志

Logger.d(content);
Logger.e(content);
Logger.w(content);
Logger.v(content);
Logger.wtf(content);
//打印json数据
Logger.json(jsonContent);
//打印xml数据
Logger.xml(xmlContent);

注意事项:确保包装选项是禁用的

##工具类

##感谢 logger

##关于

##License

Copyright 2015 classic

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

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.