下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
【移動(dòng)應(yīng)用開(kāi)發(fā)技術(shù)】Android中如何使用retrofit上傳文件
本篇文章為大家展示了Android中如何使用retrofit上傳文件,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過(guò)這篇文章的詳細(xì)介紹希望你能有所收獲。1.AndroidMainfest.xml中加入權(quán)限
<uses-permission
android:name="android.permission.INTERNET"/>
<uses-permission
android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission
android:name="android.permission.CAMERA"/>
<uses-permission
android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>添加依賴
//fresco
compile
'com.facebook.fresco:fresco:+'
//支持gif
compile
'com.facebook.fresco:animated-gif:+'
compile
'com.squareup.okhttp3:okhttp:3.9.1'
compile
'com.google.code.gson:gson:2.8.1'
//retrofit
compile
'com.squareup.retrofit2:retrofit:+'
compile
'com.squareup.retrofit2:converter-gson:+'
//Rxjava2
compile
'io.reactivex.rxjava2:rxjava:+'
compile
'io.reactivex.rxjava2:rxandroid:+'
//讓retrofit支持Rxjava2
compile
'com.squareup.retrofit2:adapter-rxjava2:+'
compile
'com.squareup.okhttp3:logging-interceptor:3.9.1'1.網(wǎng)絡(luò)請(qǐng)求public
class
RetrofitUtils
{
//自定義路徑
public
static
final
String
BASE_URL
="05/";
private
final
Retrofit
mRetrofit;
public
static
class
SINGLE_HOLDER{
public
static
final
RetiofitUtils
INSTANCE
=
new
RetiofitUtils(BASE_URL);
}
public
static
RetrofitUtils
getInstance(){
return
SINGLE_HOLDER.INSTANCE;
}
r
private
RetrofitUtils(String
baseUrl){
mRetrofit
=
buildRetrofit();
}
//
private
OkHttpClient
buildOkHttpClient(){
HttpLoggingInterceptor
logging
=
new
HttpLoggingInterceptor();
logging.setLevel(HttpLoggingInterceptor.Level.BODY);
return
new
OkHttpClient.Builder()
.connectTimeout(10000,
TimeUnit.MILLISECONDS)
.addInterceptor(new
Intercept())//攔截器
.addInterceptor(logging)
.build();
}
//創(chuàng)建retrofit
private
Retrofit
buildRetrofit(){
return
new
Retrofit.Builder()
.client(buildOkHttpClient())
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.build();
}
//泛型類
public
<T>
T
create(Class<T>
tClass){
return
mRetrofit.create(tClass);
}
}攔截器:/article/133257.htm路徑接口public
interface
RetiofitVpi
{
//查找用戶信息
@GET("user/getUserInfo")
Observable<UserBean>
userBean(@Query("uid")
String
uid);
//上傳文件
@Multipart
@POST("file/upload")
Observable<FileBean>
uploadFile(@Query("uid")
String
uid,
@Part("file\";
filename=\"avatar.jpg")
RequestBody
file);
}anim文件夾下的文件<!--android<set>標(biāo)簽代表一系列的幀動(dòng)畫(huà),可以在里面添加動(dòng)畫(huà)效果
-->
<set
xmlns:android="/apk/res/android"
>
<translate
android:duration="2000"
android:fromYDelta="100%p"
android:toYDelta="0"
/>
<alpha
android:duration="2000"
android:fromAlpha="0.0"
android:toAlpha="1.0"
/>
</set><!--android<set>標(biāo)簽代表一系列的幀動(dòng)畫(huà),可以在里面添加動(dòng)畫(huà)效果
-->
<set
xmlns:android="/apk/res/android"
>
<translate
android:duration="2000"
android:fromYDelta="100%p"
android:toYDelta="0"
/>
<alpha
android:duration="2000"
android:fromAlpha="0.0"
android:toAlpha="1.0"
/>
</set>布局<com.facebook.drawee.view.SimpleDraweeView
android:layout_centerInParent="true"
android:id="@+id/simple_drawee_view"
android:layout_width="300dp"
android:layout_height="300dp"
fresco:failureImage="@drawable/icon_failure"
fresco:progressBarImage="@drawable/icon_placeholder"
fresco:placeholderImage="@drawable/icon"
fresco:progressBarAutoRotateInterval="1000"
fresco:retryImageScaleType="centerInside"
fresco:roundAsCircle="true"
tools:layout_editor_absoluteY="41dp"
tools:layout_editor_absoluteX="55dp"
/>mainActiviy,請(qǐng)求要替換頭像的接口的用戶uidpublic
class
MainActivity
extends
AppCompatActivity
{
private
SimpleDraweeView
simple_drawee_view;
private
PopupWindow
window;
private
String
path;
private
Uri
uri;
@Override
protected
void
onCreate(Bundle
savedInstanceState)
{
super.onCreate(savedInstanceState);
//初始化
Fresco.initialize(this);
setContentView(R.layout.activity_main);
//獲取到頭像的布局
simple_drawee_view
=
(SimpleDraweeView)
findViewById(R.id.simple_drawee_view);
path
=
Environment.getExternalStorageDirectory()
+
"/head.jpg";
//獲取uid
Observable<UserBean>
userInfo
=
userBean("3600");
userInfo
//需要在io子線程聯(lián)網(wǎng)
.subscribeOn(Schedulers.io())
//需要在主線程更新UI
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new
Consumer<UserBean>()
{
@Override
public
void
accept(UserBean
nicknameBean)
throws
Exception
{
UserBean.DataBean
data
=
nicknameBean.getData();
uri
=
Uri.parse(data.getIcon());
simple_drawee_view.setImageURI(uri);
}
},
new
Consumer<Throwable>()
{
@Override
public
void
accept(Throwable
throwable)
throws
Exception
{
Log.e("MainActivity",throwable.toString());
}
});
//給上傳頭像的控件設(shè)置點(diǎn)擊事件
simple_drawee_view.setOnClickListener(new
View.OnClickListener()
{
@Override
public
void
on
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024模特獨(dú)家拍攝合同保密協(xié)議及形象權(quán)授權(quán)2篇
- 《癌癥的分子診斷》課件
- 2024廣告制作與發(fā)布項(xiàng)目承包協(xié)議
- 2024政基礎(chǔ)設(shè)施工程勞務(wù)分包合同施工安全管理與應(yīng)急預(yù)案3篇
- 家用電燈知識(shí)培訓(xùn)課件
- 2025年度情侶分手心理輔導(dǎo)合同3篇
- 天然氣保險(xiǎn)知識(shí)培訓(xùn)課件
- 中國(guó)青年政治學(xué)院《信息可視化設(shè)計(jì)》2023-2024學(xué)年第一學(xué)期期末試卷
- 浙江中醫(yī)藥大學(xué)濱江學(xué)院《項(xiàng)目投資與融資》2023-2024學(xué)年第一學(xué)期期末試卷
- 美妝陳列知識(shí)培訓(xùn)課件
- 紅薯采購(gòu)合同模板
- 影視后期制作團(tuán)隊(duì)薪酬激勵(lì)方案
- 污水管網(wǎng)技術(shù)標(biāo)
- 2023年河南省公務(wù)員錄用考試《行測(cè)》真題及答案解析
- 《輸液港的護(hù)理》課件
- 新修訂反洗錢法律知識(shí)培訓(xùn)課件
- 精彩的儲(chǔ)運(yùn)部年終總結(jié)
- 山西省太原市重點(diǎn)中學(xué)2025屆物理高一第一學(xué)期期末統(tǒng)考試題含解析
- Python開(kāi)發(fā)工程師招聘筆試題及解答(某大型國(guó)企)
- 2024年農(nóng)民職業(yè)農(nóng)業(yè)素質(zhì)技能考試題庫(kù)(附含答案)
- 妊娠期高血糖診治指南
評(píng)論
0/150
提交評(píng)論