




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
【移動應(yīng)用開發(fā)技術(shù)】Android如何實現(xiàn)炫酷輪播圖效果
這篇文章將為大家詳細(xì)講解有關(guān)Android如何實現(xiàn)炫酷輪播圖效果,在下覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。輪播圖的實現(xiàn)有很多種方式,早先我在網(wǎng)上看了下別人寫的輪播圖,感覺都比較的墨守成規(guī),有的還有可能加載不了網(wǎng)絡(luò)圖片。所以我在這里自己重新寫了下輪播圖,方便日后的項目使用.效果圖:這只是其中的一種效果底層封裝的我在下面會一一展示,先看下在MainActivity中怎樣調(diào)取這個輪播控件package
com.wujie.advertisment.activity;
import
android.view.View;
import
com.wujie.advertisment.R;
import
com.wujie.advertisment.flashview.EffectConstants;
import
com.wujie.advertisment.flashview.FlashView;
import
java.util.ArrayList;
public
class
MainActivity
extends
BaseActivity
{
private
FlashView
flashView;
private
ArrayList<String>
imageUrls=new
ArrayList<String>();
@Override
protected
void
initView()
{
setContentView(R.layout.activity_main);
flashView=(FlashView)findViewById(R.id.flash_view);
}
@Override
protected
void
initListener()
{
}
@Override
protected
void
initData()
{
/**
*
獲取接口返回的輪播圖地址,獲取的部分我已經(jīng)注釋掉了,可以使用。我在這里就直接弄了4張圖片
*/
imageUrls.add("1303680113,133301350&fm=21&gp=0.jpg");
imageUrls.add("1350614941,725003865&fm=21&gp=0.jpg");
imageUrls.add("3293842903,1040789920&fm=21&gp=0.jpg");
imageUrls.add(",1368131788&fm=21&gp=0.jpg");
flashView.setImageUris(imageUrls);
/**
(wujie)增加代碼
usage:需要什么類型falshView直接去找這個類就行在flashView框架中,同時修改View中的flashView注釋的那塊*/
flashView.setEffect(EffectConstants.CUBE_EFFECT);
//
VolleyRequest.newInstance(IpAddressConstants.getAdnertisment("","")).newGsonRequest2(Request.Method.POST,IpAddressConstants.ADVERTISMENT_URL,
Advertisment.class,
//
new
Response.Listener<Advertisment>()
{
//
@Override
//
public
void
onResponse(Advertisment
dvertisment)
{
//
/**在此處將服務(wù)器返回的輪播圖地址一個一個放入imageUrls中*/
//
flashView.setImageUris(imageUrls);
//
/**
(wujie)增加代碼
usage:需要什么類型falshView直接去找這個類就行在flashView框架中,同時修改View中的flashView注釋的那塊*/
//
flashView.setEffect(EffectConstants.CUBE_EFFECT);
//
}
//
},
new
Response.ErrorListener()
{
//
@Override
//
public
void
onErrorResponse(VolleyError
volleyError)
{
//
//
}
//
});
}
@Override
public
void
onClick(View
view)
{
}
}MainActivity繼承的BaseActivity:package
com.wujie.advertisment.activity;
import
android.os.Bundle;
import
android.support.annotation.Nullable;
import
android.support.v7.app.AppCompatActivity;
import
android.view.View;
import
android.view.Window;
import
android.widget.Toast;
/**
*
<pre>
*
Company:
*
Author
:
wujie
*
Time
:
2016/11
*
Usage
:
所有自定義activity的父類
*
desc
:
*
other
:
*
</pre>
*/
public
abstract
class
BaseActivity
extends
AppCompatActivity
implements
View.OnClickListener{
@Override
protected
void
onCreate(@Nullable
Bundle
savedInstanceState)
{
super.onCreate(savedInstanceState);
supportRequestWindowFeature(Window.FEATURE_NO_TITLE);
initView();
initData();
initListener();
}
/**
*
初始化控件
*/
protected
abstract
void
initView();
/**
*
設(shè)置監(jiān)聽
*/
protected
abstract
void
initListener();
/**
*
初始化數(shù)據(jù)
*/
protected
abstract
void
initData();
/**
*
吐司
*/
public
void
showShortToast(String
toast)
{
Toast.makeText(this,
toast,
Toast.LENGTH_SHORT).show();
}
}那么下面我就來封裝Volley請求網(wǎng)絡(luò)數(shù)據(jù)框架,封裝好了之后,調(diào)用在MainActivity中有體現(xiàn)。首先,VolleyRequest類如下:package
com.wujie.advertisment.volley;
import
android.content.Context;
import
android.util.Log;
import
com.android.volley.RequestQueue;
import
com.android.volley.Response;
import
com.android.volley.toolbox.Volley;
import
java.util.HashMap;
import
java.util.Map;
/**
*
請求類
*/
public
class
VolleyRequest
{
private
static
RequestQueue
mRequestQueue;
private
Map<String,String>
mMap=new
HashMap<>();
private
VolleyRequest()
{
}
private
VolleyRequest(Map<String,String>
mMap)
{
this.mMap=mMap;
}
/**
*
@param
context
ApplicationContext
*/
public
static
void
buildRequestQueue(Context
context)
{
mRequestQueue
=
Volley.newRequestQueue(context);
//...
do
something
}
/**
(WangShuJie)增加代碼
usage:非帶參數(shù)*/
public
static
VolleyRequest
newInstance()
{
if
(mRequestQueue
==
null)
{
throw
new
NullPointerException("Call
buildRequestQueue
method
first.");
}
//...
return
new
VolleyRequest();
}
/**
(WangShuJie)增加代碼
usage:帶參數(shù)*/
public
static
VolleyRequest
newInstance(Map<String,String>
mMap)
{
if
(mRequestQueue
==
null)
{
throw
new
NullPointerException("Call
buildRequestQueue
method
first.");
}
//...
Log.i("mtag","newInstance==========="+mMap.get("goodsname"));
return
new
VolleyRequest(mMap);
}
/**
*
@param
url
*
@param
clazz
*
@param
listener
*
@param
errorListener
*帶參
*
@return
*/
public
<T>
GsonRequest<T>
newGsonRequest2(int
method,
String
url,
Class<T>
clazz,
Response.Listener<T>
listener,
Response.ErrorListener
errorListener)
{
GsonRequest<T>
request
=
new
GsonRequest(method,url,
clazz,
listener,
errorListener){
@Override
protected
Map<String,
String>
getParams()
{
Log.i("mtag","getParams==========="+mMap.get("goodsname"));
return
mMap;
}
};
mRequestQueue.add(request);
return
request;
}
/**
(wujie)增加代碼
usage:不帶參的*/
public
<T>
GsonRequest<T>
newGsonRequest(String
url,
Class<T>
clazz,
Response.Listener<T>
listener,
Response.ErrorListener
errorListener)
{
GsonRequest<T>
request
=
new
GsonRequest(url,
clazz,
listener,
errorListener);
mRequestQueue.add(request);
return
request;
}
}GsonRequest類:package
com.wujie.advertisment.volley;
import
android.util.Log;
import
com.android.volley.NetworkResponse;
import
com.android.volley.ParseError;
import
com.android.volley.Request;
import
com.android.volley.Response;
import
com.android.volley.Response.ErrorListener;
import
com.android.volley.Response.Listener;
import
com.android.volley.toolbox.HttpHeaderParser;
import
com.google.gson.Gson;
import
com.google.gson.reflect.TypeToken;
import
java.io.UnsupportedEncodingException;
public
class
GsonRequest<T>
extends
Request<T>
{
private
final
Listener<T>
mListener;
private
static
Gson
mGson
=
new
Gson();
private
Class<T>
mClass;
private
TypeToken<T>
mTypeToken;
public
GsonRequest(int
method,
String
url,
Class<T>
clazz,
Listener<T>
listener,
ErrorListener
errorListener)
{
super(method,
url,
errorListener);
mClass
=
clazz;
mListener
=
listener;
}
public
GsonRequest(int
method,
String
url,
TypeToken<T>
typeToken,
Listener<T>
listener,
ErrorListener
errorListener)
{
super(method,
url,
errorListener);
mTypeToken
=
typeToken;
mListener
=
listener;
}
public
GsonRequest(String
url,
Class<T>
clazz,
Listener<T>
listener,
ErrorListener
errorListener)
{
this(Method.GET,
url,
clazz,
listener,
errorListener);
}
public
GsonRequest(String
url,
TypeToken<T>
typeToken,
Listener<T>
listener,
ErrorListener
errorListener)
{
super(Method.GET,
url,
errorListener);
mTypeToken
=
typeToken;
mListener
=
listener;
}
@Override
protected
Response<T>
parseNetworkResponse(NetworkResponse
response)
{
try
{
String
jsonString
=
new
String(response.data,"UTF-8");
Log.i("mtag","響應(yīng)====="+response.data);
if
(mTypeToken
==
null)
return
Response.success(mGson.fromJson(jsonString,
mClass),
HttpHeaderParser.parseCacheHeaders(response));
else
return
(Response<T>)
Response.success(mGson.fromJson(jsonString,
mTypeToken.getType()),
HttpHeaderParser.parseCacheHeaders(response));
}
catch
(UnsupportedEncodingException
e)
{
return
Response.error(new
ParseError(e));
}
}
@Override
protected
void
deliverResponse(T
response)
{
mListener.onResponse(response);
}
}管理接口的類:package
com.wujie.advertisment.volley;
import
java.util.HashMap;
import
java.util.Map;
/**
*
author:wujie
2016/11
*
usage:
*/
public
class
IpAddressConstants
{
public
static
String
MYIP="http://xxxxx:8080/";
/**
======輪播圖======
*/
public
static
final
String
ADVERTISMENT_URL=MYIP+"AppInterface/advert/indexAdvert";
/**
(wujie)增加代碼
usage:獲取輪播圖需要的Map數(shù)據(jù)*/
public
static
Map<String,String>
getAdnertisment(String
city,String
token){
Map<String,String>
mMap=new
HashMap<>();
mMap.put("city_name",city);//這個key是你要上傳參數(shù)的的key,服務(wù)器通過這個key來獲取客戶端穿的參數(shù)。
mMap.put("token",token);
return
mMap;
}
}封裝好后,我們要將Volley請求加入到隊列中(初始化):package
com.wujie.advertisment.application;
import
android.app.Application;
import
android.content.Context;
import
com.nostra13.universalimageloader.cache.memory.impl.LruMemoryCache;
import
com.nostra13.universalimageloader.core.ImageLoader;
import
com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
import
com.wujie.advertisment.volley.VolleyRequest;
/**
*
<pre>
*
Company:
xxx
*
Author
:
wujie
*
Time
:
2016/11
*
Usage
:
*
desc
:
*
other
:
*
</pre>
*/
public
class
MyApplication
extends
Application
{
public
static
Context
mContext;
@Override
public
void
on
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 高新技術(shù)產(chǎn)業(yè)在減少環(huán)境污染中的關(guān)鍵作用分析報告
- 高效行政管理與企業(yè)文化塑造的協(xié)同發(fā)展
- 高效財務(wù)規(guī)劃助力企業(yè)發(fā)展
- 購物中心的品牌價值與其服務(wù)質(zhì)量的關(guān)系
- 高中語文情感美文當(dāng)你寂寞時我會陪伴你
- 購物車維護與保養(yǎng)知識
- 高中語文情感美文繼續(xù)戀愛
- 跨國公司合資中的風(fēng)險評估與應(yīng)對
- 高科技在葡萄酒標(biāo)簽制作中的應(yīng)用
- 超市存儲貨物擺放標(biāo)準(zhǔn)及操作規(guī)程
- 《民航服務(wù)與溝通學(xué)》課件-第1講 服務(wù)與民航服務(wù)的概念
- 大型養(yǎng)路機械司機(打磨車)高級工技能鑒定考試題庫(含答案)
- 車輛使用不過戶免責(zé)協(xié)議書范文范本
- 蟾蜍毒抗病毒藥物篩選
- DB11T 2033-2022 餐廚垃圾源頭減量操作要求
- 1.2 歌曲 《春天來了》 課件(11張)
- 【人教版】pep六年級英語下全冊教案(表格版)
- 護理培訓(xùn)師競聘
- 北師大版小學(xué)數(shù)學(xué)五年級下冊同步課時練習(xí)試題含答案(全冊)
- 4《我們的公共生活》第一課時 教學(xué)設(shè)計-2023-2024學(xué)年道德與法治五年級下冊統(tǒng)編版
- 2023-2024學(xué)年粵教版(2019)高中信息技術(shù)必修一《數(shù)據(jù)與計算》第一章第一節(jié)《數(shù)據(jù)及其特征》教案
評論
0/150
提交評論