XUtils3框架的基本使用方法(一)
来源:互联网 发布:手机淘宝聊天记录删除 编辑:程序博客网 时间:2024/05/08 10:09
本文为作者原创,转载请指明出处:
http://blog.csdn.net/a1002450926/article/details/50341173
今天给大家带来XUtils3的基本介绍,本文章的案例都是基于XUtils3的API语法进行的演示。相信大家对这个框架也都了解过,下面简单介绍下XUtils3的一些基本知识。
XUtils3一共有4大功能:注解模块,网络模块,图片加载模块,数据库模块。
使用XUtils只需要在libs文件夹里面加入一个jar包,如果对服务器返回的数据进行封装的话,还需要导入一个Gson的jar包。
所需权限:
<code class="hljs xml has-numbering"><span class="hljs-tag"><<span class="hljs-title">uses-permission</span> <span class="hljs-attribute">android:name</span>=<span class="hljs-value">"android.permission.INTERNET"</span> /></span> <span class="hljs-tag"><<span class="hljs-title">uses-permission</span> <span class="hljs-attribute">android:name</span>=<span class="hljs-value">"android.permission.WRITE_EXTERNAL_STORAGE"</span> /></span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li></ul>
注解模块
Activity的注解
1.在Application的oncreate方法中加入下面代码: x.Ext.init(this);
2.在Activity的oncreate方法中加入下面代码: x.view().inject(this);
3.加载当前的Activity布局需要如下注解:
@ContentView加入到Activity的上方
4.给View进行初始化需要如下注解:
@InjectView
5.处理控件的各种响应事件需要如下注解:
@Envent
示例如下:
<code class="hljs avrasm has-numbering"> @ContentView(R<span class="hljs-preprocessor">.layout</span><span class="hljs-preprocessor">.activity</span>_main)public class MainActivity extends ActionBarActivity { @ViewInject(R<span class="hljs-preprocessor">.id</span><span class="hljs-preprocessor">.btn</span>_get) Button btn_get<span class="hljs-comment">;</span> @ViewInject(R<span class="hljs-preprocessor">.id</span><span class="hljs-preprocessor">.btn</span>_post) Button btn_post<span class="hljs-comment">;</span> @Override protected void onCreate(Bundle savedInstanceState) { super<span class="hljs-preprocessor">.onCreate</span>(savedInstanceState)<span class="hljs-comment">;</span> <span class="hljs-built_in">x</span><span class="hljs-preprocessor">.view</span>()<span class="hljs-preprocessor">.inject</span>(this)<span class="hljs-comment">;</span> btn_get<span class="hljs-preprocessor">.setText</span>(<span class="hljs-string">"发送get请求"</span>)<span class="hljs-comment">;</span> btn_post<span class="hljs-preprocessor">.setText</span>(<span class="hljs-string">"发送post请求"</span>)<span class="hljs-comment">;</span> } //等同于@Event(value={R<span class="hljs-preprocessor">.id</span><span class="hljs-preprocessor">.btn</span>_get,R<span class="hljs-preprocessor">.id</span><span class="hljs-preprocessor">.btn</span>_post},type=View<span class="hljs-preprocessor">.OnClickListener</span><span class="hljs-preprocessor">.class</span>) @Event(value={R<span class="hljs-preprocessor">.id</span><span class="hljs-preprocessor">.btn</span>_get,R<span class="hljs-preprocessor">.id</span><span class="hljs-preprocessor">.btn</span>_post}) private void getEvent(View view){ switch(view<span class="hljs-preprocessor">.getId</span>()){ case R<span class="hljs-preprocessor">.id</span><span class="hljs-preprocessor">.btn</span>_get: Toast<span class="hljs-preprocessor">.makeText</span>(MainActivity<span class="hljs-preprocessor">.this</span>, btn_get<span class="hljs-preprocessor">.getText</span>()<span class="hljs-preprocessor">.toString</span>()<span class="hljs-preprocessor">.trim</span>(), <span class="hljs-number">0</span>)<span class="hljs-preprocessor">.show</span>()<span class="hljs-comment">;</span> <span class="hljs-keyword">break</span><span class="hljs-comment">;</span> case R<span class="hljs-preprocessor">.id</span><span class="hljs-preprocessor">.btn</span>_post: Toast<span class="hljs-preprocessor">.makeText</span>(MainActivity<span class="hljs-preprocessor">.this</span>, btn_post<span class="hljs-preprocessor">.getText</span>()<span class="hljs-preprocessor">.toString</span>()<span class="hljs-preprocessor">.trim</span>(), <span class="hljs-number">0</span>)<span class="hljs-preprocessor">.show</span>()<span class="hljs-comment">;</span> <span class="hljs-keyword">break</span><span class="hljs-comment">;</span> } }</code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li><li>15</li><li>16</li><li>17</li><li>18</li><li>19</li><li>20</li><li>21</li><li>22</li><li>23</li><li>24</li><li>25</li><li>26</li><li>27</li><li>28</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li><li>15</li><li>16</li><li>17</li><li>18</li><li>19</li><li>20</li><li>21</li><li>22</li><li>23</li><li>24</li><li>25</li><li>26</li><li>27</li><li>28</li></ul>
通过测试,我们发现当点击btn_get按钮时,弹出了“发送get请求”的效果。到这里,大家算是对XUtils的注解有个一个基本的认识,下面我在强调一点的是,@Event这个注解默认情况下type属性为View.OnClickListener.class.如果你想实现其余点击事件效果,只需要把type值进行修改即可。
另外需要注意的一点是按钮的点击事件必须用private进行修饰。
Fragment的注解:
<code class="hljs java has-numbering"><span class="hljs-annotation">@ContentView</span>(R.layout.fragment_first) <span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">FirstFragment</span> <span class="hljs-keyword">extends</span> <span class="hljs-title">Fragment</span>{</span> <span class="hljs-keyword">private</span> MyAdapter adapter; <span class="hljs-keyword">private</span> List<Person> list=<span class="hljs-keyword">new</span> ArrayList<>(); <span class="hljs-keyword">private</span> List<String> listUrl=<span class="hljs-keyword">new</span> ArrayList<>(); <span class="hljs-keyword">private</span> List<String> listName=<span class="hljs-keyword">new</span> ArrayList<>(); <span class="hljs-annotation">@ViewInject</span>(R.id.btn_test) Button btn_test; <span class="hljs-annotation">@ViewInject</span>(R.id.listView) ListView listView; <span class="hljs-annotation">@Override</span> <span class="hljs-keyword">public</span> View <span class="hljs-title">onCreateView</span>(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { <span class="hljs-keyword">return</span> x.view().inject(<span class="hljs-keyword">this</span>, inflater, container); } </code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li><li>15</li><li>16</li><li>17</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li><li>15</li><li>16</li><li>17</li></ul>
ViewHolder的注解:
<code class="hljs java has-numbering"> <span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">MyAdapter</span> <span class="hljs-keyword">extends</span> <span class="hljs-title">BaseAdapter</span>{</span> <span class="hljs-keyword">private</span> Context context; <span class="hljs-keyword">private</span> List<Person> list; <span class="hljs-keyword">private</span> LayoutInflater mInflater; <span class="hljs-keyword">private</span> ImageOptions options; <span class="hljs-keyword">public</span> ViewHolder holder; <span class="hljs-keyword">public</span> <span class="hljs-title">MyAdapter</span>(Context context, List<Person> list) { <span class="hljs-keyword">this</span>.context = context; <span class="hljs-keyword">this</span>.list = list; <span class="hljs-keyword">this</span>.mInflater=LayoutInflater.from(context); options=<span class="hljs-keyword">new</span> ImageOptions.Builder().setLoadingDrawableId(R.drawable.ic_launcher) .setLoadingDrawableId(R.drawable.ic_launcher).setUseMemCache(<span class="hljs-keyword">true</span>).setCircular(<span class="hljs-keyword">true</span>).build(); } <span class="hljs-annotation">@Override</span> <span class="hljs-keyword">public</span> <span class="hljs-keyword">int</span> <span class="hljs-title">getCount</span>() { <span class="hljs-keyword">return</span> list.size(); } <span class="hljs-annotation">@Override</span> <span class="hljs-keyword">public</span> Object <span class="hljs-title">getItem</span>(<span class="hljs-keyword">int</span> position) { <span class="hljs-keyword">return</span> list.get(position); } <span class="hljs-annotation">@Override</span> <span class="hljs-keyword">public</span> <span class="hljs-keyword">long</span> <span class="hljs-title">getItemId</span>(<span class="hljs-keyword">int</span> position) { <span class="hljs-keyword">return</span> position; } <span class="hljs-annotation">@Override</span> <span class="hljs-keyword">public</span> View <span class="hljs-title">getView</span>(<span class="hljs-keyword">int</span> position, View convertView, ViewGroup parent) { holder=<span class="hljs-keyword">null</span>; <span class="hljs-keyword">if</span>(convertView==<span class="hljs-keyword">null</span>){ convertView=mInflater.inflate(R.layout.itemone, <span class="hljs-keyword">null</span>); holder=<span class="hljs-keyword">new</span> ViewHolder(); x.view().inject(holder,convertView); convertView.setTag(holder); } <span class="hljs-keyword">else</span>{ holder=(ViewHolder) convertView.getTag(); } Person bean=list.get(position); holder.tv_name.setText(bean.getName()); x.image().bind(holder.iv_image, bean.getImgUrl(), options); <span class="hljs-keyword">return</span> convertView; } class ViewHolder{ <span class="hljs-annotation">@ViewInject</span>(R.id.tv_name) <span class="hljs-keyword">private</span> TextView tv_name; <span class="hljs-annotation">@ViewInject</span>(R.id.iv_image) <span class="hljs-keyword">private</span> ImageView iv_image; }</code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li><li>15</li><li>16</li><li>17</li><li>18</li><li>19</li><li>20</li><li>21</li><li>22</li><li>23</li><li>24</li><li>25</li><li>26</li><li>27</li><li>28</li><li>29</li><li>30</li><li>31</li><li>32</li><li>33</li><li>34</li><li>35</li><li>36</li><li>37</li><li>38</li><li>39</li><li>40</li><li>41</li><li>42</li><li>43</li><li>44</li><li>45</li><li>46</li><li>47</li><li>48</li><li>49</li><li>50</li><li>51</li><li>52</li><li>53</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li><li>15</li><li>16</li><li>17</li><li>18</li><li>19</li><li>20</li><li>21</li><li>22</li><li>23</li><li>24</li><li>25</li><li>26</li><li>27</li><li>28</li><li>29</li><li>30</li><li>31</li><li>32</li><li>33</li><li>34</li><li>35</li><li>36</li><li>37</li><li>38</li><li>39</li><li>40</li><li>41</li><li>42</li><li>43</li><li>44</li><li>45</li><li>46</li><li>47</li><li>48</li><li>49</li><li>50</li><li>51</li><li>52</li><li>53</li></ul>
上面的代码是注解ViewHolder的标准模式,相信大家完全能够看明白。这里我加载图片使用到了XUtils3的加载网络图片的方法。后面我会详细进行讲解。
网络模块
XUtils的网络请求方法和一些网络请求框架的用法非常类似,我进行了一些简单的封装。
封装一共有3个文件,分别是网络请求工具类XUtil,请求响应数据的解析类,还有一个就是一个请求成功的一个接口回调类。
代码如下:
<code class="hljs java has-numbering"><span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">XUtil</span> {</span> <span class="hljs-javadoc">/** * 发送get请求 *<span class="hljs-javadoctag"> @param</span> <T> */</span> <span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <T> Cancelable <span class="hljs-title">Get</span>(String url,Map<String,String> map,CommonCallback<T> callback){ RequestParams params=<span class="hljs-keyword">new</span> RequestParams(url); <span class="hljs-keyword">if</span>(<span class="hljs-keyword">null</span>!=map){ <span class="hljs-keyword">for</span>(Map.Entry<String, String> entry : map.entrySet()){ params.addQueryStringParameter(entry.getKey(), entry.getValue()); } } Cancelable cancelable = x.http().get(params, callback); <span class="hljs-keyword">return</span> cancelable; } <span class="hljs-javadoc">/** * 发送post请求 *<span class="hljs-javadoctag"> @param</span> <T> */</span> <span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <T> Cancelable <span class="hljs-title">Post</span>(String url,Map<String,Object> map,CommonCallback<T> callback){ RequestParams params=<span class="hljs-keyword">new</span> RequestParams(url); <span class="hljs-keyword">if</span>(<span class="hljs-keyword">null</span>!=map){ <span class="hljs-keyword">for</span>(Map.Entry<String, Object> entry : map.entrySet()){ params.addParameter(entry.getKey(), entry.getValue()); } } Cancelable cancelable = x.http().post(params, callback); <span class="hljs-keyword">return</span> cancelable; } <span class="hljs-javadoc">/** * 上传文件 *<span class="hljs-javadoctag"> @param</span> <T> */</span> <span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <T> Cancelable <span class="hljs-title">UpLoadFile</span>(String url,Map<String,Object> map,CommonCallback<T> callback){ RequestParams params=<span class="hljs-keyword">new</span> RequestParams(url); <span class="hljs-keyword">if</span>(<span class="hljs-keyword">null</span>!=map){ <span class="hljs-keyword">for</span>(Map.Entry<String, Object> entry : map.entrySet()){ params.addParameter(entry.getKey(), entry.getValue()); } } params.setMultipart(<span class="hljs-keyword">true</span>); Cancelable cancelable = x.http().post(params, callback); <span class="hljs-keyword">return</span> cancelable; } <span class="hljs-javadoc">/** * 下载文件 *<span class="hljs-javadoctag"> @param</span> <T> */</span> <span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <T> Cancelable <span class="hljs-title">DownLoadFile</span>(String url,String filepath,CommonCallback<T> callback){ RequestParams params=<span class="hljs-keyword">new</span> RequestParams(url); <span class="hljs-comment">//设置断点续传</span> params.setAutoResume(<span class="hljs-keyword">true</span>); params.setSaveFilePath(filepath); Cancelable cancelable = x.http().get(params, callback); <span class="hljs-keyword">return</span> cancelable; }}</code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li><li>15</li><li>16</li><li>17</li><li>18</li><li>19</li><li>20</li><li>21</li><li>22</li><li>23</li><li>24</li><li>25</li><li>26</li><li>27</li><li>28</li><li>29</li><li>30</li><li>31</li><li>32</li><li>33</li><li>34</li><li>35</li><li>36</li><li>37</li><li>38</li><li>39</li><li>40</li><li>41</li><li>42</li><li>43</li><li>44</li><li>45</li><li>46</li><li>47</li><li>48</li><li>49</li><li>50</li><li>51</li><li>52</li><li>53</li><li>54</li><li>55</li><li>56</li><li>57</li><li>58</li><li>59</li><li>60</li><li>61</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li><li>15</li><li>16</li><li>17</li><li>18</li><li>19</li><li>20</li><li>21</li><li>22</li><li>23</li><li>24</li><li>25</li><li>26</li><li>27</li><li>28</li><li>29</li><li>30</li><li>31</li><li>32</li><li>33</li><li>34</li><li>35</li><li>36</li><li>37</li><li>38</li><li>39</li><li>40</li><li>41</li><li>42</li><li>43</li><li>44</li><li>45</li><li>46</li><li>47</li><li>48</li><li>49</li><li>50</li><li>51</li><li>52</li><li>53</li><li>54</li><li>55</li><li>56</li><li>57</li><li>58</li><li>59</li><li>60</li><li>61</li></ul>
<code class="hljs java has-numbering"><span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">JsonResponseParser</span> <span class="hljs-keyword">implements</span> <span class="hljs-title">ResponseParser</span> {</span> <span class="hljs-comment">//检查服务器返回的响应头信息</span> <span class="hljs-annotation">@Override</span> <span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">checkResponse</span>(UriRequest request) <span class="hljs-keyword">throws</span> Throwable { } <span class="hljs-javadoc">/** * 转换result为resultType类型的对象 * *<span class="hljs-javadoctag"> @param</span> resultType 返回值类型(可能带有泛型信息) *<span class="hljs-javadoctag"> @param</span> resultClass 返回值类型 *<span class="hljs-javadoctag"> @param</span> result 字符串数据 *<span class="hljs-javadoctag"> @return</span> *<span class="hljs-javadoctag"> @throws</span> Throwable */</span> <span class="hljs-annotation">@Override</span> <span class="hljs-keyword">public</span> Object <span class="hljs-title">parse</span>(Type resultType, Class<?> resultClass, String result) <span class="hljs-keyword">throws</span> Throwable { <span class="hljs-keyword">return</span> <span class="hljs-keyword">new</span> Gson().fromJson(result, resultClass); }}</code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li><li>15</li><li>16</li><li>17</li><li>18</li><li>19</li><li>20</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li><li>15</li><li>16</li><li>17</li><li>18</li><li>19</li><li>20</li></ul>
<code class="hljs axapta has-numbering"><span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">MyCallBack</span><<span class="hljs-title">ResultType</span>> <span class="hljs-inheritance"><span class="hljs-keyword">implements</span></span> <span class="hljs-title">Callback</span>.<span class="hljs-title">CommonCallback</span><<span class="hljs-title">ResultType</span>>{</span> @Override <span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> onSuccess(ResultType result) { <span class="hljs-comment">//可以根据公司的需求进行统一的请求成功的逻辑处理</span> } @Override <span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> onError(Throwable ex, <span class="hljs-keyword">boolean</span> isOnCallback) { <span class="hljs-comment">//可以根据公司的需求进行统一的请求网络失败的逻辑处理</span> } @Override <span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> onCancelled(CancelledException cex) { } @Override <span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> onFinished() { }}</code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li><li>15</li><li>16</li><li>17</li><li>18</li><li>19</li><li>20</li><li>21</li><li>22</li><li>23</li><li>24</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li><li>15</li><li>16</li><li>17</li><li>18</li><li>19</li><li>20</li><li>21</li><li>22</li><li>23</li><li>24</li></ul>
1.发送get请求示例:
<code class="hljs lasso has-numbering"><span class="hljs-comment">//本get请求来自于免费测试接口:http://www.k780.com/api/entry.baidu</span><span class="hljs-built_in">String</span> url<span class="hljs-subst">=</span><span class="hljs-string">"http://api.k780.com:88/?app=idcard.get"</span>; <span class="hljs-built_in">Map</span><span class="hljs-subst"><</span><span class="hljs-built_in">String</span>,<span class="hljs-built_in">String</span><span class="hljs-subst">></span> <span class="hljs-built_in">map</span><span class="hljs-subst">=</span><span class="hljs-literal">new</span> HashMap<span class="hljs-subst"><></span>(); <span class="hljs-built_in">map</span><span class="hljs-built_in">.</span>put(<span class="hljs-string">"appkey"</span>, <span class="hljs-string">"10003"</span>); <span class="hljs-built_in">map</span><span class="hljs-built_in">.</span>put(<span class="hljs-string">"sign"</span>, <span class="hljs-string">"b59bc3ef6191eb9f747dd4e83c99f2a4"</span>); <span class="hljs-built_in">map</span><span class="hljs-built_in">.</span>put(<span class="hljs-string">"format"</span>, <span class="hljs-string">"json"</span>); <span class="hljs-built_in">map</span><span class="hljs-built_in">.</span>put(<span class="hljs-string">"idcard"</span>, <span class="hljs-string">"110101199001011114"</span>); XUtil<span class="hljs-built_in">.</span>Get(url, <span class="hljs-built_in">map</span>, <span class="hljs-literal">new</span> MyCallBack<span class="hljs-subst"><</span>PersonInfoBean<span class="hljs-subst">></span>(){ @Override <span class="hljs-keyword">public</span> <span class="hljs-literal">void</span> onSuccess(PersonInfoBean result) { super<span class="hljs-built_in">.</span>onSuccess(result); <span class="hljs-keyword">Log</span><span class="hljs-built_in">.</span>e(<span class="hljs-string">"result"</span>, result<span class="hljs-built_in">.</span>toString()); } @Override <span class="hljs-keyword">public</span> <span class="hljs-literal">void</span> onError(Throwable ex, boolean isOnCallback) { super<span class="hljs-built_in">.</span>onError(ex, isOnCallback); } });</code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li><li>15</li><li>16</li><li>17</li><li>18</li><li>19</li><li>20</li><li>21</li><li>22</li><li>23</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li><li>15</li><li>16</li><li>17</li><li>18</li><li>19</li><li>20</li><li>21</li><li>22</li><li>23</li></ul>
2.发送post请求
<code class="hljs lasso has-numbering"><span class="hljs-built_in">String</span> url<span class="hljs-subst">=</span><span class="hljs-string">"http://api.k780.com:88/?app=idcard.get"</span>; <span class="hljs-built_in">Map</span><span class="hljs-subst"><</span><span class="hljs-built_in">String</span>,Object<span class="hljs-subst">></span> <span class="hljs-built_in">map</span><span class="hljs-subst">=</span><span class="hljs-literal">new</span> HashMap<span class="hljs-subst"><></span>(); <span class="hljs-built_in">map</span><span class="hljs-built_in">.</span>put(<span class="hljs-string">"appkey"</span>, <span class="hljs-string">"10003"</span>); <span class="hljs-built_in">map</span><span class="hljs-built_in">.</span>put(<span class="hljs-string">"sign"</span>, <span class="hljs-string">"b59bc3ef6191eb9f747dd4e83c99f2a4"</span>); <span class="hljs-built_in">map</span><span class="hljs-built_in">.</span>put(<span class="hljs-string">"format"</span>, <span class="hljs-string">"json"</span>); <span class="hljs-built_in">map</span><span class="hljs-built_in">.</span>put(<span class="hljs-string">"idcard"</span>, <span class="hljs-string">"110101199001011114"</span>); XUtil<span class="hljs-built_in">.</span>Post(url, <span class="hljs-built_in">map</span>, <span class="hljs-literal">new</span> MyCallBack<span class="hljs-subst"><</span>PersonInfoBean<span class="hljs-subst">></span>(){ @Override <span class="hljs-keyword">public</span> <span class="hljs-literal">void</span> onSuccess(PersonInfoBean result) { super<span class="hljs-built_in">.</span>onSuccess(result); <span class="hljs-keyword">Log</span><span class="hljs-built_in">.</span>e(<span class="hljs-string">"result"</span>, result<span class="hljs-built_in">.</span>toString()); } @Override <span class="hljs-keyword">public</span> <span class="hljs-literal">void</span> onError(Throwable ex, boolean isOnCallback) { super<span class="hljs-built_in">.</span>onError(ex, isOnCallback); } });</code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li><li>15</li><li>16</li><li>17</li><li>18</li><li>19</li><li>20</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li><li>15</li><li>16</li><li>17</li><li>18</li><li>19</li><li>20</li></ul>
3.上传文件
<code class="hljs java has-numbering"><span class="hljs-javadoc">/** * 上传文件(支持多文件上传) */</span> <span class="hljs-keyword">private</span> <span class="hljs-keyword">void</span> <span class="hljs-title">uploadfile</span>() { <span class="hljs-comment">//图片上传地址</span> String url=<span class="hljs-string">""</span>; Map<String,Object> map=<span class="hljs-keyword">new</span> HashMap<>(); <span class="hljs-comment">//传入自己的相应参数</span> <span class="hljs-comment">//map.put(key, value);</span> <span class="hljs-comment">//map.put(key, value);</span> XUtil.UpLoadFile(url, map, <span class="hljs-keyword">new</span> MyCallBack<String>(){ <span class="hljs-annotation">@Override</span> <span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">onSuccess</span>(String result) { <span class="hljs-keyword">super</span>.onSuccess(result); } <span class="hljs-annotation">@Override</span> <span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">onError</span>(Throwable ex, <span class="hljs-keyword">boolean</span> isOnCallback) { <span class="hljs-keyword">super</span>.onError(ex, isOnCallback); } }); }</code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li><li>15</li><li>16</li><li>17</li><li>18</li><li>19</li><li>20</li><li>21</li><li>22</li><li>23</li><li>24</li><li>25</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li><li>15</li><li>16</li><li>17</li><li>18</li><li>19</li><li>20</li><li>21</li><li>22</li><li>23</li><li>24</li><li>25</li></ul>
4.下载文件
<code class="hljs java has-numbering"><span class="hljs-keyword">private</span> <span class="hljs-keyword">void</span> <span class="hljs-title">downloadfile</span>() { <span class="hljs-comment">//文件下载地址</span> String url=<span class="hljs-string">""</span>; <span class="hljs-comment">//文件保存在本地的路径</span> String filepath=<span class="hljs-string">""</span>; XUtil.DownLoadFile(url, filepath,<span class="hljs-keyword">new</span> MyCallBack<File>(){ <span class="hljs-annotation">@Override</span> <span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">onSuccess</span>(File result) { <span class="hljs-keyword">super</span>.onSuccess(result); } <span class="hljs-annotation">@Override</span> <span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">onError</span>(Throwable ex, <span class="hljs-keyword">boolean</span> isOnCallback) { <span class="hljs-keyword">super</span>.onError(ex, isOnCallback); } });</code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li><li>15</li><li>16</li><li>17</li><li>18</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li><li>15</li><li>16</li><li>17</li><li>18</li></ul>
5.下载文件带进度条
<code class="hljs java has-numbering"><span class="hljs-keyword">private</span> <span class="hljs-keyword">void</span> <span class="hljs-title">downloadprogressfile</span>() { <span class="hljs-comment">//文件下载地址</span> String url=<span class="hljs-string">""</span>; <span class="hljs-comment">//文件保存在本地的路径</span> String filepath=<span class="hljs-string">""</span>; XUtil.DownLoadFile(url, filepath,<span class="hljs-keyword">new</span> MyProgressCallBack<File>(){ <span class="hljs-annotation">@Override</span> <span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">onSuccess</span>(File result) { <span class="hljs-keyword">super</span>.onSuccess(result); } <span class="hljs-annotation">@Override</span> <span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">onError</span>(Throwable ex, <span class="hljs-keyword">boolean</span> isOnCallback) { <span class="hljs-keyword">super</span>.onError(ex, isOnCallback); } <span class="hljs-annotation">@Override</span> <span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">onLoading</span>(<span class="hljs-keyword">long</span> total, <span class="hljs-keyword">long</span> current, <span class="hljs-keyword">boolean</span> isDownloading) { <span class="hljs-keyword">super</span>.onLoading(total, current, isDownloading); } }); }</code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li><li>15</li><li>16</li><li>17</li><li>18</li><li>19</li><li>20</li><li>21</li><li>22</li><li>23</li><li>24</li><li>25</li><li>26</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li><li>15</li><li>16</li><li>17</li><li>18</li><li>19</li><li>20</li><li>21</li><li>22</li><li>23</li><li>24</li><li>25</li><li>26</li></ul>
6.发送get请求(服务器以xml格式返回)
<code class="hljs java has-numbering"><span class="hljs-keyword">private</span> <span class="hljs-keyword">void</span> <span class="hljs-title">getxml</span>() { String url=<span class="hljs-string">"http://flash.weather.com.cn/wmaps/xml/china.xml"</span>; XUtil.Get(url, <span class="hljs-keyword">null</span>, <span class="hljs-keyword">new</span> MyCallBack<String>(){ <span class="hljs-annotation">@Override</span> <span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">onSuccess</span>(String xmlString) { <span class="hljs-keyword">super</span>.onSuccess(xmlString); <span class="hljs-keyword">try</span>{ XmlPullParserFactory factory = XmlPullParserFactory.newInstance(); XmlPullParser xmlPullParser = factory.newPullParser(); xmlPullParser.setInput(<span class="hljs-keyword">new</span> StringReader(xmlString)); <span class="hljs-keyword">int</span> eventType = xmlPullParser.getEventType(); <span class="hljs-keyword">while</span> (eventType != XmlPullParser.END_DOCUMENT) { <span class="hljs-keyword">switch</span> (eventType) { <span class="hljs-keyword">case</span> XmlPullParser.START_TAG: String nodeName = xmlPullParser.getName(); <span class="hljs-keyword">if</span> (<span class="hljs-string">"city"</span>.equals(nodeName)) { String pName = xmlPullParser.getAttributeValue(<span class="hljs-number">0</span>); Log.e(<span class="hljs-string">"TAG"</span>, <span class="hljs-string">"city is "</span> + pName); } <span class="hljs-keyword">break</span>; } eventType = xmlPullParser.next(); } }<span class="hljs-keyword">catch</span>(Exception e){ e.printStackTrace(); } } <span class="hljs-annotation">@Override</span> <span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">onError</span>(Throwable ex, <span class="hljs-keyword">boolean</span> isOnCallback) { <span class="hljs-keyword">super</span>.onError(ex, isOnCallback); } }); }</code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li><li>15</li><li>16</li><li>17</li><li>18</li><li>19</li><li>20</li><li>21</li><li>22</li><li>23</li><li>24</li><li>25</li><li>26</li><li>27</li><li>28</li><li>29</li><li>30</li><li>31</li><li>32</li><li>33</li><li>34</li><li>35</li><li>36</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li><li>13</li><li>14</li><li>15</li><li>16</li><li>17</li><li>18</li><li>19</li><li>20</li><li>21</li><li>22</li><li>23</li><li>24</li><li>25</li><li>26</li><li>27</li><li>28</li><li>29</li><li>30</li><li>31</li><li>32</li><li>33</li><li>34</li><li>35</li><li>36</li></ul>
图片加载模块
用法:
<code class="hljs r has-numbering">x.image().bind(imageView, url, imageOptions);x.image().bind(imageView, <span class="hljs-string">"file:///sdcard/test.gif"</span>, imageOptions);x.image().bind(imageView, <span class="hljs-string">"assets://test.gif"</span>, imageOptions);x.image().bind(imageView, url, imageOptions, new Callback.CommonCallback<Drawable>() {<span class="hljs-keyword">...</span>});x.image().loadDrawable(url, imageOptions, new Callback.CommonCallback<Drawable>() {<span class="hljs-keyword">...</span>});x.image().loadFile(url, imageOptions, new Callback.CommonCallback<File>() {<span class="hljs-keyword">...</span>});</code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li></ul>
Xutils3的api还是比较简单的,相信大家都可以看懂,第一个参数传入一个View,第二个参数传入一个图片的网络地址,第三个参数一般是加载图片的配置。
下面看一下ImageOptions这个类吧:
<code class="hljs avrasm has-numbering">ImageOptions options=new ImageOptions<span class="hljs-preprocessor">.Builder</span>()//设置加载过程中的图片<span class="hljs-preprocessor">.setLoadingDrawableId</span>(R<span class="hljs-preprocessor">.drawable</span><span class="hljs-preprocessor">.ic</span>_launcher)//设置加载失败后的图片<span class="hljs-preprocessor">.setFailureDrawableId</span>(R<span class="hljs-preprocessor">.drawable</span><span class="hljs-preprocessor">.ic</span>_launcher)//设置使用缓存<span class="hljs-preprocessor">.setUseMemCache</span>(true)//设置显示圆形图片<span class="hljs-preprocessor">.setCircular</span>(true)//设置支持gif<span class="hljs-preprocessor">.setIgnoreGif</span>(false)<span class="hljs-preprocessor">.build</span>()<span class="hljs-comment">;</span></code><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li></ul><ul style="" class="pre-numbering"><li>1</li><li>2</li><li>3</li><li>4</li><li>5</li><li>6</li><li>7</li><li>8</li><li>9</li><li>10</li><li>11</li><li>12</li></ul>
其余的一些配置请参考源码
如果需要对加载的图片进行操作的话,可以使用:
<code class="hljs r has-numbering">x.image().loadDrawable(url, imageOptions, new Callback.CommonCallback<Drawable>() {<span class="hljs-keyword">...</span>});</code><ul style="" class="pre-numbering"><li>1</li></ul><ul style="" class="pre-numbering"><li>1</li></ul>
通过返回的Drawable对象进行图片的处理,满足项目的个性化的要求.
说了这么多,我想大家至少会对XUtils3有了一个基本的了解,由于XUtils3的数据库的用法比较多,本篇文章不会去涉及,下一篇文章我会为大家详细讲解XUtils3的数据库模块。大家赶紧现在动手操作一下吧!本文涉及到的所有实例都会在下面的demo中有涉及到,请自行参考。
XUtils3.zip
- XUtils3框架的基本使用方法(一)
- XUtils3框架的基本使用方法(一)
- XUtils3框架的基本使用方法(一)
- XUtils3框架的基本使用方法(一)
- XUtils3框架的基本使用方法
- XUtils===XUtils3框架的基本使用方法(一)
- XUtils===XUtils3框架的基本使用方法(一)
- XUtils===XUtils3框架的基本使用方法(一)
- XUtils===XUtils3框架的基本使用方法(一)
- XUtils===XUtils3框架的基本使用方法(一)
- XUtils===XUtils3框架的基本使用方法(一)
- XUtils3框架的基本使用方法(二)
- XUtils3框架的基本使用方法(二)
- Xutils3框架的基本使用一
- XUtils===XUtils3框架的基本使用方法(二)
- XUtils===XUtils3框架的基本使用方法(二)
- XUtils===XUtils3框架的基本使用方法(二)
- XUtils===XUtils3框架的基本使用方法(二)
- 在Windows中配置Rsync同步文件的方法
- 获取Jq中资源地址
- 在windows上部署使用Redis
- linux编程之mprotect
- Java RMI(1):HelloWorld篇
- XUtils3框架的基本使用方法(一)
- 与WWDC大会同步,黑马程序员iOS4.0课程震撼出炉
- 签语签寻
- Linux TCP队列相关参数的总结
- 机器学习研究方向
- easyui datagrid 多表头设置
- libyuv编译(各平台)
- c++对象模型研究1:关于对象
- 亲子拍拍v1.2.1官方iPhone版