Android中xutils注释使用

先在build.gradle中依赖

 compile 'org.xutils:xutils:3.5.0'

他需要初始化所以为了解决频繁的初始化,我新建了一个

public class MyApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        x.Ext.init(this);
    }
}

在清单中添加name声明

 <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:name=".MyApplication"

然后再去Activity或fragment中使用
Activity中使用

package com.example.administrator.myapplication;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

import org.xutils.common.Callback;
import org.xutils.http.RequestParams;
import org.xutils.view.annotation.ContentView;
import org.xutils.view.annotation.Event;
import org.xutils.view.annotation.ViewInject;
import org.xutils.x;

@ContentView(R.layout.activity_main)//设置布局
public class MainActivity extends AppCompatActivity{
    @ViewInject(R.id.button)//相当于findViewByid
    Button bt1;

    @ViewInject(R.id.textView)
    TextView setText;

    Callback.Cancelable cancelable;//回掉

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
//        setContentView(R.layout.activity_main);
        //让Activity识别注解
        x.view().inject(this);
        bt1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Toast.makeText(MainActivity.this, "我喜欢你", Toast.LENGTH_SHORT).show();
                //get
                String url = "http://v.juhe.cn/toutiao/index";
                RequestParams params = new RequestParams(url);
                params.addQueryStringParameter("type","");
                params.addQueryStringParameter("key","2ca3a5b1cb6edf55250bff550ac34325");
                //NetWorkonMainThread
                cancelable = x.http().get(params ,new Callback.CommonCallback<String>(){
                    @Override
                    public void onSuccess(String result) {
                        Log.d("data",result);
                        Log.d("data","1");

                    }
                    @Override
                    public void onError(Throwable ex, boolean isOnCallback) {
                        cancelable.cancel();
                    }
                    @Override
                    public void onCancelled(CancelledException cex) {
                        Log.d("data","3");
                    }

                    @Override
                    public void onFinished() {
                        setText.setText("获取结束");
                        Log.d("data","2");
                    }
                });
            }


        });
    }
    //访问修饰符必须是私有的
    //绑定短按监听  type可以省略
//    @Event(type = View.OnClickListener.class,value = R.id.button2)
    @Event(value = R.id.button2)
    private void MyonClickListener(View v){
        Toast.makeText(this, "你看看我", Toast.LENGTH_SHORT).show();
    }
    //长按监听  type不可省略
    @Event(type = View.OnLongClickListener.class,value = R.id.button2)
    private boolean MyonLongClickListener(View v){
        bt1.setText("你看看我,张开眼");
        return true;
    }
}

fragment中使用

        @ContentView(R.layout.fragment_http)
        public class HttpFragment extends Fragment {
            @Nullable
            @Override
            public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup
                container, @Nullable Bundle savedInstanceState) {
                return x.view().inject(this, inflater, container);
            }

xutils网络请求x.http().post或者x.http().get

get方法

 RequestParams params = new RequestParams(url);
                cancelable = x.http().get(params ,new Callback.CommonCallback<String>(){
                    @Override
                    public void onSuccess(String result) {//成功的
                        setText.setText(result);
                        Log.d("data","1");

                    }
                    @Override
                    public void onError(Throwable ex, boolean isOnCallback) {
                        cancelable.cancel();
                    }
                    @Override
                    public void onCancelled(CancelledException cex) {
                        Log.d("data","3");当取消时
                    }

                    @Override
                    public void onFinished() {//完成的
//先成功后完成
                        Log.d("data","2");
                    }
                });

post

 String url1 = "http://apicloud.mob.com/v1/weather/query";
                RequestParams params1 = new RequestParams(url1);
                params1.addQueryStringParameter("key", "26b2b13b4b440");
                params1.addQueryStringParameter("city", "通州");
                params1.addQueryStringParameter("province", "北京");
                Callback.Cancelable cancelable1 = x.http().post(params1,
                        new Callback.CommonCallback<String>() {
                            @Override
                            public void onSuccess(String result) {
                                setText.setText(result);
                            }

                            @Override
                            public void onError(Throwable ex, boolean isOnCallback) {

                            }

                            @Override
                            public void onCancelled(CancelledException cex) {

                            }

                            @Override
                            public void onFinished() {

                            }
                        });

xutils图片x.image()

注意设置不了GIF

 String url2 = "http://p0.so.qhmsg.com/bdr/200_200_/t015576ba03bd0daf6f.jpg";
                RequestParams params2 = new RequestParams(url2);
                final File file = new File(
                        Environment.getExternalStorageDirectory() + "/a123.jpg");
//                file.mkdir();//创建文件夹
//                file.mkdirs();//创建多级文件夹
                params2.setSaveFilePath(file.getAbsolutePath());//设置下载文件时文件保存的路径和文件名
                params2.setAutoRename(true);//设置是否根据头信息自动命名文件
                Callback.Cancelable can = x.http().post(params2,
                        new Callback.ProgressCallback<File>() {
                            @Override
                            public void onSuccess(File result) {
                                //下载成功后读取文件
                                imageView.setImageBitmap(
                                        BitmapFactory.decodeFile(file.getAbsolutePath()));
                                Toast.makeText(MainActivity.this, "下载成功", Toast.LENGTH_SHORT).show();
                            }

                            @Override
                            public void onError(Throwable ex, boolean isOnCallback) {
                                Toast.makeText(MainActivity.this, ex.toString(), Toast.LENGTH_SHORT).show();
                            }

                            @Override
                            public void onCancelled(CancelledException cex) {

                            }

                            @Override
                            public void onFinished() {

                            }

                            @Override
                            public void onWaiting() {

                            }

                            @Override
                            public void onStarted() {
                                Toast.makeText(MainActivity.this, "开始下载", Toast.LENGTH_SHORT).show();

                            }

                            @Override
                            public void onLoading(long total, long current, boolean isDownloading) {
                                progressBar.setMax((int) total);
                                progressBar.setProgress((int) current);
                            }
                        });

2x.image().bind()方法有时候会把图片的大小放大显示不全等问题

 //自定义动画
                final AlphaAnimation alphaAnimation = new AlphaAnimation(0f,1.0f);
                alphaAnimation.setDuration(1500);
                alphaAnimation.setFillAfter(true);

                ImageOptions options = new ImageOptions.Builder()
//                        .setFadeIn(true)//设置加载图片的动画渐变效果
//                        .setCircular(true)//设置圆形
                        .setAnimation(alphaAnimation)
                        .setFailureDrawableId(R.mipmap.ic_launcher)//设置故障提图片
                        .setLoadingDrawableId(R.mipmap.ic_launcher_round)//设置加载图片
                        .setRadius(20)//设置半径
                        .setUseMemCache(false)//设置程序缓存
                        .build();
                x.image().bind(imageView,
                        "http://img3.duitang.com/uploads/item/201609/11/20160911132450_nfCxK.thumb.700_0.jpeg",
//                       "https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1533813535460&di=731953ed39ef9eb3073b0c0357e26f32&imgtype=0&src=http%3A%2F%2Fi1.mopimg.cn%2Fimg%2Fdzh%2F2015-01%2F468%2F2015012122374323.gif440.gif",
                        options
                , new Callback.CommonCallback<Drawable>() {
                            @Override
                            public void onSuccess(Drawable result) {
                                imageView.setImageDrawable(result);
                            }

                            @Override
                            public void onError(Throwable ex, boolean isOnCallback) {

                            }

                            @Override
                            public void onCancelled(CancelledException cex) {

                            }

                            @Override
                            public void onFinished() {

                            }
                        });

3,用x.image().loadDrawable加载图片

 Callback.Cancelable cancelable2 = x.image().loadDrawable(
                        "http://img3.duitang.com/uploads/item/201609/11/20160911132450_nfCxK.thumb.700_0.jpeg",
                        options, new Callback.CommonCallback<Drawable>() {
                            @Override
                            public void onSuccess(Drawable result) {

                                imageView.setImageDrawable(result);
                                imageView.startAnimation(alphaAnimation);
                            }

                            @Override
                            public void onError(Throwable ex, boolean isOnCallback) {

                            }

                            @Override
                            public void onCancelled(CancelledException cex) {

                            }

                            @Override
                            public void onFinished() {

                            }
                        }
                );

4,x.image().loadFile加载文件方式加载图片

  //注意用时看一下后缀名
                Callback.Cancelable cancelable3 = x.image().loadFile(
                        "https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1533814281311&di=6be8244223b0c242d60b561128c77b98&imgtype=0&src=http%3A%2F%2Fpic25.nipic.com%2F20121203%2F668573_115703380139_2.jpg",
                        options,
                        new Callback.CacheCallback<File>() {
                            @Override
                            public void onSuccess(File result) {
                                Log.e("tag", "onSuccess: "+Environment.getExternalStorageDirectory().getPath());
//                                可以把网络的图片下载到SDcard中
                                try {
                                    //把文件类型的数据转换成字节数据
                                    FileInputStream fi = new FileInputStream(result);
                                    ByteArrayOutputStream bs = new ByteArrayOutputStream();
                                    byte buffer[] = new byte[512];
                                    int length = -1;
                                    while(  (length = fi.read(buffer)) != -1  ){
                                        bs.write(buffer,0,length);
                                        bs.flush();
                                    }

                                    File file1 = new File(Environment.getExternalStorageDirectory()
                                            +"/my1710.jpg");
                                    FileOutputStream fs = new FileOutputStream(file1);
                                    fs.write(bs.toByteArray(),0,bs.toByteArray().length);
                                    fs.flush();

                                    fi.close();
                                    bs.close();
                                    fs.close();

                                } catch (Exception e) {
                                    e.printStackTrace();
                                }
                                imageView.setImageBitmap(BitmapFactory.decodeFile(result.getAbsolutePath()));
                                Toast.makeText(MainActivity.this, "onSuccess", Toast.LENGTH_SHORT).show();
                            }

                            @Override
                            public void onError(Throwable ex, boolean isOnCallback) {

                            }

                            @Override
                            public void onCancelled(CancelledException cex) {

                            }

                            @Override
                            public void onFinished() {

                            }

                            @Override
                            public boolean onCache(File result) {//读取缓存
                                Toast.makeText(MainActivity.this, "onCache", Toast.LENGTH_SHORT).show();
                                imageView.setImageBitmap(BitmapFactory.decodeFile(result.getAbsolutePath()));
                                return false;
                            }
                        }
                );
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,616评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,020评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,078评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,040评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,154评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,265评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,298评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,072评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,491评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,795评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,970评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,654评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,272评论 3 318
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,985评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,223评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,815评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,852评论 2 351

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,914评论 25 707
  • 王朔曾说过:初次见面无从识别时,我一般倾向相信女的,女的里倾向相信年轻女子,年轻女子里又倾向相信那些漂亮姑娘。漂亮...
    一只开不了口的猫Cat阅读 340评论 0 1
  • (观上图春景,以“一缕春风戏早霞”开头练习诗,我作如下:) 一缕春风戏早霞, 柳枝窈柔挽桃花。 清水镜湖双对影, ...
    蒙来客阅读 295评论 11 11
  • SDWebImage的原理以及使用流程这个类库是一个支持加载来自网络的远程图片,并且具有缓存管理`异步下载`同一个...
    WarmLikeYou阅读 334评论 0 1