【移動應(yīng)用開發(fā)技術(shù)】Android如何實現(xiàn)炫酷輪播圖效果_第1頁
【移動應(yīng)用開發(fā)技術(shù)】Android如何實現(xiàn)炫酷輪播圖效果_第2頁
【移動應(yīng)用開發(fā)技術(shù)】Android如何實現(xiàn)炫酷輪播圖效果_第3頁
【移動應(yīng)用開發(fā)技術(shù)】Android如何實現(xiàn)炫酷輪播圖效果_第4頁
【移動應(yīng)用開發(fā)技術(shù)】Android如何實現(xiàn)炫酷輪播圖效果_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論