下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
【移動應用開發(fā)技術】Android中如何使用retrofit上傳文件
本篇文章為大家展示了Android中如何使用retrofit上傳文件,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。1.AndroidMainfest.xml中加入權限
<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.網絡請求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>標簽代表一系列的幀動畫,可以在里面添加動畫效果
-->
<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>標簽代表一系列的幀動畫,可以在里面添加動畫效果
-->
<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,請求要替換頭像的接口的用戶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子線程聯網
.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());
}
});
//給上傳頭像的控件設置點擊事件
simple_drawee_view.setOnClickListener(new
View.OnClickListener()
{
@Override
public
void
on
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 電氣課程設計結論
- 籃球教練課程設計
- 電控課程設計報告
- 幼兒園大班游戲課程設計
- 打造小蠻腰課程設計
- 水利施工慕課課程設計
- 汽輪機裝配與調試技術考核試卷
- 登錄頁面課程設計
- 電熱梳子加熱速度考核試卷
- 碳素材料在藥物傳遞系統的研究考核試卷
- 建設工程環(huán)保專項方案
- 中小企業(yè)內部控制與風險管理(第二版)項目一:內部控制與風險管理基礎
- DB13T 5427-2021 水體底泥洗脫生態(tài)恢復工程技術指南
- 雙減工作教師責任書
- 聲藝 EPM8操作手冊
- 西北農林科技大學專業(yè)學位研究生課程案例庫建設項目申請書(MBA)
- 聚乙烯醇纖維zhanshi
- 外墻保溫、真石漆施工技術交底
- 演播室的藝術:現場導播切換技巧
- 盾構帶壓開倉施工方案
- 高壓開關柜試驗報告(完)
評論
0/150
提交評論