写博客辛苦了,转载的朋友请注明出处哦:http://blog.csdn.net/finddreams/article/details/41548779

GitHub下载地址:https://github.com/finddreams/Android_BaseLib

Android_BaseLib

这是一个用于Android快速开发框架,主要是在以往的项目开发中,收集到的常用的功能。集成了很多项目中通用的东西,免去重复造轮子的麻烦,直接下载来了,修改一下就可以做为基础的框架进行开发,提高开发速度,适合当前移动互联网时代敏捷快速开发的节奏。

1.常用到的工具类;

2.BaseActivity,BaseFragment,还有BaseView的封装,以便于对ViewPage中的View进行分别的管理,符合Java的封 装思想。

3.对BaseAdapter进行封装成MyBaseAdapter,引入BaseViewHolder,是个万能的ViewHolder;

4.很多常用的自定义View,CustomToast,SlideButton(滑动按钮),RollViewPager(自动滚动的ViewPage广告)。。。。。

5.加入了很多项目中常用的开源项目,方便使用。比如:

ViewPageIndicator, 导航栏,很多应用中都需要使用到
Pulltorefreshview, 下拉刷新,支持各种ListView已经GridView的下拉
Gson, 谷歌官方的解析json格式的库
fastjson, 阿里巴巴公司出品的解析json格式的库
android-async-http, 异步网络框架
Zxing, 二维码扫描,项目中的名字是core
Universal-image-loader, 强大的异步加载网络图片,防止OOM
xUtils, 国内出名的快速开发框架
nineoldandroids-2.4.0, 在Android2.X上兼容的动画库
volley, 谷歌官方的访问网络的框架
EventBus, 简化Android组件间通信库
Butterknife 依赖注入框架,让你从findViewById中解放出来

(一) 常用的工具类,由于篇幅原因,请见文章的最后详细介绍;

(二) 封装了BaseActivity,BaseFragment,BasePage,对BaseAdapter进行封装,把所有的公共点进行封装,子类只需要继承即可。

(三)万能的ViewHolder 可以省去每次都需要在Adapter类中写一个静态的ViewHolder问题,实现代码的重用性。

(四)集成了很多的自定义View

比如项目常用到的顶部栏,直接封装成了TopBarView,只需要在布局文件中引入即可;

RollViewPager可以自动滚动的ViewPager,带有标题,和用于指示的小圆点。

ProgressWheel自定义的进度条,

CustomToast自定义的Toast

CircleImageView圆形的ImageView

SlideButton左右滑动的滑动开关

ClearEditText带有删除图标的EditText登录中常用到

ScrollListView解决ListView嵌套到ScrollView中只显示一行的问题

更多的自定义View控件请下载项目,详细了解,这里就不做过多介绍。。。。。。

(五)CrashHandler

用于异常崩溃处理 当程序发生未捕获异常时,由该类来接管程序并记录发送错误报告。把错误信息保存在sd卡中,然后上传异常信息到服务器,便于程序员对异常的处理。

(六)集成了常用到的开源框架

ViewPageIndicator常用到滑动导航的开源框架,可以很方便的做到网易新闻客户端Tab标签滑动导航的功能

Pulltorefreshview下拉刷新可以说是每个项目中都必须用到的吧,这个自然不用多说;

Gson可以用于对服务器端返回的json解析,在工具类中可以找到GsonUtil帮助类,解析json非常的方便;

android-async-http非常成熟的异步请求网络的类,使用起来非常简单,从MyHttpClient中可以看到使用方法;当然你也可以不需要网络框架,自己封装httpclient做成MyHttpClient,不过开源框架毕竟是很成熟了的,可以解决在实际运行过程中的一些未知问题;

Zxing二维码/条形码识别的框架 项目中如果需要进行二维码的扫描,可以使用此框架,已经集成在项目中,只需要以startActivityForResult的方式调用本项目中的CaptureActivity类即可打开扫描界面,然后在返回结果中获得扫描到的结果;这个CaptureActivity已经实现了扫描成功时的震动和确认声音,提高用户的体验。当然还有从下而上的滑动滚动横杠,如果有特别的需求可以自己修改,比如说加上闪光灯也是个不错的想法。

Universal-image-loader对于图片的加载怎么少的了这个开源框架呢,全面解决你项目中ListView加载图片的各种问题。

xUtils很不错的快速开发框架,其中的ViewUtil模块可以省去我们在项目中的各种烦人的findViewById代码,以及setOnclickLister等,属于android中的ioc框架,完全注解方式就可以进行UI,资源和事件绑定;

(一)、集成了项目常用到工具类

1.AppManager 对于项目中Activity的管理,是一个单例的类,其中有一个stack栈来管理Activity,可以在退出的时候实现安全退出;

/** * @Description:这是一个管理Activity的类,可以对项目中Activity的生命周期进行管理, * 达到安全退出的目的; * @author http://blog.csdn.net/finddreams */ public class AppManager {private static Stack<Activity> activityStack;private static AppManager instance;private AppManager(){}/** * 单一实例 */public static AppManager getAppManager(){if(instance==null){instance=new AppManager();}return instance;}
/** * 结束所有Activity */public void finishAllActivity(){for (int i = 0, size = activityStack.size(); i < size; i++){ if (null != activityStack.get(i)){ activityStack.get(i).finish(); } }activityStack.clear();}/** * 彻底退出应用程序,安全退出 */public void AppExit(Context context) {try {finishAllActivity();ActivityManager activityMgr= (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);activityMgr.restartPackage(context.getPackageName());System.exit(0);android.os.Process.killProcess(android.os.Process.myPid());} catch (Exception e) {}}

2.CommonUtils常用的工具类封装;

3.DeviceInfoUtil获得设备相关的信息,屏幕的宽和高,以及分辨率(用作屏幕适配),IMEI,设备的蓝牙,和SD卡是否可用。

/** * @Description:手机设备的相关信息 * @author http://blog.csdn.net/finddreams */ public class DeviceInfoUtil{    public static String getImei(Context context)    {        try        {            TelephonyManager tm = (TelephonyManager) context                    .getSystemService(Context.TELEPHONY_SERVICE);            String id = tm.getDeviceId();            if (id != null)            {                return tm.getDeviceId();            }        }        catch (Exception e)        {            e.printStackTrace();        }        return "A000002CBD64E7";    }
public static int getScreenWidth(Context context) { WindowManager mWindowManager = (WindowManager) context .getSystemService(Context.WINDOW_SERVICE); return mWindowManager.getDefaultDisplay().getWidth(); }  public static int getScreenHeight(Context context) { WindowManager mWindowManager = (WindowManager) context .getSystemService(Context.WINDOW_SERVICE); return mWindowManager.getDefaultDisplay().getHeight(); }  public static boolean isSDAva() { if (Environment.getExternalStorageState().equals( Environment.MEDIA_MOUNTED) || Environment.getExternalStorageDirectory().exists()) { return true; } else { return false; } }


4. LogManager项目中Log的统一管理,可以设置在开发模式中显示,以及在生成模式正式上线后隐藏log,保证app安全。封装log多种模式,适合商业项目的开发。

5. Screenshot可以在手机不需要root的情况下用于截图并分享;

/** * @Description:用于截图 * @author http://blog.csdn.net/finddreams */ public class Screenshot {private static final String TAG = "Screenshot";/** * Screenshot and save image to the sdcard  *  * @param context * @return image file * @throws FileNotFoundException */public static File getScreenshot(Context context,View view) throws FileNotFoundException {File file = null;try {if (view == null) {return null;}//View view = ((Activity)context).getWindow().getDecorView();//View mainScreen = ((Activity)context).findViewById(layoutResId);int height = DisplayUtil.getMobileHeight(context);int width = DisplayUtil.getMobileWidth(context);Bitmap bitmap = Bitmap.createBitmap( width, height, Config.ARGB_8888 );Canvas canvas = new Canvas(bitmap);view.draw(canvas);long time = System.currentTimeMillis();file = new File(ConstantsValue.IMAGE_APP_PATH+ "/" + time + ".png");FileOutputStream f = null;f = new FileOutputStream(file);boolean b = bitmap.compress(Bitmap.CompressFormat.PNG, 100, f);if(b){LogManager.d(TAG, "screentshot success");}if (file.exists()) {LogManager.d(TAG, "image file exists");} else {LogManager.d(TAG, "image file not exists");}} catch (Exception e) {LogManager.e(TAG, "getScreenshot", e);}return file;}}

6. ToastManager项目中对Toast的统一管理,可以设置自定义的Toast,设置Toast显示的时间。

7. ServiceManager管理手机的各种系统服务,比如LocationManagerTelephonyManagerInputMethodManagerVibratorConnectivityManager等等

/** * @Description:获得系统服务管理器 * @author http://blog.csdn.net/finddreams */ public class ServiceManager {    private static ConnectivityManager cm;    private static LocationManager locationManager;    private static TelephonyManager telephonyManager;    private static InputMethodManager inputMethodManager;    private static Vibrator vibrator;    private static SensorManager sensorManager;    private static Sensor accelerometerSensor;    private static Sensor lightSensor;//光线传感器引用    private static LayoutInflater inflater;
  

8. ActivityUtil 对于Activity跳转到另一个Activity是否带Bundle数据,是否设置Activity的打开栈方式Flag标记,以及Activity跳转的动画显示;

/** * to new activity,use animation from right to left * @param context * @param cls */public static void goToActivityFromLeft2Right(Context context,Class<?> cls) {Activity activity = (Activity)context;Intent intent = new Intent();intent.setClass(activity, cls);activity.startActivity(intent);activity.overridePendingTransition(R.anim.in_from_right,R.anim.out_to_right);}

还有很多这里就不一一列举了,大家去下载看看就知道了。。。

这些常用的框架相信大家也都比较熟悉了,如果还不会使用的话,csdn上很多大神也都写了介绍如何使用的博客,很容易找到。

这个开源框架是平时开发项目中的总结,很多时候我们动手做项目,第一件事应该是把以前项目中,积累到的工具类和能用到的自定义的View控件都拷贝过来。这样你拥有的工具类越多,你就越能提高你开发项目的速度。

当然积累一定的工具类是需要时间的,所以我们在学习中要养成建立一个工具库的习惯,别人写的不错的也可以拿过来,这样在以后的开发中你就可以派上用场了。

当然这个框架还存在一些不足,以后我会去慢慢的维护,添加一些新的工具类和自定义的View控件,就当做是一个快速开发的工具库吧,当然如果有朋友能贡献几个人手上比较好的工具类也可以留言哦!谢谢大家!

更多相关文章

  1. .Net 转战 Android(安卓)4.4 日常笔记(10)--PullToRefresh下拉刷新
  2. Android中使用log4j
  3. Android(安卓)Orm框架(GreenDao)
  4. Android(安卓)中的各种控件
  5. android通过USB的MTP模式下,禁止用户在根目录有任何操作(重命名 删
  6. Android(安卓)SSH BusyBox
  7. Android(安卓)导入项目时遇到的JNI和NDK问题
  8. Android(安卓)最火高速开发框架AndroidAnnotations使用具体解释
  9. FIDO框架分析3(FIDO UAF Android客户端)

随机推荐

  1. android --- 2g/3g流量问题实例
  2. Android实现自动定位城市并获取天气信息
  3. android 按纽状态配置文件
  4. android之获得当前连接wifi的名字
  5. android获取屏幕长宽的方法
  6. Android:setLatestEventInfo问题
  7. android语音识别之科大讯飞语音API的使用
  8. Android(安卓)Socket编程
  9. Android(安卓)实现开机自启动 Service
  10. Android(安卓)ble setCharactersticNotif