Android常用工具类

  • g5_962512
    了解作者
  • 46.9KB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • VIP专享
    资源类型
  • 0
    下载次数
  • 2022-04-10 08:42
    上传日期
总结类一些常用的工具类,包括listview的适配器以及holder的封装框架,application的全局设置,还有对常用类的封装,比如LogUtils,IO等等
Androidc常用工具类.rar
  • Androidc常用工具类
  • fragment
  • BaseFragment.java
    1.7KB
  • 全局设置
  • GooglePlayApplication.java
    762B
  • utils
  • BitmapHelper.java
    453B
  • DrawableUtils.java
    1.2KB
  • StringUtils.java
    441B
  • UIUtils.java
    2.8KB
  • LogUtils.java
    2.1KB
  • IOUtils.java
    319B
  • 网络请求
  • HttpClientFactory.java
    3.2KB
  • HttpHelper.java
    4.5KB
  • BaseProtocol.java
    3.5KB
  • listview相关
  • adapter
  • MyBaseAdapter.java
    5.1KB
  • holder
  • BaseHolder.java
    685B
  • MoreHolder.java
    1.6KB
  • 多线程下载
  • manager
  • DownloadManager.java
    8.2KB
  • ThreadManager.java
    2.2KB
  • 自定义控件
  • fly
  • RandomLayout.java
    9.5KB
  • StellarMap.java
    8.1KB
  • AnimationUtil.java
    2.9KB
  • ShakeListener.java
    3.1KB
  • RatioLayout.java
    2.4KB
  • LoadingPage.java
    4.6KB
  • MyListView.java
    839B
  • PagerTab.java
    22.2KB
  • MyFlowLayout.java
    7.1KB
  • FlowLayout.java
    8.4KB
  • ProgressArc.java
    5.9KB
  • ProgressHorizontal.java
    8.3KB
  • 下载相关实体类
  • DownloadInfo.java
    2.3KB
  • AppInfo.java
    769B
内容介绍
package com.example.gooleplay.ui.view; import android.content.Context; import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.Typeface; import android.support.v4.view.ViewCompat; import android.support.v4.view.ViewPager; import android.support.v4.view.ViewPager.OnPageChangeListener; import android.support.v4.widget.EdgeEffectCompat; import android.support.v4.widget.ScrollerCompat; import android.util.AttributeSet; import android.util.TypedValue; import android.view.Gravity; import android.view.MotionEvent; import android.view.VelocityTracker; import android.view.View; import android.view.ViewConfiguration; import android.view.ViewGroup; import android.view.ViewParent; import android.view.ViewTreeObserver; import android.widget.ImageButton; import android.widget.TextView; import com.example.gooleplay.R; import com.example.gooleplay.ui.activity.BaseActivity; import com.example.gooleplay.utils.UIUtils; public class PagerTab extends ViewGroup { private ViewPager mViewPager; private PageListener mPageListener = new PageListener();//用于注册给ViewPager监听状态和滚动 private OnPageChangeListener mDelegatePageListener;//用于通知外界ViewPager的状态和滚动 private BaseActivity mActivity; private int mDividerPadding = 12;// 分割线上下的padding private int mDividerWidth = 1;// 分割线的宽度 private int mDividerColor = 0x1A000000;//分割线颜色 private Paint mDividerPaint;//分割线的画笔 private int mIndicatorHeight = 4;//指示器的高度 private int mIndicatorWidth;//指示器的宽度,是动态的随着tab的宽度变化 private int mIndicatorLeft;//指示器的距离左边的距离 private int mIndicatorColor = 0xFF0084FF;//指示器颜色 private Paint mIndicatorPaint; //指示器的画笔 private int mContentWidth;//记录自身内容的宽度 private int mContentHeight;//记录自身内容的高度 private int mTabPadding = 24;// tab左右的内边距 private int mTabTextSize = 16; //tab文字大小 private int mTabBackgroundResId = R.drawable.bg_tab_text;// tab背景资源 private int mTabTextColorResId = R.color.tab_text_color; //tab文字颜色 private int mTabCount;//tab的个数 private int mCurrentPosition = 0;//当前光标所处的tab,规则是以光标的最左端所在的item的position private float mCurrentOffsetPixels;//光标左边距离当前光标所处的tab的左边距离 private int mSelectedPosition = 0; //当前被选中的tab,用于记录手指点击tab的position private boolean mIsBeingDragged = false;//是否处于拖动中 private float mLastMotionX;//上一次手指触摸的x坐标 private VelocityTracker mVelocityTracker;//用于记录速度的帮助类 private int mMinimumVelocity;//系统默认的最小满足fling的速度 private int mMaximumVelocity;//系统默认最大的fling速度 private int mTouchSlop;//系统默认满足滑动的最小位移 private ScrollerCompat mScroller;//处理滚动的帮助者 private int mLastScrollX;//记录上一次滚动的x位置,这是用于处理overScroll,实际位置可能会受到限制 private int mMaxScrollX = 0;// 控件最大可滚动的距离 private int mSplitScrollX = 0;// 根据item的个数,计算出每移动一个item控件需要移动的距离 private EdgeEffectCompat mLeftEdge;//处理overScroll的反馈效果 private EdgeEffectCompat mRightEdge; public PagerTab(Context context) { this(context, null); } public PagerTab(Context context, AttributeSet attrs) { this(context, attrs, 0); } public PagerTab(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); if (context instanceof BaseActivity) { mActivity = (BaseActivity) context; } init(); initPaint(); } /** 初始化一些常量 */ private void init() { //把一个值从dip转换成px mIndicatorHeight = UIUtils.dip2px(mIndicatorHeight); mDividerPadding = UIUtils.dip2px(mDividerPadding); mTabPadding = UIUtils.dip2px(mTabPadding); mDividerWidth = UIUtils.dip2px(mDividerWidth); mTabTextSize = UIUtils.dip2px(mTabTextSize); //创建一个scroller mScroller = ScrollerCompat.create(mActivity); //获取一个系统关于View的常量配置类 final ViewConfiguration configuration = ViewConfiguration.get(mActivity); //获取滑动的最小距离 mTouchSlop = configuration.getScaledTouchSlop(); //获取fling的最小速度 mMinimumVelocity = configuration.getScaledMinimumFlingVelocity(); //获取fling的最大速度 mMaximumVelocity = configuration.getScaledMaximumFlingVelocity(); mLeftEdge = new EdgeEffectCompat(mActivity); mRightEdge = new EdgeEffectCompat(mActivity); } /** 初始化笔 */ private void initPaint() { mIndicatorPaint = new Paint(); mIndicatorPaint.setAntiAlias(true); mIndicatorPaint.setStyle(Paint.Style.FILL); mIndicatorPaint.setColor(mIndicatorColor); mDividerPaint = new Paint(); mDividerPaint.setAntiAlias(true); mDividerPaint.setStrokeWidth(mDividerWidth); mDividerPaint.setColor(mDividerColor); } /** 设置ViewPager */ public void setViewPager(ViewPager viewPager) { if (viewPager == null || viewPager.getAdapter() == null) { throw new IllegalStateException("ViewPager is null or ViewPager does not have adapter instance."); } mViewPager = viewPager; onViewPagerChanged(); } private void onViewPagerChanged() { mViewPager.setOnPageChangeListener(mPageListener);//给ViewPager设置监听 mTabCount = mViewPager.getAdapter().getCount();//有多少个tab需要看ViewPager有多少个页面 for (int i = 0; i < mTabCount; i++) { if (mViewPager.getAdapter() instanceof IconTabProvider) {//如果想要使用icon作为tab,则需要adapter实现IconTabProvider接口 addIconTab(i, ((IconTabProvider) mViewPager.getAdapter()).getPageIconResId(i)); } else { addTextTab(i, mViewPager.getAdapter().getPageTitle(i).toString()); } } ViewTreeObserver viewTreeObserver = getViewTreeObserver(); if (viewTreeObserver != null) {//监听第一个的全局layout事件,来设置当前的mCurrentPosition,显示对应的tab viewTreeObserver.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { public void onGlobalLayout() { getViewTreeObserver().removeGlobalOnLayoutListener(this);//只需要监听一次,之后通过listener回调即可 mCurrentPosition = mViewPager.getCurrentItem(); if (mDelegatePageListener != null) { mDelegatePageListener.onPageSelected(mCurrentPosition); } } }); } } /** 设置监听,因为Tab会监听ViewPager的状态,所以不要给ViewPager设置监听了,设置给Tab,由Tab转发 */ public void setOnPageChangeListener(OnPageChangeListener listener) { mDelegatePageListener = listener; } /** 添加文字tab */ private void addTextTab(final int position, String title) { TextView tab = new TextView(mActivity); tab.setText(title); tab.setGravity(Gravity.CENTER); tab.setSingleLine(); tab.setTextSize(TypedValue.COMPLEX_UNIT_PX, mTabTextSize); tab.setTypeface(Typeface.defaultFromStyle(Typeface.BOLD)); tab.setTextColor(UIUtils.getColorStateList(mTabTextColorResId)); tab.setBackgroundDrawable(UIUtils.getDrawable(mTabBackgroundResId)); tab.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT)); addTab(position, tab); } /** 添加图片icon */ private void addIconTab(final int position, int resId) { ImageButton tab = new ImageButton(mActivity); tab.setImageResource(resId); tab.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); addTab(position, tab); } private void addTab(final int position, View tab) { tab.setFocusable(true); //设置tab的点击事件,当tab被�
评论
    相关推荐
    • android
      掌握Android Studio开发环境的搭建步骤,能够独立搭建 Android Studio开发环境
    • android
      android
    • android
      Android回购
    • android
      android
    • android课件
      清华老师上课的android课件。ch_01android概述ch_02android开发基础ch_03资源的访问ch_04android用户界面ch_05Ativity和Intent。其他自己看。
    • androidandroid
      androidandroidandroidandroidandroidandroidandroid
    • Android 教程
      Android 案例 教程,Android 案例 教程,Android 案例 教程,Android 案例 教程,Android 案例 教程,Android 案例 教程,Android 案例 教程,Android 案例 教程,Android 案例 教程,Android 案例 教程,Android ...
    • Android
      Android
    • Android
      Android