SkillAgentSearch skills...

AppUtils

安卓开发的一些基本的封装

Install / Use

/learn @xiaoxiongtest/AppUtils
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

AppUtils

该项目是基于gson-2.2.4.jar和xUtils-2.6.14.jar的一些基本的封装

目录

集成的步骤

  1. 将github上的源码下载下来导入项目中,并让所开发的项目进行依赖(该步骤就不介绍了,百度上有很多)

  2. 创建一个类继承Application,并在oncreate方法中加入以下代码

     // 设置模式开发模式true,生产模式false
     // 开发模式读取文件initFrame.xml,生产模式读取文件initFrame_p.xml
     InitConfig.isDebug = true;
     //设置默认参数,如果有就设置,如果没有就不要设置
     setAutoParams();
     //访问网络框架的初始化
     MHttpUtils.init(getApplicationContext());
     =====================================
     // 设置默认参数(这是例子)
     public void setAutoParams() {
     MHttpUtils.AUTOPARMS.put("platform", "Android");
     MHttpUtils.AUTOPARMS.put("version", "14");
     }
     =======================================
     清单文件中需要设置application中的name
     <application
         android:name="com.example.my.MyApplication"	
         android:allowBackup="true"
         android:icon="@drawable/ic_launcher"
         android:label="@string/app_name"
         android:theme="@style/AppTheme" >
         <activity
             android:name=".MainActivity"
             android:label="@string/app_name"
             android:screenOrientation="portrait" >
     		<intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <category android:name="android.intent.category.LAUNCHER" />
             </intent-filter>
         </activity>
     </application>
    

3.在assets文件中创建一个文件initFrame.xml,格式如下:

<?xml version="1.0" encoding="UTF-8"?>
    <!-- 
    	error 需要显示的系统报错的界面,一般为dialog
    	loading 正在请求网络的时候显示的界面,一般为dialog
    	log 日志是否显示
    	package 以下访问网络需要拼接的包名
    	uri 主机名和端口号
    	url 路径
    	temppath 临时文件路径
 	-->
<FrameInit 
    error="" 
    loading=""
    log="true"
    package="com.example.my.jsonclass"
    uri="http://10.0.7.73:8080"
    url="/MyStore/servlet"
    temppath="">
    <!-- 
    	有返回值,添加classname,无返回值,则不需要添加classname
    	type  0 为get请求 1为post请求
    	cachetime 缓存时间
    	classname 实例
     -->

    <url name="MBAppVersoin" 		type="0" 	cachetime="" classname=".JsonAppUpdata">/NewAppInfo</url>
    <url name="MBListview" 		    type="0" 	cachetime="" classname=".JsonListview">/MyListviewTest</url>
</FrameInit>

4.如果initFrame.xml文件是需要加密,则将该文件与加密.jar放在同一文件夹下,单机加密.bat,将生成的initFrame_p.xml放到assets文件夹下,将1中的InitConfig.isDebug = false;

5.根据上面文件中package+classname等于json的实例类的路径,如果不是json数据classname中就以""表示

6.自定义错误码assets/errorInfo.xml

<?xml version="1.0" encoding="UTF-8"?>
<ErrorInfo version="1">
    <error des="原因未知"				type="-1"  title="错误">原因未知</error>
    <error des="没有网络"  				type="100" title="警告">网络连接失败,请检查网络</error>
    <error des="未登录"   				type="101" title="警告">当前未登录,请登录</error>
    <error des="用户名或密码错误"  		type="102" title="警告">用户名或密码错误,请检查</error>
    <error des="json解析错误"  			type="103" title="错误">json解析错误,请联系客服</error>
</ErrorInfo>

7.需要的权限

<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

##MActivity 集成访问网络获取数据的动画的dialog

下载文件显示进度的progressbar和notification

访问网络获取的数据调用accessNet方法,然后覆写disResposeMsg方法,在对获取的数据进行下一步的处理

accessNet("MBListview", new String[][] { { "page", currentPage + "" } });
	
	// id initFrame.xml该接口的名称
	// obj 获取的数据, 如果是json类型的会返回一个对象,如果不是则是一个字符串
	// type 返回的数据类型 
		//json数据但是以[]开始的 ARRAY_OBJECT
		//json数据但是以{}开始的 SINGLE_OBJECT
		//不是json数据 SINGLE_STRING
	public void disResposeMsg(String id, Object obj, int type) {
	//获取数据成功进行处理
}

##RefreshListview 下拉刷新,上拉加载listview

###下拉刷新

<com.apputils.example.widget.PullToRefreshListView
    android:id="@+id/myRefreshListview"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

监听及结束

PullToRefreshListView myRefreshListview =(PullToRefreshListView) findViewById(R.id.myRefreshListview);
	myRefreshListview.setOnRefreshListener(new PullToRefreshListView.OnRefreshListener() {
		@Override
		public void onRefresh() {
			//TODO 刷新
			
		}
	});
//结束
myRefreshListview.onRefreshComplete();

###上拉加载 <com.apputils.example.widget.LoadMoreListView android:id="@+id/myLoadmoreListview" android:layout_width="match_parent" android:layout_height="match_parent" /> 监听及结束

LoadMoreListView myLoadmoreListview =(LoadMoreListView) findViewById(R.id.myLoadmoreListview);
	myLoadmoreListview.setOnLoadMoreListener(new LoadMoreListView.OnLoadMoreListener() {
		
		@Override
		public void onLoadMore() {
			// TODO 加载更多
			
		}
	});
myLoadmoreListview.onLoadMoreComplete();

###下拉刷新和上拉加载 <com.apputils.example.widget.PullAndLoadListView android:id="@+id/myPALListview" android:layout_width="match_parent" android:layout_height="match_parent" />

监听及结束

PullAndLoadListView myPALListview =(PullAndLoadListView) findViewById(R.id.myPALListview);
myPALListview.setOnRefreshListener(new PullToRefreshListView.OnRefreshListener() {
		
		@Override
		public void onRefresh() {
			// TODO 下拉刷新
			
		}
	});
myPALListview.setOnLoadMoreListener(new PullAndLoadListView.OnLoadMoreListener() {
		
		@Override
		public void onLoadMore() {
			// TODO 上拉加载
			
		}
	});
————————————————————————————————————————————————————————————————————————————
myPALListview.onRefreshComplete();
myPALListview.onLoadMoreComplete();

##关于listview的两个BaseAdapter集成 ###MyBaseAdapter 用法如下:

public class ListAdapter extends MyBaseAdapter<T>{
	public ListAdapter(Context mContext, List<T> als) {
		super(mContext, als);
	//初始化的操作,可以调用的参数如下
	//protected List<T> als;
    //protected Context mContext;
	}
	@Override
	public View getView(int position, View convertView, ViewGroup parent) {
		// 设置view和逻辑处理
		return null;
	}
}

###MyHolderBaseAdapter&BaseHolder 用法如下:

public class MyAdapter extends MyHolderBaseAdapter<T> {
	public MyAdapter(Context mContext, List<T> list) {
		super(mContext, list);
	//初始化的操作,可以调用的参数如下
	//protected List<T> als;
    //protected Context mContext;
	}

	@Override
	public BaseHolder<T> getHolder() {
		return new MyHolder(mContext);
	}
}

====================================================
public class MyHolder extends BaseHolder<T> {
	private View view;

	public MyHolder(Context mContext) {
		super(mContext);
	}

	@Override
	public void refreshView() {
		Content data = getData();
		//控件实例化,并设置数据
		//TextView tv = (TextView) view.findViewById(R.id.myTextview);
		//tv.setText(data.str);
	}

	@Override
	public View initView() {
		//布局实例化
		//view = View.inflate(mContext, R.layout.item_text, null);
		return view;
	}
}

##ViewPager的集成

viewpager = (ViewPager) findViewById(R.id.viewpager);
	List<BasePager> list = new ArrayList<BasePager>();
	list.add(new PagerOne(MainActivity.this));
	list.add(new PagerTwo(MainActivity.this));
	viewpager.setAdapter(new BaseViewPagerAdapter(list));
	//禁止viewpager滑动,如果不需要请删除
	viewpager.setOnTouchListener(new View.OnTouchListener(){
		@Override
		public boolean onTouch(View v, MotionEvent event) {
			return true;
		}
});
=========================================================
public class PagerOne extends BasePager {
private TextView tv;

//父类中有几个变量可以直接使用的:
//this.context = context;
//this.accessNetUtils= AccessNetUtils.getInstance(context);
//view = initView();


	public PagerOne(MActivity context) {
		super(context);
	}

	@Override
	public View initView() {
		//ui的初始化
		View view = View.inflate(context,R.layout.pager_one , null);
		tv = (TextView) view.findViewById(R.id.one);
		return view;
	}

	@Override
	public void initData() {
		//逻辑的处理
		tv.setText("one");
	}
}

##SlideShowView 轮播图 // imageUrls 所有图片资源的url地址 // isAutoPlay 是否开启轮播 slideshowView.setBitmapList(String[] imageUrls, boolean isAutoPlay) ##AbImageUtil 图片处理类 图片的缩放,裁剪,圆边,旋转

//访问网络获取bitmap类型的图片资源
AbImageUtil.getInstance(getApplicationContext()).getBitmapFromUrl("http://image.zcool.com.cn/59/54/m_1303967870670.jpg", new ImageCallBack() {
				@Override
				public void onLoadFailed(String arg1) {
					//图片下载失败
				}
				
				@Override
				public void onLoadCompleted(Bitmap bm) {
					//图片下载成功
				}
			});

##类似于QQ5.0侧滑效果 DragLayout,MyRelativeLayout 需要的jar包 nineoldandroids-2.4.0.jar

布局文件

<?xml version="1.0" encoding="utf-8"?>
<com.apputils.example.widget.DragLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/dl"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="左侧背景" >

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent" >
	<!--左侧的布局内容-->

Related Skills

View on GitHub
GitHub Stars5
CategoryDevelopment
Updated1y ago
Forks1

Languages

Java

Security Score

50/100

Audited on Oct 12, 2024

No findings