美文网首页
常见第三方库使用

常见第三方库使用

作者: 破荒之恋 | 来源:发表于2017-07-10 14:56 被阅读602次

    常用来注释的三方库 (未完待续)

    compile 'com.jakewharton:butterknife:7.0.1'
    

    在setContentView(R.layout.activity_home)这句的后面加上

        ButterKnife.bind(this);
    

    就可以使用注释了

    @Bind(R.id.home_tv_title_center)
    TextView mTvCenter;
    @Bind(R.id.home_iv_menu)
    ImageView mIvMenu;
    @Bind(R.id.contacts_tab_rl)
    LinearLayout mContactsTabRl;
    

    可参考:
    http://www.jianshu.com/p/154891851fe2

    用来监听事件发生的开源库

    compile 'org.greenrobot:eventbus:3.0.0'
    

    首先在首页注册eventbus

     EventBus.getDefault().register(this);
    

    用来切换的tabLayout

      compile 'com.flyco.tablayout:FlycoTabLayout_Lib:2.0.8@aar'
    

    常见布局带代码

      <com.flyco.tablayout.CommonTabLayout
            android:id="@+id/home_tab_layout"
            android:layout_width="match_parent"
            android:layout_height="55dp"
            android:background="#f6f6f1"
            app:tl_iconGravity="TOP"
            app:tl_iconHeight="25dp"
            app:tl_iconWidth="30dp"
            app:tl_indicator_color="@color/white"
            app:tl_textSelectColor="@color/colorPrimary"
            app:tl_textUnselectColor="@color/gray_black"
            app:tl_textsize="13sp"
            />
    

    当然首先在布局界面加上

    xmlns:app="http://schemas.android.com/apk/res-auto"
    

    Glide 图片请求库

    https://github.com/bumptech/glide
    教程地址:http://ocnyang.com/tags/Glide/

    常用来使用悬浮按钮的库

    compile 'cc.trity.floatingactionbutton:library:1.0.0'
    

    常见布局

     <android.support.design.widget.FloatingActionButton
        android:id="@+id/main_fab_enter_edit"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_marginBottom="36dp"
        android:layout_marginLeft="30dp"
        android:layout_marginStart="30dp"
        android:src="@drawable/add"
        app:backgroundTint="#0288D1"
        app:borderWidth="0dp"
        app:elevation="6dp"
        app:fabSize="normal"
        app:layout_anchorGravity="bottom|right"
        app:pressedTranslationZ="12dp"
        app:rippleColor="#a6a6a6"/>
    

    当然布局中顶部要加上这句

     xmlns:app="http://schemas.android.com/apk/res-auto"
    

    常用开加载圆形图片的开源库、如头像

    https://github.com/hdodenhof/CircleImageView

    compile 'de.hdodenhof:circleimageview:2.1.0'
    

    常见布局

      <de.hdodenhof.circleimageview.CircleImageView
            android:id="@+id/duanzi_civ_avatar"
            android:layout_width="24dp"
            android:layout_height="24dp"
            android:src="@drawable/avatar"
            android:layout_gravity="center"
            />
    

    常用的多功能TextView

    参考:https://github.com/chenBingX/SuperTextView/blob/master/README_zh.md
    

    添加依赖:

     compile 'com.github.chenBingX:SuperTextView:v1.4'
    

    xml中使用:

    <SuperTextView
    android:layout_width="50dp"
    android:layout_height="50dp"
    
    //设置圆角。会同时作用于填充和边框(如果边框存在的话)。
    //如果要设置为圆形,只需要把该值设置为宽或长的1/2即可。
    app:corner="25dp"
    //设置左上角圆角
    app:left_top_corner="true"
    //设置右上角圆角
    app:right_top_corner="true"
    //设置左下角圆角
    app:left_bottom_corner="true"
    //设置右下角圆角
    app:right_bottom_corner="true"
    //设置填充颜色
    app:solid="@color/red"
    //设置边框颜色
    app:stroke_color="@color/black"
    //设置边框的宽度。
    app:stroke_width="2dp"
    //放置一个drawable在背景层上。默认居中显示。
    //并且默认大小为SuperTextView的一半。
    app:state_drawable="@drawable/emoji"
    //设置drawable的显示模式。可选值如下:
    // left、top、right、bottom、center(默认值)、
    //leftTop、rightTop、leftBottom、rightBottom、
    //fill(充满整个SuperTextView,此时会使设置drawable的大小失效)
    app:state_drawable_mode="center"
    //设置drawable的height
    app:state_drawable_height="30dp"
    //设置drawable的width
    app:state_drawable_width="30dp"
    //设置drawble相对于基础位置左边的距离
    app:state_drawable_padding_left="10dp"
    //设置drawble相对于基础位置上边的距离
    app:state_drawable_padding_top="10dp"
    // boolean类型。是否显示drawable。
    //如果你想要设置的drawable显示出来,必须设置为true。
    //当不想让它显示时,再设置为false即可。
    app:isShowState="true"
    //是否开启文字描边功能。
    //注意,启用这个模式之后通过setTextColor()设置的颜色将会被覆盖。
    //你需要通过text_fill_color来设置文字的颜色。
    app:text_stroke="true"
    // 文字的描边颜色。默认为Color.BLACK。
    app:text_stroke_color="@color/black"
    // 文字描边的宽度。
    app:text_stroke_width="1dp"
    // 文字填充的颜色。默认为Color.BLACK。
    app:text_fill_color="@color/blue"
    // boolean类型。是否启用Adjuster功能。
    //具体干什么,需要在Java中为SuperTextView实现一个Adjuster。
    //当你启用这个功能而没有实现自己的Adjuster时,
    //SuperTextView会启用默认的Adjuster。它会按照一定的规则调整文字大小。
    app:autoAdjust="true"
    />
    

    以上这些属性,均可以在Java中进行动态的设置。同时也能够获得它们的值。例如:

    mSuperTextView.setCorner(10);
    mSuperTextView.getCorner();
    

    常用来解析Json数据的开源库

     compile 'com.google.code.gson:gson:2.4'
    

    例如传进一条json数据

    public class GsonHelper {
    public static List<DuanziBean> getDuanziBeanList(String response){
    
        List<DuanziBean> mDuanziBeanList = new ArrayList<>();
        try {
            JSONObject jsonObject = new JSONObject(response);
            String dataArrayStr = jsonObject.getJSONObject("data").getString("data");
            Type type = new TypeToken<List<DuanziBean>>(){}.getType();
            Gson gson = new Gson();
            mDuanziBeanList = gson.fromJson(dataArrayStr, type);
            return mDuanziBeanList;
        } catch (JSONException e) {
            e.printStackTrace();
        }
        return mDuanziBeanList;
    }
    
      public static List<MeiziBean> getMeiziBean(String response){
        List<MeiziBean> meiziBeanList = new ArrayList<>();
        try {
            JSONObject jsonObject = new JSONObject(response);
                String meiziArrayStr = jsonObject.getString("results");
                Type meiziListType = new TypeToken<List<MeiziBean>>(){}.getType();
                Gson gson = new Gson();
                meiziBeanList = gson.fromJson(meiziArrayStr, meiziListType);
    
        } catch (JSONException e) {
            e.printStackTrace();
        }
        return meiziBeanList;
    }
    
    }
    

    用来加载各种对话框的开源库

    compile 'cc.duduhuo.dialog:smartisan-dialog:1.0.0'
    

    创建普通对话框、选项对话框、警告对话框、自定义对话框,外加上单选、多选、进度条对话框

    /* 普通的Dialog
    * @param view
    */
    public void normalDialog(View view) {
        final NormalDialog dialog = SmartisanDialog.createNormalDialog(this);
        dialog.setTitle("这是标题")
                .setMsg("对话框信息")
                .setMsgGravity(Gravity.CENTER)
                //.setLeftBtnBackground()
                .setLeftBtnText("取消")   // 设置文本的按钮会显示,不设置文本则不显示
                .setRightBtnText("确定")
                .show();
        // 设置点击监听(下同,不再解释)
        dialog.setOnSelectListener(new NormalDialog.OnSelectListener() {
            @Override
            public void onLeftSelect() {
                Toast.makeText(DialogActivity.this, "onLeftSelect", Toast.LENGTH_SHORT).show();
                dialog.dismiss();
            }
    
            @Override
            public void onRightSelect() {
                Toast.makeText(DialogActivity.this, "onRightSelect", Toast.LENGTH_SHORT).show();
                dialog.dismiss();
            }
        });
    }
    
     *
     * 带两个选项的Dialog
     *
     * @param view
     */
    public void twoOptionsDialog(View view) {
        final TwoOptionsDialog dialog = SmartisanDialog.createTwoOptionsDialog(this);
        dialog.setTitle("选择一个选项")
                .setOp1Text("第一个选项")    // 设置第一个选项的文本
                .setOp2Text("第二个选项")    // 设置第二个选项的文本
                .show();
        dialog.setOnSelectListener(new TwoOptionsDialog.OnSelectListener() {
            @Override
            public void onOp1() {
                Toast.makeText(DialogActivity.this, "onOp1", Toast.LENGTH_SHORT).show();
                dialog.dismiss();
            }
    
            @Override
            public void onOp2() {
                Toast.makeText(DialogActivity.this, "onOp2", Toast.LENGTH_SHORT).show();
                dialog.dismiss();
            }
        });
    }
    
    
     /**
     * 带三个选项的Dialog
     *
     * @param view
     */
    public void threeOptionsDialog(View view) {
        final ThreeOptionsDialog dialog = SmartisanDialog.createThreeOptionsDialog(this);
        dialog.setOp1Text("选项1")
                .setOp2Text("选项2")
                .setOp3Text("选项3")
                .show();
        dialog.setOnSelectListener(new ThreeOptionsDialog.OnSelectListener() {
            @Override
            public void onOp1() {
                Toast.makeText(DialogActivity.this, "onOp1", Toast.LENGTH_SHORT).show();
                dialog.dismiss();
            }
    
            @Override
            public void onOp2() {
                Toast.makeText(DialogActivity.this, "onOp2", Toast.LENGTH_SHORT).show();
                dialog.dismiss();
            }
    
            @Override
            public void onOp3() {
                Toast.makeText(DialogActivity.this, "onOp3", Toast.LENGTH_SHORT).show();
                dialog.dismiss();
            }
        });
    }
    /**
     * 警告Dialog
     *
     * @param view
     */
    public void warningDialog(View view) {
        final WarningDialog dialog = SmartisanDialog.createWarningDialog(this);
        dialog.setTitle("确定退出登录吗")
                .setConfirmText("退出登录")
                .show();
        dialog.setOnConfirmListener(new WarningDialog.OnConfirmListener() {
            @Override
            public void onConfirm() {
                Toast.makeText(DialogActivity.this, "onConfirm", Toast.LENGTH_SHORT).show();
                dialog.dismiss();
            }
        });
    }
    
    /**
     * 选项列表Dialog
     *
     * @param view
     */
    public void optionListDialog(View view) {
        List<String> options = new ArrayList<>(6);
        options.add("选项1");
        options.add("选项2");
        options.add("选项3");
        options.add("选项4");
        options.add("选项5");
        options.add("选项6");
        final OptionListDialog dialog = SmartisanDialog.createOptionListDialog(this);
        dialog.setTitle("请选择一个选项")
                .setOptionList(options)
                .setLastOption("选项5")   // 上次选择的选项
                .setItemGravity(Gravity.CENTER) // Item是居左、居中还是居右
                .setLastColor(0xFF40B64A)   // 上次选择的选项显示的颜色,用于区分
                .show();
        // setOnOptionItemSelectListener()方法必须在show()方法之后调用,否则无效
        dialog.setOnOptionItemSelectListener(new OnOptionItemSelectListener() {
            @Override
            public void onSelect(int position, CharSequence option) {
                Toast.makeText(DialogActivity.this, "position = " + position + ", option = " + option, Toast.LENGTH_SHORT).show();
                dialog.dismiss();
            }
        });
    
    }
    
    /**
     * 自定义内容视图的Dialog
     *
     * @param view
     */
    public void customizedDialog1(View view) {
        final CustomizedDialog dialog = SmartisanDialog.createCustomizedDialog(this);
        View rootView = getLayoutInflater().inflate(R.layout.test_view, null);
        dialog.addView(rootView)
                .setTitle("自定义内容视图")
                .show();
    }
    
    /**
     * 自定义内容视图的Dialog
     *
     * @param view
     */
    public void customizedDialog2(View view) {
        final CustomizedDialog dialog = SmartisanDialog.createCustomizedDialog(this);
        View rootView = getLayoutInflater().inflate(R.layout.test_view, null);
        dialog.addView(rootView)
                .setTitle("自定义内容视图")
                .setLeftBtnText("按钮1")  // 设置文本的按钮会显示,不设置文本则不显示
                .setRightBtnText("按钮2")
                .show();
        dialog.setOnSelectListener(new CustomizedDialog.OnSelectListener() {
            @Override
            public void onLeftSelect() {
                Toast.makeText(DialogActivity.this, "onLeftSelect", Toast.LENGTH_SHORT).show();
                dialog.dismiss();
            }
    
            @Override
            public void onRightSelect() {
                Toast.makeText(DialogActivity.this, "onRightSelect", Toast.LENGTH_SHORT).show();
                dialog.dismiss();
            }
        });
    }
    
    
    private static final String TAG = "DialogActivity";
    /**
     * 单选对话框
     * @param view
     */
    public  void customizedSingleDialog(View view){
        //通过builder构造器gouzao
    
        AlertDialog.Builder builder =new AlertDialog.Builder(this);
    
        builder.setTitle("选择你喜欢的水果");
    
        final String items[]={"香蕉","西瓜","黄瓜","哈密瓜","苹果"};
    
        //-1代表默认没有条目被选中
        builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                //把选择到的条目取出来
                Log.i(TAG, "---onClick--: "+select);
                String item = items[select];
                Log.i(TAG, "---item--: "+item);
                    Toast.makeText(getApplicationContext(), "---" + item, Toast.LENGTH_LONG).show();
                    //关闭对话框
                dialog.dismiss();
            }
        });
        builder.setSingleChoiceItems(items, 1, new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                //把选择到的条目取出来
                select = which;
                String item=items[which];
                Toast.makeText(getApplicationContext(), item+"---", Toast.LENGTH_SHORT).show();
                //关闭对话框
                //dialog.dismiss();
            }
        });
    //显示对话框
        builder.show();
    }
    
    
    /**
     * 多选按钮对话框
     * @param view
     */
    public  void customizedMutilDialog(View view){
    
        //通过构造器构造
        AlertDialog.Builder builder=new AlertDialog.Builder(this);
        builder.setTitle("请选择你喜欢的课程");
        final String items[]={"android","C","C++","C#","IOs","java","html"};
    
      //用来判断条目是否被选中
        final boolean []checkedItems={true,false,true,false,false,false,false};
        builder.setMultiChoiceItems(items, checkedItems, new DialogInterface.OnMultiChoiceClickListener() {
            @Override
            //条目的点击事件
            public void onClick(DialogInterface dialog, int which, boolean isChecked) {
            }
        });
        builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                StringBuffer sb=new StringBuffer();
                for(int i=0;i<checkedItems.length;i++){
                    //判断一下选中的
                    if(checkedItems[i]){
                        String fruit=items[i];
                        sb.append(fruit+" ");
                    }
                }
                Toast.makeText(getApplicationContext(), sb, Toast.LENGTH_SHORT).show();
                dialog.dismiss();
            }
        });
        builder.show();
    
    }
    
    /**
     * 进度条对话框
     * @param view
     */
    public void customizedProgressDialog(View view){
    
        //通过构造器来构造
        final ProgressDialog dialog=new ProgressDialog(this);
        dialog.setTitle("正在玩命加载中。。。");
        //设置一下进度条的样式
        dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
        //最后一步一定要show()出来
        dialog.show();
        //创建一个子线程
        new Thread(){
            public void run(){
                //设置进度条的最大值
                dialog.setMax(100);
                //设置当前进度
                for(int i=0;i<=20;i++){
                    dialog.setProgress(i*5);
                    //睡眠一下
                    SystemClock.sleep(200);
                }
                dialog.show();
                dialog.dismiss();
            }}.start();
    }
    

    }

    用来实现页面滑动返回

     compile 'cn.bingoogolapple:bga-swipebacklayout:1.0.8'
    

    先封装一个BaseActivity

    
    /**
     * Activity基类,所有Activity应该继承此类
     *
     * Author: nanchen
     * Email: liushilin520@foxmail.com
     * Date: 2017-04-07  14:33
     */
    
    public abstract class BaseActivity extends AppCompatActivity implements BGASwipeBackHelper.Delegate{
    
        private CompositeSubscription mCompositeSubscription;
    
        protected BGASwipeBackHelper mSwipeBackHelper;
    
        /**
         * 获取布局ID
         *
         * @return  布局id
         */
        protected abstract int getContentViewLayoutID();
    
    
    
        /**
         * 界面初始化前期准备
         */
        protected void beforeInit() {
    
        }
    
        /**
         * 初始化布局以及View控件
         */
        protected abstract void initView(Bundle savedInstanceState);
    
        @Override
        public void setContentView(@LayoutRes int layoutResID) {
            super.setContentView(layoutResID);
            ButterKnife.bind(this);
        }
    
        public CompositeSubscription getCompositeSubscription(){
            checkSubscription();
            return this.mCompositeSubscription;
        }
    
        /**
         * 检查是否为空,以免导致空指针
         */
        private void checkSubscription(){
            if (this.mCompositeSubscription == null){
                this.mCompositeSubscription = new CompositeSubscription();
            }
        }
    
        /**
         * 增加一个调度器
         */
        protected void addSubscription(Subscription s){
            checkSubscription();
            this.mCompositeSubscription.add(s);
        }
    
        @Override
        protected void onCreate(@Nullable Bundle savedInstanceState) {
            // 「必须在 Application 的 onCreate 方法中执行 BGASwipeBackManager.getInstance().init(this) 来初始化滑动返回」
            // 在 super.onCreate(savedInstanceState) 之前调用该方法
            initSwipeBackFinish();
    //        setStatusBarTransparent();
            super.onCreate(savedInstanceState);
            beforeInit();
            if (getContentViewLayoutID() != 0) {
                setContentView(getContentViewLayoutID());
                initView(savedInstanceState);
            }
        }
    
        @Override
        protected void onDestroy() {
            super.onDestroy();
            if (this.mCompositeSubscription != null && !this.mCompositeSubscription.isUnsubscribed()){
                this.mCompositeSubscription.unsubscribe();
            }
        }
    
        /**
         * 初始化滑动返回。在 super.onCreate(savedInstanceState) 之前调用该方法
         */
        private void initSwipeBackFinish() {
            mSwipeBackHelper = new BGASwipeBackHelper(this, this);
    
            // 「必须在 Application 的 onCreate 方法中执行 BGASwipeBackManager.getInstance().init(this) 来初始化滑动返回」
            // 下面几项可以不配置,这里只是为了讲述接口用法。
    
            // 设置滑动返回是否可用。默认值为 true
            mSwipeBackHelper.setSwipeBackEnable(true);
            // 设置是否仅仅跟踪左侧边缘的滑动返回。默认值为 true
            mSwipeBackHelper.setIsOnlyTrackingLeftEdge(true);
            // 设置是否是微信滑动返回样式。默认值为 true
            mSwipeBackHelper.setIsWeChatStyle(true);
            // 设置阴影资源 id。默认值为 R.drawable.bga_sbl_shadow
            mSwipeBackHelper.setShadowResId(R.drawable.bga_sbl_shadow);
            // 设置是否显示滑动返回的阴影效果。默认值为 true
            mSwipeBackHelper.setIsNeedShowShadow(true);
            // 设置阴影区域的透明度是否根据滑动的距离渐变。默认值为 true
            mSwipeBackHelper.setIsShadowAlphaGradient(true);
            // 设置触发释放后自动滑动返回的阈值,默认值为 0.3f
            mSwipeBackHelper.setSwipeBackThreshold(0.3f);
        }
    
        /**
         * 是否支持滑动返回。这里在父类中默认返回 true 来支持滑动返回,如果某个界面不想支持滑动返回则重写该方法返回 false 即可
         *
         * @return
         */
        @Override
        public boolean isSupportSwipeBack() {
            return true;
        }
    
        /**
         * 正在滑动返回
         *
         * @param slideOffset 从 0 到 1
         */
        @Override
        public void onSwipeBackLayoutSlide(float slideOffset) {
        }
    
        /**
         * 没达到滑动返回的阈值,取消滑动返回动作,回到默认状态
         */
        @Override
        public void onSwipeBackLayoutCancel() {
        }
    
        /**
         * 滑动返回执行完毕,销毁当前 Activity
         */
        @Override
        public void onSwipeBackLayoutExecuted() {
            mSwipeBackHelper.swipeBackward();
        }
    
        @Override
        public void onBackPressed() {
            // 正在滑动返回的时候取消返回按钮事件
            if (mSwipeBackHelper.isSliding()) {
                return;
            }
            mSwipeBackHelper.backward();
        }
    
    
        public void setStatusBarTransparent() {
            StatusBarUtil.setTransparent(this);
        }
    
        /**
         * 设置状态栏颜色
         *
         * @param color
         */
        protected void setStatusBarColor(@ColorInt int color) {
            setStatusBarColor(color, StatusBarUtil.DEFAULT_STATUS_BAR_ALPHA);
        }
    
        /**
         * 设置状态栏颜色
         *
         * @param color
         * @param statusBarAlpha 透明度
         */
        public void setStatusBarColor(@ColorInt int color, @IntRange(from = 0, to = 255) int statusBarAlpha) {
            StatusBarUtil.setColorForSwipeBack(this, color, statusBarAlpha);
        }
    
        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
            if (item.getItemId() == android.R.id.home) {
                onBackPressed();
                return true;
            }
            return super.onOptionsItemSelected(item);
        }
    
    
    }
    
    

    用来打印logger的开源库

     compile 'com.orhanobut:logger:2.1.1'
    

    初始化:

      Logger.addLogAdapter(new AndroidLogAdapter());
    

    参考:https://github.com/orhanobut/logger

    leakcanary 内存泄漏检测工具

    https://github.com/square/leakcanary

    BaseRecyclerViewAdapterHelper 的强大应用

     compile 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.27'
    

    参考:
    http://www.jianshu.com/p/b343fcff51b0

    相关文章

      网友评论

          本文标题:常见第三方库使用

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