2.下拉刷新、二维码

下拉刷新

  • pulltorefresh
    • 支持listview,webview,gridview,expandableListview众多控件 1,lv_list = refreshListView.getRefreshableView();//需要拿到refreshListView这个组合控件里面的具体的listview,才可以设置adapter 2.refreshListView.setRefreshing();//开始加载数据的时候.应该显示.正在刷新 3.refreshListView.onRefreshComplete();//结束刷新状态 4. refreshListView.setOnRefreshListener(new OnRefreshListener() { @Override public void onRefresh() { //下拉刷新中.我们应该去重写请求数据 initData(); System.out.println("===setOnRefreshListener===="); } });
  • xlistview:修改布局方便
    • 只支持listview
    • 关键方法 xlv.setPullLoadEnable(true);//开启上拉加载更多 xlv.setPullRefreshEnable(true);//开启下拉刷新 xlv.stopRefresh();//停止刷新 xlv.stopLoadMore();//停止加载更多 xlv.setXListViewListener(new IXListViewListener() {//设置监听 @Override public void onRefresh() { handler.sendMessageDelayed(new Message(), 2000); } @Override public void onLoadMore() { for (int i = 0; i < 100; i++) { String str = "这个是一个item条目 " + i; dataSource.add(str); } handler.sendMessageDelayed(new Message(), 2000); } }); xlv.setRefreshTime(preUpdateTime2);//设置上次更新时间

网络引擎的封装

  • 不通网络请求封装到CloudEngine.class中,以方法的形式暴露;
  • 所有网络请求结果的处理.通过接口方法回调回来;

接口回调

  • handler机制+thread
  • 怎么理解接口回调-->接口回调就是一个通知机制
  • 作用:1.单纯的通知 2.通知+传值
  • 步骤:
    • 1.定义接口,以及接口方法
    • 2.定义接口对象
    • 3.在某一个地方.接口对象调用接口方法
    • 4.暴露接口对象(构造方法,setter方法)

AsyncTask

基本使用

onPre
doInbackGroup
onpost

AsyncTask源码分析

private static final int CORE_POOL_SIZE = 5;        //核心线程数
private static final int MAXIMUM_POOL_SIZE = 128;   //最大线程数
private static final int KEEP_ALIVE = 1;            //超时时间,当线程数超过核心线程数时,超过这个时间的空线程就会被销毁,直到线程数等于核心线程 

AsyncTask缺陷

  • 1.同时只有5个线程去访问网络-->这个是重点
  • 2.线程数目超过128,会抛异常-->这个情况其实还好;

AsyncTask版本差异

  • COREPOOLSIZE MAXIMUM_POOLSIZE KEEPALIVE在不同的版本上.值是不一样;
  • 1.5前是串行执行的.每次执行1个任务
  • 1.6-2.3之前的版本.是并行执行的.每次执行5个任务
  • 3.0后提供串行和并行,默认情况是串行 executeOnExecutor(AsyncTask.SERIAL_EXECUTOR, null);//串行 executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, null);//并行

AsyncTask简单封装

实际开发我们会去继承Asynctask

AsyncTask函数化的封装,AsyncTask函数式的调用

接口回调实例

    //1.
    public static interface OnCheckedChangeListener {
    void onCheckedChanged(CompoundButton buttonView, boolean isChecked);
   }
    //2.
    private OnCheckedChangeListener mOnCheckedChangeListener;
    //3.
    mOnCheckedChangeListener.onCheckedChanged(this, mChecked);
    //4.
     public void setOnCheckedChangeListener(OnCheckedChangeListener listener) {
    mOnCheckedChangeListener = listener;
    }

全局异常处理

  • 方法定义的地方.统一抛出基类 /** * 这个是一个会抛出异常b的方法 * @throws HMException * @throws HMException */ public static void methodB() throws HMException { //如果在某一个时刻.出现了异常啊. //出现状态的是子类.抛出的是父类. throw new HMBException();//主动抛异常 }
  • 方法使用的地方,try catch基类 try { Api.methodB(); } catch (HMException e) { handleException(e); }
  • 提示信息具体化 /** * 不同异常子类用不同的code表示 * @param e * @return */ public static int exception2code(HMException e) { int errCode = 0; if (e instanceof HMAException) { errCode = 1; } else if (e instanceof HMBException) { errCode = 2; } else if (e instanceof HMCException) { errCode = 3; } else if (e instanceof HMDException) { errCode = 4; } return errCode; } /** * 根据不同的异常信息.显示不同的效果 * @param e */ public void handleException(HMException e) { int exception2code = ExceptionHandler.exception2code(e); String code2String = ExceptionHandler.code2String(exception2code); Toast.makeText(getApplicationContext(), code2String, 0).show(); }

actionbarsherlock

actionBar版本兼容库.我们可以在2.1以下也是用actionbar

    actionBar = getSupportActionBar();//得到actionbar,
    actionBar.setDisplayHomeAsUpEnabled(true);//是否显示返回箭头,默认情况是false,
    //如果setDisplayShowHomeEnabled setDisplayShowTitleEnabled 都是false,那么退回图标设置为true/false都不见
    actionBar.setDisplayShowHomeEnabled(false);//是否显示logo,默认是true
    actionBar.setDisplayShowTitleEnabled(true);//是否显示title,默认是true

    //      actionBar.setTitle("56期");//修改title
    //      actionBar.setIcon(R.drawable.icon_download);//修改logo

几个actionBar的区别

  • actionbarsherlock->actionbar-->都支持-->2.1以下系统还得使用,actionbarsherlock提供了很多的样式;
  • v7-->actionbar-->2.1以上的系统可以支持
  • android sdk->actionbar-->3.0以上的手机支持

v4 v7 v13

  • v4:兼容api level4(android 1.6)以上的系统
  • v7:兼容api level7(android 2.1)以上的系统
  • v13:兼容api level3(android 3.2)以上的系统

二维码历史性的东西

使用zxing包,qrcode

二维码的精简

以前很长一段时间.关于zxing包的精简是比较火.

二维码横竖屏切换

图片横着切

二维码动画

仿微信扫描效果

使用zxing扫描二维码

认识二维码

  • 二维码的范围
  • 二维码容错级别
  • 二维码嵌入logo

使用

先找到按钮,然后调用

//1.启动扫描界面
            Intent intent = new Intent(MainActivity.this, CaptureActivity.class);
            startActivityForResult(intent, SCANNIN_GREQUEST_CODE);
// 2.处理扫描结果
/**
 * 
 * @param result
 * @param barcode
 */
public void handleDecode(Result result, Bitmap barcode) {
    inactivityTimer.onActivity();
    playBeepSoundAndVibrate();

    // 扫描结果
    String resultString = result.getText();

    if (resultString.equals("")) {
        Toast.makeText(CaptureActivity.this, "Scan failed!", Toast.LENGTH_SHORT).show();
    } else {
        //2.传递扫描结果
        Intent resultIntent = new Intent();
        Bundle bundle = new Bundle();
        bundle.putString("result", resultString);
        bundle.putParcelable("bitmap", barcode);
        resultIntent.putExtras(bundle);
        this.setResult(RESULT_OK, resultIntent);
    }
    CaptureActivity.this.finish();
}

//3.收到回传的 结果
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    switch (requestCode) {
    case SCANNIN_GREQUEST_CODE:
        if (resultCode == RESULT_OK) {
            Bundle bundle = data.getExtras();
            //显示扫描到的内容
            tv_result.setText(bundle.getString("result"));
            //显示
            iv_qrcode.setImageBitmap((Bitmap) data.getParcelableExtra("bitmap"));
        }
        break;
    }
}

友盟

多渠道打包可以用友盟工具、ant、gradle

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Android干货

安卓开发_深入理解Handler消息传递机制

3006
来自专栏difcareer的技术笔记

Android架构分析【三】mvp-cleanClean Architecture代码分析总结

乍一看这张图,就像洋葱,一层包一层,其核心理念就是向内依赖。也就是说:外层依赖内层,内层不能依赖外层,层层向内依赖。越往内,越稳定。在这个核心理念下,定义...

862
来自专栏菩提树下的杨过

jQuery扩展以及gzip压缩测试

<!doctype html> <html> <head> <meta http-equiv="content-type" content="text/h...

2875
来自专栏Android 研究

Android Handler机制3之SystemClock类

官网位置在https://developer.android.com/reference/android/os/SystemClock.html

1812
来自专栏james大数据架构

AsyncTask和Handler对比

1 ) AsyncTask实现的原理,和适用的优缺点 AsyncTask,是android提供的轻量级的异步类,可以直接继承AsyncTask,在类中实现异步操...

2205
来自专栏SDNLAB

源码解读ODL的MAC地址学习(一)

1 简介 我们知道同一子网中主机之间互相传送信息需要用到MAC地址,而我们第一次发送信息的时候只有IP地址而没有MAC地址,所以我们就要进行MAC地址自学习。 ...

7956
来自专栏Android干货

安卓开发_浅谈AsyncTask

3107
来自专栏向治洪

android性能优化1

一、在使用Gallery控件时,如果载入的图片过多,过大,就很容易出现OutOfMemoryError异常,就是内存溢出。这是因为Android默认分配的内存只...

2216
来自专栏JackieZheng

探秘Tomcat——启动篇

tomcat作为一款web服务器本身很复杂,代码量也很大,但是模块化很强,最核心的模块还是连接器Connector和容器Container。具体请看下图: ? ...

4977
来自专栏雪胖纸的玩蛇日常

Uncaught SyntaxError: Unexpected token ' in JSON at position 1

1.3K3

扫码关注云+社区

领取腾讯云代金券