您的位置:首页 > 移动开发 > Android开发

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

2014-11-27 16:49 946 查看
写博客辛苦了,转载的朋友请注明出处哦:/article/1515100.html

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 管理手机的各种系统服务,比如LocationManager,TelephonyManager,InputMethodManager,Vibrator,ConnectivityManager 等等,
/**
 * @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控件,就当做是一个快速开发的工具库吧,当然如果有朋友能贡献几个人手上比较好的工具类也可以留言哦!谢谢大家!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐