• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ZhqAndroidUtils: 这是个人版本所使用的一个androidUtils工具包

原作者: [db:作者] 来自: 网络 收藏 邀请

开源软件名称:

ZhqAndroidUtils

开源软件地址:

https://gitee.com/zhqhandsome/ZhqAndroidUtils

开源软件介绍:

ZhqAndroidUtils

介绍

从事多年Android开发,总结下一些日常所使用的自定义的组件,以及Utils工具包,方便日后更好接入,无需要重复的复制粘贴代码。

涉及相关使用的功能

  1. 权限控制(Android 6.0以上系统编译版本API23以上需要动态获取运行时权限)------->> PermissionManage
  2. 底部导航栏------->> NavigationMenuBar
  3. 可以灵活设置图片与文字结合四个方向的(top、bottom、left、right)----->> IconTextView
  4. 带有输入框取消文字的功能----->> ClearEditText
  5. 圆形头像ImageView----->> CircleImageView
  6. 可控制圆形radius的TextView----->> ShapeTextView
  7. 带有进度条正在加载、加载失败、暂无数据的----->> StateLayout
  8. 自定义头部布局,解决重复绘制xml----->> TitleBarLayout
  9. 横向滚动的指示器,支持与ViewPager滑动,带有滑动过渡动画效果的----->> TabBarIndicatorLayout
  10. 仿微信图片加载库------->> ImageSelector
  11. 网格图片加载库------->>MultiImageView
  12. 仿苹果刷新view------>>AppleRefreshView
  13. 骨架屏的自定义View使用---->>SkeletonScreen
  14. GIF图片加载自定义View---->>GifView
  15. 全屏播放自定义videoView--->>**CustomVideoView
  16. 根据视频大小播放的DiyVideoView-->>**DiyVideoView
  17. 带有阴影效果的按钮-->>**ShadowButton
  18. 非主线程绘制图片的RootSufaceView
  19. 支持各种阴影效果的FpShadowLayout

Gradle配置使用

android {        allprojects {        repositories {            jcenter()            maven { url "https://www.jitpack.io" }        }    }}dependencies {    implementation 'com.gitee.zhqhandsome:ZhqAndroidUtils:v1.0.4'}

使用说明

  1. PermissionManage
    new PermissionManage.Builder(this)                .setPermission(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE,                        Manifest.permission.READ_EXTERNAL_STORAGE                        , Manifest.permission.READ_PHONE_STATE,                        Manifest.permission.CALL_PHONE,                        android.Manifest.permission.READ_CONTACTS,                        Manifest.permission.CAMERA                })                .setPermissionOnListener(new PermissionManage.PermissionOnListener() {                    @Override                    public void callBackApiLowSdk(int sdkCode) {                        //TODO                    }                })                .builder()                .requestPermission();
  1. NavigationMenuBar
 <com.zhq.apputil.widget.NavigationMenuBar        android:id="@+id/navigation_menuBar"        android:layout_width="match_parent"        android:layout_height="49dp"        app:bottom_count="4"        app:shadow_line_color="@color/separation"        app:shadow_line_width="1dp"        app:text_color_normal="@color/tab_bottom_font_color"        app:text_color_pressed="@color/tab_bottom_pressed_font_color"        app:button_select_color_normal="@color/white"        app:button_select_color_pressed="@color/separation"        app:text_color_normal="@color/tab_bottom_font_color"        app:text_color_pressed="@color/tab_bottom_pressed_font_color"        app:text_font_size="12sp"/>      bottomMenuBar.setBottomNameResource(new CharSequence[]{"首页", "分类", "购物车", "我的"})                .setImageResource(                        new int[]{R.mipmap.home_tab_normal, R.mipmap.alarm_tab_normal, R.mipmap.work_order_tab_normal,                                R.mipmap.mine_tab_normal},                        new int[]{R.mipmap.home_tab_pressed, R.mipmap.alarm_tab_pressed, R.mipmap.work_order_tab_pressed,                                R.mipmap.mine_tab_pressed}                )                .setFontPadding(NavigationMenuBar.TOP, 5)                .setBottomMenuBackgroundColor(getResources().getColor(R.color.bottomBar_background_color))                .initToPosition(0)                .builder();          bottomMenuBar.setOnTabSelectedListener(new NavigationMenuBar.OnTabSelectedListener(){            @Override            public void onTabSelected(int currentPosition, int lastIndex) {                //TODO            }        });
  1. IconTextView
    <com.zhq.apputil.widget.IconTextView            android:id="@+id/icon_set"            android:layout_width="wrap_content"            android:layout_height="match_parent"            android:layout_marginStart="20dp"            android:layout_marginEnd="20dp"            android:layout_weight="1"            android:drawablePadding="10dp"            android:gravity="center|left"            android:text="@string/set"            android:textColor="@color/white"            android:textSize="16sp"            app:drawable_src="@mipmap/mine_setting"            app:imageHeight="25dp"            app:imageLocation="left"            app:imageWidth="25dp" />
  1. ClearEditText
       <com.zhq.apputil.widget.ClearEditText                android:id="@+id/autoCompleteUserName"                android:layout_width="match_parent"                android:layout_height="match_parent"                android:background="@android:color/transparent"                android:drawablePadding="10dp"                android:hint="@string/prompt_email"                android:imeOptions="normal"                android:inputType="text"                android:maxLines="1"                android:singleLine="true"                android:textColor="@color/white"                android:textColorHint="@color/light_gray"                android:textCursorDrawable="@drawable/corner_cursor"  />
  1. CircleImageView
    <com.zhq.apputil.widget.CircleImageView        android:id="@+id/headImageView"        android:layout_width="74dp"        android:layout_height="74dp"        android:layout_centerVertical="true"        android:layout_marginLeft="25dp"        android:layout_marginTop="50dp"        android:src="@mipmap/head_default_logo"        app:border_color="@color/white"        app:border_width="2dp"/>
  1. ShapeTextView
    <com.zhq.apputil.widget.ShapeTextView            android:id="@+id/tvSubstation"            android:layout_width="0dp"            android:layout_height="30dp"            android:layout_marginRight="10dp"            android:layout_weight="1"            android:gravity="center"            android:text="电站 ▼"            android:textSize="12sp"            android:textColor="@color/state_selected"            app:appBgColor="#4A5A84"            app:appBorder="false"            app:appBottomLeftCorner="false"            app:appBottomRightCorner="false"            app:appRadius="2dp"            app:appTopLeftCorner="true"            app:appTopRightCorner="true" />
  1. StateLayout
   @Override   public StateLayout.Builder getBuilderLayout() {        return new StateLayout.Builder(this)                .setStateLayout(R.layout.state_layout)                .setStateLayoutViewId(R.id.button_retry)                .onRetryListener(new OnRetryListener() {                    @Override                    public void onRetry() {                       //TODO                    }                });                      }    @Override    public void showEmpty() {        showRootView(mRecyclerView);        rootView.showEmptyView();    }    @Override    public void showFailure(String error) {        showRootView(mRecyclerView);        rootView.showFailView();    }    
  1. TitleBarLayout
        @Override    public TitleBarLayout getTitleBarLayout() {        return new TitleBarLayout(this)                .setTitleBarTitleName(getIntent().getExtras().getString("name"));    }       /****     * 添加TitleBar控件,开发人员不用操心视图xml头部元素     */    public void addTitleBarView() {        View rootView = ((ViewGroup) findViewById(android.R.id.content)).getChildAt(0);        if (rootView != null && getTitleBarLayout() != null) {            titleBarLayout = getTitleBarLayout();            titleBarLayout                    .setTitleBarBackDrawableLeftSrc(R.drawable.ic_arrow_back_white_24dp)                    .setTitleBarBackFontColor(R.color.white)                    .setTitleBarTitleColor(R.color.white)                    .setTitleRightFontColor(R.color.white)                    .setTitleBarTitleFontSize(15)                    .setTitleBarFontSize(15)                    .setTitleBarBackground(getResources().getDrawable(R.drawable.divider_bottom_gray_line))                    .setBackDrawableLeftWidthHeight(24, 24)                    .setFontLeftPadding(TitleBarLayout.LEFT, 10)                    .setFontRightPadding(TitleBarLayout.RIGHT, 10)                    .setTitleBarBackOnClickListener(new View.OnClickListener() {                        @Override                        public void onClick(View v) {                            finishActivity();                        }                    })                    .build();            if (rootView instanceof LinearLayout) {                LinearLayout linearParent = (LinearLayout) rootView;                linearParent.addView(titleBarLayout, 0);            } else if (rootView instanceof RelativeLayout) {                RelativeLayout relativeParent = (RelativeLayout) rootView;                titleBarLayout.setId(R.id.titleBar_id);                relativeParent.addView(titleBarLayout, 0);                View view = relativeParent.getChildAt(1);                RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) view.getLayoutParams();                params.addRule(RelativeLayout.BELOW, R.id.titleBar_id);                view.setLayoutParams(params);            }        }    }
  1. TabBarIndicatorLayout
 <com.zhq.apputil.widget.TabBarIndicatorLayout        android:id="@+id/stl"        android:layout_width="match_parent"        android:layout_height="48dp"        app:tab_count="8"        android:background="#30394D" />        slidingTabLayout.setTabBarIndicator(new TabBarItemBean.Builder()                .setSelectPosition(0)                .setTabBarNormalColor("#ffffff")                .setTabBarPressedColor("#ffffff")                .setTabBarIndicatorColor("#00B0FF")                .setTabBarSelectFontSize(14)                .setTabBarUnSelectFontSize(13)                .setTabBarScrolled(true)                .setTabBarIndicatorHeight(ScreenUtils.dpToPx(getResources(), 2))                .setTabBarTitle(mTitles)                .setTabBarPressedType(new Integer[]{AppConstant.WorkOrder.GET_ALL, AppConstant.WorkOrder.WAIT_AUDIT,                        AppConstant.WorkOrder.WAIT_RECEIVER, AppConstant.WorkOrder.HAVE_IN_HAND, AppConstant.WorkOrder.WAIT_SURE,                        AppConstant.WorkOrder.ALREADY_COMPLETED, AppConstant.WorkOrder.ALREADY_EXIT, AppConstant.WorkOrder.AUDIT_REJECT})                .setTabBarViewPager(mViewPager)                .build()        ).show();         ScrollViewPagerAdapter mAdapter = new ScrollViewPagerAdapter(getChildFragmentManager(), mFragments, mTitles);        mViewPager.setAdapter(mAdapter);
  1. ImageSelector
   // 缺少权限时, 进入权限配置页面        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M                && ContextCompat.checkSelfPermission(mContext, android.Manifest.permission.READ_CONTACTS)                != PackageManager.PERMISSION_GRANTED) {            ActivityCompat.requestPermissions(getActivity(),                    new String[]{android.Manifest.permission.READ_CONTACTS,                            android.Manifest.permission.WRITE_CONTACTS, android.Manifest.permission.CAMERA}                    , PermissionManage.SDK_PERMISSION_REQUEST);        } else {            ImageConfig imageConfig = new ImageConfig.Builder(                    new GlideLoader())                    .steepToolBarColor(getResources().getColor(R.color.colorPrimary))                    .titleBgColor(getResources().getColor(R.color.colorPrimary))                    .titleSubmitTextColor(getResources().getColor(R.color.white))                    .titleTextColor(getResources().getColor(R.color.white))                    .setTitleImageResource(R.drawable.ic_arrow_back_white_24dp)                    .mutiSelect()                    .singleSelect()                    .pathList(new ArrayList<>())                    .filePath(new StringBuilder(File.separator).append("com.cndz").append(File.separator).append("ImageTemp").toString())                    .showCamera()                    .crop()                    .requestCode(BasePresenter.REQUEST_Gallery_CODE)                    .build();            ImageSelector.open(getActivity(), imageConfig);   // 开启图片选择器        }
  1. MultiImageView
 <com.zhq.apputil.widget.MultiImageView        android:id="@+id/multiImageView"        android:layout_width="match_parent"        android:layout_height="wrap_content"        app:multi_border_color="@color/white"        app:multi_border_overlay="true"        app:multi_border_width="1dp"        app:multi_overlay_radius="5dp"         app:multi_right_bottom_corner="true"        app:multi_right_top_corner="true"        app:multi_top_bottom_corner="true"        app:multi_top_left_corner="true"/>	  multiImageView.setOnItemClickListener(new OnItemLoadImageListener() {                @Override                  public void loadImageView(ImageView imageView, String imageUrl, GildeImageConfig gildeImageConfig) {                         if (gildeImageConfig.isBorderOverlay()) {                        Glide.with(getContext())                                .load(imageUrl)                                .skipMemoryCache(true)                                .placeholder(R.mipmap.imageselector_photo)                                .transition(DrawableTransitionOptions.withCrossFade(500)) // 渐变                                .transform(new CornerTransform(getContext(), gildeImageConfig)))                                .diskCacheStrategy(DiskCacheStrategy.NONE).into(imageView);                    } else {                        Glide.with(getContext()).load(imageUrl)                                .placeholder(R.mipmap.imageselector_photo)                                .transition(DrawableTransitionOptions.withCrossFade(500)) // 渐变                                .diskCacheStrategy(DiskCacheStrategy.ALL).into(imageView);                    }                }                @Override                public void onItemClick(View view, int p) {                   //TODO                 }            });
  1. AppleRefreshView
  <com.zhq.apputil.widget.AppleRefreshView            android:id="@+id/refresh_view"            android:layout_width="match_parent"            android:layout_height="match_parent">            <android.support.v7.widget.RecyclerView                android:id="@+id/recyclerView"                android:layout_width="match_parent"                android:layout_height="match_parent"                android:scrollbars="none"/>        </com.zhq.apputil.widget.AppleRefreshView>         appleRefreshView.setRefreshListener(new AppleRefreshView.RefreshListener() {            @Override            public void onRefresh() {              //TODO            }        });        //对外提供判断上拉、下拉条件,根据当前节点的view来判断是否可以下拉刷新        appleRefreshView.registerPullableListener(new Pullable(){                            @Override            public boolean canPullDown(View childView) {              //TODO            }             @Override            public boolean canPullUp(View childView) {              //TODO            }           });
  1. SkeletonScreen
dependencies {              //骨架屏    implementation 'com.ethanhua:skeleton:1.1.2'    implementation 'io.supercharge:shimmerlayout:2.1.0'}//recyclerAdapter使用            NewsAdapter adapter = new NewsAdapter();            final SkeletonScreen skeletonScreen = Skeleton.bind(recyclerView)                    .adapter(adapter)                    .shimmer(true)                    .angle(20)                    .frozen(false)                    .duration(1200)                    .count(10)                    .load(R.layout.item_skeleton_news)                    .show(); //default count is 10            recyclerView.postDelayed(new Runnable() {                @Override                public void run() {                    skeletonScreen.hide();//隐藏骨架屏                }            }, 3000);//activity中的使用   View rootView = findViewById(R.id.rootView);//注册根目录    SkeletonScreen  skeletonScreen = Skeleton.bind(rootView)                    .load(R.layout.activity_view_skeleton)//给用户看到的加载item                    .duration(1000)                    .color(R.color.shimmer_color)                    .angle(0)                    .show();
  1. GifView
//布局加载使用  <com.zhq.apputil.widget.GifView        android:id="@+id/gif_view"        android:layout_width="50dp"        android:layout_height="60dp"        app:gif="@drawable/get_fire"/>//对外提供方法    setMovieResouce(int movieResId);    setMovieTime(int time);    setPaused(boolean paused);    boolean isPaused();

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap