Android快速开发框架Android_BaseLib,集成了常用工具类,自定义View控件,Base基类封装,常用开源框架

来源:互联网 发布:安卓超人软件 编辑:程序博客网 时间:2024/05/16 15:27

   写博客辛苦了,转载的朋友请注明出处哦: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控件,就当做是一个快速开发的工具库吧,当然如果有朋友能贡献几个人手上比较好的工具类也可以留言哦!谢谢大家!

14 1
原创粉丝点击