与android不得不说的故事之KJFrameForAndroid

原创 2015年11月19日 17:00:38

那些年,与android不得不说的故事之KJFrameForAndroid框架UI篇(一)

简介:KJFrameForAndroid 又叫KJLibrary,是一个android的orm 和 ioc 框架。同时封装了android中的Bitmap与Http操作的框架,使其更加简单易用;
KJFrameForAndroid的设计思想是通过封装Android原生SDK中复杂的复杂操作而达到简化Android应用级开发,最终实现快速而又安全的开发APP。我们提倡用最少的代码,完成最多的操作,用最高的效率,完成最复杂的功能。

普通的开发者经常把数据初始化,控件监听,控件绑定写在Oncreate,这样不仅使Oncreate变得很臃肿,而且还影响整体的美观性和结构性。从整体上来看,使用了KJFrameForAndroid,我们整个Activity都变得很整洁了。

快速入门
AndroidStudio
build.gradle中添加:
compile ‘org.kymjs.kjframe:kjframe:2.5.5’

这里写图片描述这里写图片描述

public class MainActivity extends KJActivity {

    //绑定btn_name 监听
  @BindView(id = R.id.btn_name, click = true)
    private Button btn_name;
    @BindView(id = R.id.btn_jump, click = true)
    private Button btn_jump;
    @BindView(id = R.id.text_name)
    private TextView text_name;


    @Override
    public void setRootView() {
        setContentView(R.layout.activity_main);
    }

    @Override
    public void initData() {
        super.initData();
        //在这里可以初始化一些数据
        //是否显示activity的状态
        KJLoger.SHOW_ACTIVITY_STATE = true;
    }

    @Override
    public void initWidget() {
        super.initWidget();
        //初始化一些空间
        btn_name.setText("我改变了");
    }

    @Override
    public void widgetClick(View v) {
        super.widgetClick(v);
        //一些控件进行监听

        if (v.getId() == R.id.btn_name) {
            text_name.setText("我是textview,我已经改变了");
        }
        if (v.getId() == R.id.btn_jump) {
            //跳转到secondActivity,但不finish
            showActivity(MainActivity.this, SecondActivity.class);
        }
    }

    private void jump() {
        //跳转到secondActivity,finish()
        skipActivity(MainActivity.this, SecondActivity.class);

        //还有待参数的跳转
        //showActivity(Activity aty, Class<?> cls, Bundle extras)
        //showActivity(Activity aty, Intent it)
    }


    @Override
    public void registerBroadcast() {
        super.registerBroadcast();
        //注册广播
    }

    @Override
    public void unRegisterBroadcast() {
        super.unRegisterBroadcast();
        //注销广播
    }

    @Override
    public void initDataFromThread() {
        super.initDataFromThread();
        //在线程中初始化数据,注意不能在这里执行UI操作
    }

    @Override
    protected void threadDataInited() {
        super.threadDataInited();
        //获取initDataFromThread()里面初始化的数据
    }
}

KJLoger.SHOW_ACTIVITY_STATE = true; 开启了,就会在logcat里面打印activity生命周期的变化
如图:这里写图片描述

不仅如此,还支持activity的堆栈管理 KJActivityStack

 KJLoger.debug("------------>" + KJActivityStack.create().getCount());

        //退出出App
        KJActivityStack.create().appExit(aty);

        //获取当前Activity(栈顶Activity) 没有找到则返回null
        KJActivityStack.create().findActivity(SecondActivity.class).finish();

        //获取当前Activity(栈顶Activity)
        KJActivityStack.create().topActivity();

        //结束当前Activity(栈顶Activity)
        KJActivityStack.create().finishActivity(SecondActivity.class);
        //等等

也支持fragment 的简易使用和圆形头像的使用,大大的方便了使用者。

FirstFragment .java

public class FirstFragment extends KJFragment{
    @Override
    protected View inflaterView(LayoutInflater inflater, ViewGroup container, Bundle bundle) {
        View view = LayoutInflater.from(getActivity()).inflate(R.layout.fragment_first,container,false);
        return view;
    }
}

fragment_first:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent" android:layout_height="match_parent">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:text="大家好,我是fragment first"
        android:id="@+id/textView2"
        android:layout_centerVertical="true"
        android:layout_centerHorizontal="true" />
</RelativeLayout>

SecondFragment .java

public class SecondFragment extends KJFragment{

    @BindView(id = R.id.headIamge, click = true)
    private RoundImageView headImage;

    @Override
    protected View inflaterView(LayoutInflater inflater, ViewGroup container, Bundle bundle) {
        View view = LayoutInflater.from(getActivity()).inflate(R.layout.fragment_second,container,false);
        return view;
    }

    @Override
    protected void initWidget(View parentView) {
        super.initWidget(parentView);
        headImage.setBorderInsideColor(getActivity().getResources().getColor(R.color.colorPrimary));    //内圈颜色
        headImage.setBorderOutsideColor(getActivity().getResources().getColor(R.color.colorAccent));  //外圈颜色
        headImage.setImageResource(R.mipmap.test);  //设置图片
        headImage.setBorderThickness(3); //设置边框粗细
    }

    @Override
    public void onChange() {
        super.onChange();
        //当调用FragmentDemo 里面的changeFragment方法时,显示时会被调用(类似于onResume)
        KJLoger.debug("--------->改变了onChange");
    }

    @Override
    protected void initData() {
        super.initData();
    }

    @Override
    protected void widgetClick(View v) {
        super.widgetClick(v);
    }
}

R.layout.fragment_second

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:text="大家好,我是fragment second"
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <org.kymjs.kjframe.widget.RoundImageView
        android:id="@+id/headIamge"
        android:layout_width="300dp"
        android:layout_height="350dp"
        android:layout_above="@+id/textView2"
        android:layout_alignLeft="@+id/textView2"
        android:layout_alignStart="@+id/textView2"
        android:scaleType="centerCrop"
        android:layout_marginBottom="55dp"
        android:layout_marginLeft="39dp"
        android:layout_marginStart="39dp"
        android:src="@mipmap/ic_launcher"></org.kymjs.kjframe.widget.RoundImageView>

</RelativeLayout>

这里大家注意了,这里是用了KJ框架的自定义控件RoundImageView来实现圆形头像的

FragmentDemo.java:

public class FragmentDemo extends KJActivity {

    @BindView(id = R.id.btn_first, click = true)
    private Button btn_first;
    @BindView(id = R.id.btn_second, click = true)
    private Button btn_second;
    private FirstFragment firstFragment;
    private SecondFragment secondFragment;



    @Override
    public void setRootView() {
        setContentView(R.layout.acitvity_fragment_demo);
    }

    @Override
    public void widgetClick(View v) {
        super.widgetClick(v);
        if (v.getId() == R.id.btn_first) {
            KJLoger.debug("---------->" + "widgetClick");
            if (null == firstFragment) {
                firstFragment = new FirstFragment();
            }
            changeFragment(R.id.layout_fragment, firstFragment);
        }
        if (v.getId() == R.id.btn_second) {
            if (null == secondFragment) {
                secondFragment = new SecondFragment();
            }
         changeFragment(R.id.layout_fragment, secondFragment);    }
    }
}

对比
原来的

FragmentManager fm = getFragmentManager();  
FragmentTransaction transaction = fm.beginTransaction();  
secondFragment= new SecondFragment();  
transaction.replace(R.id.id_content, secondFragment);  
transaction.commit();  

框架的只需要一句,而且做了很好的处理,快准狠

changeFragment(R.id.layout_fragment, secondFragment);

特别说明:
框架作者:张涛
GitHub项目地址:https://github.com/kymjs/KJFrameForAndroid

版权声明:本文为博主原创文章,未经博主允许不得转载。

KJFrameForAndroid 2.0框架使用

KJFrameForAndroid 又叫KJLibrary,是一个Android的快速开发工具包。同时封装了android中的Bitmap、Http、插件模块加载操作的框架,使开发者更容易轻松实现这些...
  • huningjun
  • huningjun
  • 2015年05月26日 17:05
  • 1260

KJframeforandroid框架之 KJBlog学习(一)

KJframeforandroid 框架为基础的KJBlog学习(1)
  • qaz349293703
  • qaz349293703
  • 2015年09月09日 21:11
  • 416

KJFrameForAndroid框架分析

android app一般性架构设计一.UI层(Activity+Fragment基类设计+部分自定义控件)KJActivity(Activity继承链的规范) I_KJActivity,KJFram...
  • a910626
  • a910626
  • 2016年07月07日 12:18
  • 899

KJFrameForAndroid 资料——KJActivity

UILibrary包含了一个Activity(Fragment)继承链。在通常的开发中,我们经常把数据初始化、findview、控件的显示等等的方法都写在onCreate中,这样会造成onCreate...
  • chuntiandejiaobu10
  • chuntiandejiaobu10
  • 2016年07月15日 09:12
  • 195

KJFrame使用注意项

在使用KJFrame中的KJHttp时,调用post时默认方法是带缓存的,当不需要使用缓存时调用 public Requestbyte[]> post(String url, HttpParams p...
  • onepiece2
  • onepiece2
  • 2016年02月25日 08:52
  • 2394

android 资源(开源项目、library,框架{完善中})

一、KJLibrary项目介绍: KJFrameForAndroid 又叫KJLibrary,是一个android的orm 和 ioc 框架。同时封装了android中的Bitmap与Http操作的框...
  • lebsharing
  • lebsharing
  • 2016年03月16日 16:26
  • 275

与android不得不说的故事之KJFrameForAndroid

那些年,与android不得不说的故事之KJFrameForAndroid框架UI篇(一)简介:KJFrameForAndroid 又叫KJLibrary,是一个android的orm 和 ioc 框...
  • zhongjc_bill
  • zhongjc_bill
  • 2015年11月19日 17:00
  • 2183

KJFrameForAndroid

KJFrameForAndroid 又叫KJLibrary,是一个帮助快速开发的框架。使用KJFrameForAndroid,你可以只用一行代码就完成http请求、网络图片加载、数据库数据保存或读取。...
  • strliu
  • strliu
  • 2014年11月04日 10:43
  • 1502

与mycat 官方培训DB 不得不说的缘分

与mycat 官方培训DB 不得不说的缘分 与mycat的缘分结于16年夏天,当时公司考虑数据库分库分表让我做调研,然后就查询中间件相关的方案,无意中mycat进入我的视野,之后进官网看了看,觉得挺符...
  • wjl7813
  • wjl7813
  • 2017年06月28日 13:50
  • 154

敏捷中不能说的秘密

---Scrum浅析
  • shixin747
  • shixin747
  • 2014年05月01日 13:49
  • 607
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:与android不得不说的故事之KJFrameForAndroid
举报原因:
原因补充:

(最多只允许输入30个字)