안 드 로 이 드 는 시 크 한 라운드 맵 효 과 를 실현 합 니 다.

12262 단어 Android윤파 도
라운드 맵 의 실현 에는 여러 가지 방식 이 있 습 니 다.예전 에 저 는 인터넷 에서 다른 사람 이 쓴 라운드 맵 을 봤 는데 모두 기 존의 규칙 을 고수 하 는 것 같 았 습 니 다.어떤 것 은 인터넷 사진 을 불 러 오지 못 할 수도 있 습 니 다.그래서 저 는 여기 서 윤방송 도 를 다시 써 서 앞으로 의 프로젝트 사용 에 편리 하도록 했 습 니 다.
아래 코드 에서 저도 volley 로 네트워크 요청 프레임 워 크 를 봉 하고 비동기 로 네트워크 그림 을 불 러 올 수 있 으 며 참고 할 수 있어 서 매우 실 용적 입 니 다.
효과 도:이것 은 그 중의 한 가지 효과 일 뿐이다.

밑 에 봉 인 된 저 는 아래 에서 일일이 보 여 드 리 겠 습 니 다.MainActivity 에서 이 라운드 컨트롤 을 어떻게 바 꾸 는 지 먼저 보 겠 습 니 다.

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

/**
 *             ,            ,    。         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) {
//   /**                     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();

 /**
 *     
 */
 protected abstract void initListener();

 /**
 *      
 */
 protected abstract void initData();

 /**
 *   
 */
 public void showShortToast(String toast) {
 Toast.makeText(this, toast, Toast.LENGTH_SHORT).show();
 }
}
그러면 다음은 제 가 볼 리 요청 네트워크 데이터 프레임 워 크 를 봉 하고 봉 인 된 후에 MainActivity 에 호출 하 겠 습 니 다.
우선,Volley Request 클래스 는 다음 과 같 습 니 다.

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:    */
 public static VolleyRequest newInstance() {
 if (mRequestQueue == null) {
  throw new NullPointerException("Call buildRequestQueue method first.");
 }
 //...
 return new VolleyRequest();
 }

 /** (WangShuJie)     usage:   */
 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","  ====="+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  */
 public static Map<String,String> getAdnertisment(String city,String token){
 Map<String,String> mMap=new HashMap<>();
 mMap.put("city_name",city);//  key         key,       key          。
 mMap.put("token",token);
 return mMap;
 }
}
봉 인 된 후 볼 리 요청 을 대기 열 에 추가 합 니 다(초기 화):

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 onCreate() {
 super.onCreate();
 mContext = getApplicationContext();
 VolleyRequest.buildRequestQueue(this);
 initImageLoader();
 }

 private void initImageLoader() {
 /**
  * ImageLoader        
  */
 ImageLoaderConfiguration configuration = new ImageLoaderConfiguration.Builder(this)
  .memoryCache(new LruMemoryCache(2 * 1024 * 1024))
  .diskCacheFileCount(100)
  .memoryCacheSize(2 * 1024 * 1024) //       
  .diskCacheSize(50 * 1024 * 1024) //         
  .threadPoolSize(4) //           
  .build();
 //      this
// ImageLoader.getInstance().init(new ImageLoaderConfiguration.Builder(this).build());
 ImageLoader.getInstance().init(configuration);
// ImageLoaderConfiguration aDefault = ImageLoaderConfiguration.createDefault(this);

 }
}
여기까지 네트워크 요청 프레임 워 크 는 봉인 되 었 습 니 다.다음은 라운드 맵 의 실현 입 니 다.코드 파일 이 비교적 많 기 때문에 저 는 일일이 열거 하지 않 겠 습 니 다.필요 하 시 면 저 에 게 전체 코드 를 달라 고 하 셔 도 됩 니 다.

주의 점:
1.그림 설명 글꼴 자원 파일 가 져 오기
2.네트워크 요청 프레임 워 크 초기 화
다운로드
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기