Android中xutils注釋使用

先在build.gradle中依賴

 compile 'org.xutils:xutils:3.5.0'

他需要初始化所以為了解決頻繁的初始化,我新建了一個(gè)

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)//設(shè)置布局
public class MainActivity extends AppCompatActivity{
    @ViewInject(R.id.button)//相當(dāng)于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識(shí)別注解
        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("獲取結(jié)束");
                        Log.d("data","2");
                    }
                });
            }


        });
    }
    //訪問(wèn)修飾符必須是私有的
    //綁定短按監(jiān)聽(tīng)  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();
    }
    //長(zhǎng)按監(jiān)聽(tīng)  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網(wǎng)絡(luò)請(qǐng)求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");當(dāng)取消時(shí)
                    }

                    @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()

注意設(shè)置不了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();//創(chuàng)建文件夾
//                file.mkdirs();//創(chuàng)建多級(jí)文件夾
                params2.setSaveFilePath(file.getAbsolutePath());//設(shè)置下載文件時(shí)文件保存的路徑和文件名
                params2.setAutoRename(true);//設(shè)置是否根據(jù)頭信息自動(dòng)命名文件
                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()方法有時(shí)候會(huì)把圖片的大小放大顯示不全等問(wèn)題

 //自定義動(dòng)畫
                final AlphaAnimation alphaAnimation = new AlphaAnimation(0f,1.0f);
                alphaAnimation.setDuration(1500);
                alphaAnimation.setFillAfter(true);

                ImageOptions options = new ImageOptions.Builder()
//                        .setFadeIn(true)//設(shè)置加載圖片的動(dòng)畫漸變效果
//                        .setCircular(true)//設(shè)置圓形
                        .setAnimation(alphaAnimation)
                        .setFailureDrawableId(R.mipmap.ic_launcher)//設(shè)置故障提圖片
                        .setLoadingDrawableId(R.mipmap.ic_launcher_round)//設(shè)置加載圖片
                        .setRadius(20)//設(shè)置半徑
                        .setUseMemCache(false)//設(shè)置程序緩存
                        .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加載文件方式加載圖片

  //注意用時(shí)看一下后綴名
                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());
//                                可以把網(wǎng)絡(luò)的圖片下載到SDcard中
                                try {
                                    //把文件類型的數(shù)據(jù)轉(zhuǎn)換成字節(jié)數(shù)據(jù)
                                    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;
                            }
                        }
                );
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末盟蚣,一起剝皮案震驚了整個(gè)濱河市屎开,隨后出現(xiàn)的幾起案子奄抽,更是在濱河造成了極大的恐慌,老刑警劉巖逞度,帶你破解...
    沈念sama閱讀 211,639評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件档泽,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡品抽,警方通過(guò)查閱死者的電腦和手機(jī)甜熔,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門腔稀,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人淡喜,你說(shuō)我怎么就攤上這事诵闭。” “怎么了瘟芝?”我有些...
    開封第一講書人閱讀 157,221評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵锌俱,是天一觀的道長(zhǎng)敌呈。 經(jīng)常有香客問(wèn)我,道長(zhǎng)吭练,這世上最難降的妖魔是什么褐鸥? 我笑而不...
    開封第一講書人閱讀 56,474評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮姊舵,結(jié)果婚禮上寓落,老公的妹妹穿的比我還像新娘。我一直安慰自己史飞,他們只是感情好仰税,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,570評(píng)論 6 386
  • 文/花漫 我一把揭開白布陨簇。 她就那樣靜靜地躺著,像睡著了一般己单。 火紅的嫁衣襯著肌膚如雪耙饰。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,816評(píng)論 1 290
  • 那天廷痘,我揣著相機(jī)與錄音牍疏,去河邊找鬼拨齐。 笑死瞻惋,一個(gè)胖子當(dāng)著我的面吹牛援岩,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播羽峰,決...
    沈念sama閱讀 38,957評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼梅屉,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了虐唠?” 一聲冷哼從身側(cè)響起惰聂,我...
    開封第一講書人閱讀 37,718評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎杆故,沒(méi)想到半個(gè)月后溉愁,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,176評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡罢缸,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,511評(píng)論 2 327
  • 正文 我和宋清朗相戀三年枫疆,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了息楔。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片扒披。...
    茶點(diǎn)故事閱讀 38,646評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡碟案,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出辆亏,到底是詐尸還是另有隱情鳖目,我是刑警寧澤,帶...
    沈念sama閱讀 34,322評(píng)論 4 330
  • 正文 年R本政府宣布彻磁,位于F島的核電站,受9級(jí)特大地震影響衷蜓,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜刻恭,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,934評(píng)論 3 313
  • 文/蒙蒙 一鳍贾、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧骑科,春花似錦构拳、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至漾稀,卻和暖如春建瘫,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背殷蛇。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工晾咪, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,358評(píng)論 2 360
  • 正文 我出身青樓泪勒,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親叼旋。 傳聞我的和親對(duì)象是個(gè)殘疾皇子沦辙,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,514評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,773評(píng)論 25 707
  • 王朔曾說(shuō)過(guò):初次見(jiàn)面無(wú)從識(shí)別時(shí)详民,我一般傾向相信女的陌兑,女的里傾向相信年輕女子,年輕女子里又傾向相信那些漂亮姑娘兔综。漂亮...
    一只開不了口的貓Cat閱讀 338評(píng)論 0 1
  • (觀上圖春景软驰,以“一縷春風(fēng)戲早霞”開頭練習(xí)詩(shī),我作如下:) 一縷春風(fēng)戲早霞锭亏, 柳枝窈柔挽桃花。 清水鏡湖雙對(duì)影呜象, ...
    蒙來(lái)客閱讀 294評(píng)論 11 11
  • SDWebImage的原理以及使用流程這個(gè)類庫(kù)是一個(gè)支持加載來(lái)自網(wǎng)絡(luò)的遠(yuǎn)程圖片恭陡,并且具有緩存管理`異步下載`同一個(gè)...
    WarmLikeYou閱讀 334評(píng)論 0 1