图片伸缩跳转到地图数据展示

activity_kao

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingLeft="5dp"
    android:paddingTop="5dp"
    tools:context="com.bwie.test.app_demo.KaoActivity">
    <ImageView
        android:id="@+id/imageView_b"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:paddingLeft="5dp"
        android:paddingTop="5dp"
        android:src="@drawable/main_menu_button"/>

    <ImageView
        android:id="@+id/imageView_a"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:paddingLeft="5dp"
        android:paddingTop="5dp"
        android:src="@drawable/menu_icn_plus"/>

    <ImageView
        android:id="@+id/imageView_c"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:paddingLeft="5dp"
        android:paddingTop="5dp"
        android:src="@drawable/menu_music"/>

    <ImageView
        android:id="@+id/imageView_d"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:paddingLeft="5dp"
        android:paddingTop="5dp"
        android:src="@drawable/menu_place"/>

    <ImageView
        android:id="@+id/imageView_e"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:paddingLeft="5dp"
        android:paddingTop="5dp"
        android:src="@drawable/menu_sleep"/>

    <ImageView
        android:id="@+id/imageView_f"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:paddingTop="1dp"
        android:src="@drawable/menu_thought"/>

    <ImageView
        android:id="@+id/imageView_g"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:paddingLeft="22dp"
        android:paddingTop="22dp"
        android:src="@drawable/menu_with"/>

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="100dp"
        android:text="跳转"
        android:onClick="tiaozhuan"/>

</FrameLayout>

activity_gao

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.bwie.test.app_demo.GaoActivity">
    <com.amap.api.maps.MapView
        android:id="@+id/map"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    </com.amap.api.maps.MapView>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Marker"
            android:onClick="Marker"/>
        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="跳转"
            android:onClick="tiao"/>
    </LinearLayout>

</RelativeLayout>

activity_shu

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.bwie.test.app_demo.ShuActivity">
    <android.support.v7.widget.RecyclerView
        android:id="@+id/recycler_View"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    </android.support.v7.widget.RecyclerView>

</LinearLayout>

activity_web

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.bwie.test.app_demo.WebActivity">
    <WebView
        android:id="@+id/web_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    </WebView>

</LinearLayout>

item_layout

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal">
    <ImageView
        android:id="@+id/image_item"
        android:layout_width="100dp"
        android:layout_height="100dp" />
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
        <TextView
            android:id="@+id/title_item"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />

        <TextView
            android:id="@+id/time_item"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    </LinearLayout>

</LinearLayout>

KaoActivity

扫描二维码关注公众号,回复: 809118 查看本文章

import android.animation.AnimatorSet;
import android.animation.ObjectAnimator;
import android.animation.PropertyValuesHolder;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.animation.BounceInterpolator;
import android.widget.ImageView;
import android.widget.Toast;

import java.util.ArrayList;
import java.util.List;

public class KaoActivity extends AppCompatActivity implements View.OnClickListener{
    private  int[] res={R.id.imageView_a,R.id.imageView_b,R.id.imageView_c,
            R.id.imageView_d,R.id.imageView_e,R.id.imageView_f,R.id.imageView_g};
    private List<ImageView> imageViewList = new ArrayList<ImageView>();
    private Boolean flag = false;
    private PropertyValuesHolder p1,p2;

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.imageView_g:
                if(!flag)
                    startAnimation();
                else
                    closeAnimation();
                break;
            default:
                Toast.makeText(KaoActivity.this, " " + v.getId(), Toast.LENGTH_SHORT).show();
                break;
        }
    }

    private void closeAnimation() {
        ObjectAnimator.ofFloat(imageViewList.get(6),"rotation",20f,360f).setDuration(1000).start();
        for (int i=0;i<res.length-2;i++) {
            ObjectAnimator animator = ObjectAnimator.ofFloat(imageViewList.get(i),"translationY",i*60f,0f);
            animator.setDuration(1000);
            animator.setInterpolator(new BounceInterpolator());
            animator.setStartDelay(i*300);
            animator.start();
        }
        flag = false;
    }

    /*
    开始动画
     */
    private void startAnimation() {
        ObjectAnimator.ofFloat(imageViewList.get(6),"rotation",20f,360f).setDuration(1000).start();
        for (int i=0;i<res.length-2;i++) {
            ObjectAnimator animator = ObjectAnimator.ofFloat(imageViewList.get(i),"translationY",0f,i*60f);
            animator.setDuration(1000);
            animator.setInterpolator(new BounceInterpolator());
            animator.setStartDelay(i*300);
            animator.start();
        }
        flag = true;
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_kao);
        //隐藏原有标题
        getSupportActionBar().hide();
        //查找控件
        for(int i=0;i<res.length;i++) {
            ImageView imageView = (ImageView)findViewById(res[i]);
            imageView.setOnClickListener(this);
            imageViewList.add(imageView);
        }
    }

    public void tiaozhuan(View view) {
        Intent intent = new Intent(KaoActivity.this, GaoActivity.class);
        startActivity(intent);
    }
}

GaoActivity

import android.content.Intent;
import android.os.Bundle;
import android.os.PersistableBundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.View;
import android.widget.Toast;

import com.amap.api.location.AMapLocation;
import com.amap.api.location.AMapLocationClient;
import com.amap.api.location.AMapLocationClientOption;
import com.amap.api.location.AMapLocationListener;
import com.amap.api.maps.AMap;
import com.amap.api.maps.LocationSource;
import com.amap.api.maps.MapView;
import com.amap.api.maps.model.MyLocationStyle;

public class GaoActivity extends AppCompatActivity implements LocationSource,AMapLocationListener{
    private MapView mMapView ;
    OnLocationChangedListener mListener;
    AMapLocationClient mlocationClient;
    AMapLocationClientOption mLocationOption;
    private AMapLocationClient mLocationClient;
    private StringBuilder stringBuilder;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_gao);
        //隐藏原有标题
        getSupportActionBar().hide();

        mMapView = (MapView) findViewById(R.id.map);
        //在activity执行onCreate时执行mMapView.onCreate(savedInstanceState),创建地图
        mMapView.onCreate(savedInstanceState);
        AMap aMap = null;
        if (aMap == null) {
            aMap = mMapView.getMap();
        }
        aMap.setLocationSource(this);
        aMap.setMyLocationEnabled(true);
        aMap.setMyLocationType(AMap.LOCATION_TYPE_LOCATE);
        MyLocationStyle myLocationStyle;
        myLocationStyle = new MyLocationStyle();
        myLocationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_LOCATION_ROTATE);
        myLocationStyle.interval(2000);
        aMap.setMyLocationStyle(myLocationStyle);
        myLocationStyle.myLocationType(MyLocationStyle.LOCATION_TYPE_LOCATION_ROTATE);
        aMap.setMyLocationEnabled(true);
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        mMapView.onDestroy();
        if(null != mlocationClient){
            mlocationClient.onDestroy();
        }
    }

    @Override
    protected void onResume() {
        super.onResume();
        mMapView.onResume();
    }

    @Override
    protected void onPause() {
        super.onPause();
        mMapView.onPause();
    }

    @Override
    protected void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        mMapView.onSaveInstanceState(outState);
    }

    public void Marker(View view) {
        mLocationClient = new AMapLocationClient(this);
        mLocationClient.setLocationListener(this);
        AMapLocationClientOption mLocationOption = new AMapLocationClientOption();

        mLocationOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy);
        mLocationOption.setOnceLocation(true);
        mLocationOption.setOnceLocationLatest(true);
        mLocationClient.setLocationOption(mLocationOption);
        Toast.makeText(this, "我的地址是:"+ stringBuilder.toString(), Toast.LENGTH_SHORT).show();
    }

    //跳转
    public void tiao(View view) {
        Intent intent = new Intent(GaoActivity.this, ShuActivity.class);
        startActivity(intent);
    }

    @Override
    public void activate(OnLocationChangedListener onLocationChangedListener) {
        mListener = onLocationChangedListener;
        if (mlocationClient == null) {
            //初始化定位
            mlocationClient = new AMapLocationClient(this);
            //初始化定位参数
            mLocationOption = new AMapLocationClientOption();
            //设置定位回调监听
            mlocationClient.setLocationListener(this);
            //设置为高精度定位模式
            mLocationOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy);
            //设置定位参数
            mlocationClient.setLocationOption(mLocationOption);
            mlocationClient.startLocation();
        }
    }

    @Override
    public void deactivate() {
        mListener = null;
        if (mlocationClient != null) {
            mlocationClient.stopLocation();
            mlocationClient.onDestroy();
        }
        mlocationClient = null;
    }

    @Override
    public void onLocationChanged(AMapLocation aMapLocation) {
        if (mListener != null&&aMapLocation != null) {
            if (aMapLocation != null
                    &&aMapLocation.getErrorCode() == 0) {
                mListener.onLocationChanged(aMapLocation);// 显示系统小蓝点
            } else {
                String errText = "定位失败," + aMapLocation.getErrorCode()+ ": " 
                                  + aMapLocation.getErrorInfo();
                Log.e("AmapErr",errText);
            }
        }
        stringBuilder = new StringBuilder();
        //stringBuilder.append("经纬度:"+amapLocation.getLatitude()+"--"+amapLocation.getLongitude());
        // stringBuilder.append("地址:"+amapLocation.getAddress()+"--");
        // stringBuilder.append("地址:"+amapLocation.getCountry()+"--");
        // stringBuilder.append("地址:"+amapLocation.getProvince()+"--");
        stringBuilder.append(""+aMapLocation.getCity()+"--");
        stringBuilder.append(""+aMapLocation.getDistrict()+"--");
        stringBuilder.append(""+aMapLocation.getStreet()+"--");
        stringBuilder.append(""+aMapLocation.getStreetNum()+"");

        //itemMap.setText(stringBuilder.toString());
    }
}

ShuActivity

import android.content.Intent;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.Toolbar;
import android.view.View;

import com.bwie.test.adapter.MyAdapter;
import com.bwie.test.bean.GoodsBean;
import com.bwie.test.presenter.GoodsPresenter;
import com.bwie.test.util.inter.OnItemClickListener;
import com.bwie.test.view.MainView;

import java.util.List;

public class ShuActivity extends AppCompatActivity implements MainView{
    private RecyclerView recycler_view;
    private GoodsPresenter goodsPresenter;
    private String GoodsUrl = "http://api.tianapi.com/startup/?
                              key=71e58b5b2f930eaf1f937407acde08fe&num=10";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_shu);
        //隐藏由于标题
        getSupportActionBar().hide();
        //查找控件
        recycler_view = findViewById(R.id.recycler_View);
        goodsPresenter = new GoodsPresenter(this);
        goodsPresenter.getData(GoodsUrl);
    }

    @Override
    public void onSuccess(final GoodsBean goodsBean) {
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                final List<GoodsBean.NewslistBean> list = goodsBean.getNewslist();
                recycler_view.setLayoutManager(new LinearLayoutManager(ShuActivity.this));
                MyAdapter myAdapter = new MyAdapter(ShuActivity.this,list);
                recycler_view.setAdapter(myAdapter);
                myAdapter.setOnItemClickListener(new OnItemClickListener() {
                    @Override
                    public void onItemClick(int position) {
                        Intent intent = new Intent(ShuActivity.this, WebActivity.class);
                        intent.putExtra("url",list.get(position).getUrl());
                        startActivity(intent);
                    }
                });
            }
        });
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        if(goodsPresenter!=null){
            goodsPresenter.onBind();
        }
    }
}

WebActivity

import android.content.Intent;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class WebActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_web);
        //隐藏原有标题
        getSupportActionBar().hide();
        WebView webView = findViewById(R.id.web_view);

        Intent intent = getIntent();
        String url = intent.getStringExtra("url");
        //加载
        webView.loadUrl(url);
        //设置
        webView.setWebViewClient(new WebViewClient());
        WebSettings settings = webView.getSettings();
        settings.setJavaScriptEnabled(true);
        settings.setJavaScriptCanOpenWindowsAutomatically(true);
    }
}

adapter文件夹下MyAdapter

import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;
import com.bumptech.glide.Glide;
import com.bwie.test.bean.GoodsBean;
import com.bwie.test.util.inter.OnItemClickListener;
import com.bwie.test.app_demo.R;
import java.util.List;

public class MyAdapter extends RecyclerView.Adapter<MyHolder> {
    Context context;
    List<GoodsBean.NewslistBean> list;
    private OnItemClickListener mOnItemClickListener;

    public MyAdapter(Context context, List<GoodsBean.NewslistBean> list) {
        this.context = context;
        this.list = list;
    }

    @Override
    public MyHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = View.inflate(context, R.layout.item_layout, null);
        MyHolder myHolder = new MyHolder(view);
        return myHolder;
    }

    @Override
    public void onBindViewHolder(MyHolder holder, final int position) {
        holder.title_item.setText(list.get(position).getTitle());
        holder.time_item.setText(list.get(position).getCtime());
        Glide.with(context).load(list.get(position).getPicUrl()).placeholder(R.mipmap.ic_launcher)
                       .into(holder.image_item);

        holder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mOnItemClickListener.onItemClick(position);
            }
        });
    }

    @Override
    public int getItemCount() {
        return list.size();
    }

    public void setOnItemClickListener(OnItemClickListener onItemClickListener ){
        this. mOnItemClickListener=onItemClickListener;
    }
}

MyHolder

import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import com.bwie.test.app_demo.R;

public class MyHolder extends RecyclerView.ViewHolder {
    public ImageView image_item;
    public TextView title_item,time_item;

    public MyHolder(View itemView) {
        super(itemView);
        image_item = itemView.findViewById(R.id.image_item);
        title_item = itemView.findViewById(R.id.title_item);
        time_item = itemView.findViewById(R.id.time_item);
    }
}

model文件夹下GoodsModel

import com.bwie.test.bean.GoodsBean;
import com.bwie.test.presenter.GoodsPresenter;
import com.bwie.test.presenter.InGoodspresenter;
import com.bwie.test.util.OkHttp3Util;
import com.google.gson.Gson;

import java.io.IOException;

import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.Response;

public class GoodsModel {
    private final InGoodspresenter inGoodspresenter;

    public GoodsModel(GoodsPresenter inGoodspresenter) {
        this.inGoodspresenter = inGoodspresenter;
    }

    public void getData(String goodsUrl) {
        OkHttp3Util.doGet(goodsUrl, new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {

            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                if (response.isSuccessful()){
                    String json = response.body().string();
                    GoodsBean goodsBean = new Gson().fromJson(json, GoodsBean.class);
                    inGoodspresenter.onSuccess(goodsBean);
                }
            }
        });
    }
}

presenter文件夹下GoodsPresenter

import com.bwie.test.app_demo.ShuActivity;
import com.bwie.test.bean.GoodsBean;
import com.bwie.test.model.GoodsModel;
import com.bwie.test.view.MainView;

public class GoodsPresenter implements InGoodspresenter{
    private final GoodsModel goodsModel;
    private MainView mainView;

    public GoodsPresenter(ShuActivity mainView) {
        this.mainView = mainView;
        goodsModel = new GoodsModel(this);
    }

    public void getData(String goodsUrl) {
        goodsModel.getData(goodsUrl);
    }

    @Override
    public void onSuccess(GoodsBean goodsBean) {
        mainView.onSuccess(goodsBean);
    }

    public void onBind(){
        if(mainView!=null){
            mainView = null;
        }
    }
}

InGoodspresenter

import com.bwie.test.bean.GoodsBean;

public interface InGoodspresenter {
    void onSuccess(GoodsBean goodsBean);
}

view文件夹下MainView

import com.bwie.test.bean.GoodsBean;

public interface MainView {
    void onSuccess(GoodsBean goodsBean);
}

cosset文件夹下EnlargeAnimationOut

import android.view.View;
import android.view.animation.AlphaAnimation;
import android.view.animation.ScaleAnimation;

public class EnlargeAnimationOut extends ZoomAnimation{
    public EnlargeAnimationOut(int i) {
        super(ZoomAnimation.Direction.HIDE, i, new View[0]);
    }

    @Override
    protected void addShrinkAnimation(View[] views) {
        addAnimation(new ScaleAnimation(1F, 5F, 1F, 5F, 1, 0.5F, 1, 0.5F));
        addAnimation(new AlphaAnimation(1F, 0F));
    }

    @Override
    protected void addEnlargeAnimation(View[] views) {
    }
}

ImageButtonExtend

import android.content.Context;
import android.util.AttributeSet;
import android.view.View;
import android.view.animation.Animation;
import android.widget.ImageButton;

public class ImageButtonExtend extends android.support.v7.widget.AppCompatImageButton {
   private Animation animation;
   
   public ImageButtonExtend(Context context) {
      super(context);
   }
   
   public ImageButtonExtend(Context context, AttributeSet attrs) {
      super(context, attrs);
   }

   public ImageButtonExtend(Context context, AttributeSet attrs, int defStyle) {
      super(context, attrs, defStyle);
   }
   
   @Override
   public void startAnimation(Animation animation) {
      super.startAnimation(animation);
      this.animation = animation;
      getRootView().postInvalidate();
   }

   @Override
   protected void onAnimationEnd() {
      super.onAnimationEnd();
      
      if ((this.animation instanceof ZoomAnimation)) {
         setVisibility(((ZoomAnimation) this.animation).direction 
               != ZoomAnimation.Direction.SHOW ? View.VISIBLE : View.GONE);
      }
   }

   @Override
   protected void onAnimationStart() {
      super.onAnimationStart();
      if ((this.animation instanceof ZoomAnimation)){
         setVisibility(View.VISIBLE);
      }
   }
}

ShrinkAnimationOut

import android.view.View;
import android.view.animation.AlphaAnimation;
import android.view.animation.ScaleAnimation;

public class ShrinkAnimationOut extends ZoomAnimation{
    public ShrinkAnimationOut(int i) {
        super(ZoomAnimation.Direction.SHOW, i, new View[0]);
    }

    @Override
    protected void addShrinkAnimation(View[] views) {

    }

    @Override
    protected void addEnlargeAnimation(View[] views) {
        addAnimation(new ScaleAnimation(1F, 0F, 1F, 0F, 1, 0.5F, 1, 0.5F));
        addAnimation(new AlphaAnimation(1F, 0F));
    }
}

ShrinkRelativeLayout

import android.content.Context;
import android.util.AttributeSet;
import android.view.View;
import android.view.animation.Animation;
import android.widget.RelativeLayout;

public class ShrinkRelativeLayout extends RelativeLayout {
   private Animation animation;

   public ShrinkRelativeLayout(Context context) {
      super(context);
   }
   
   public ShrinkRelativeLayout(Context context, AttributeSet attrs) {
      super(context, attrs);
   }
   
   public ShrinkRelativeLayout(Context context, AttributeSet attrs, int defStyle) {
      super(context, attrs, defStyle);
   }
   
   @Override
   public void startAnimation(Animation animation) {
      super.startAnimation(animation);
      this.animation = animation;
      getRootView().postInvalidate();
   }

   @Override
   protected void onAnimationEnd() {
      super.onAnimationEnd();
      if (this.animation instanceof ZoomAnimation) {
         setVisibility(((ZoomAnimation) animation).direction 
               != ZoomAnimation.Direction.SHOW ? View.VISIBLE : View.GONE);
      }
   }

   @Override
   protected void onAnimationStart() {
      super.onAnimationStart();
      if (this.animation instanceof ZoomAnimation) {
         setVisibility(View.VISIBLE);
      }
   }
}

SpringAnimation

import android.view.View;
import android.view.ViewGroup;
import android.view.ViewGroup.MarginLayoutParams;
import android.view.animation.AnticipateOvershootInterpolator;
import android.view.animation.OvershootInterpolator;
import android.view.animation.TranslateAnimation;

public class SpringAnimation extends ZoomAnimation {
    private static int[] size;
    private static int xOffset = 210;
    private static int yOffset = -15;
    public static final int DURATION = 300;

    public SpringAnimation(Direction direction, long duration, View view) {
        super(direction, duration, new View[] { view });
        SpringAnimation.xOffset = SpringAnimation.size[0] / 2 - 30;
    }

    public static void startAnimations(ViewGroup viewgroup, ZoomAnimation.Direction direction, int[] size) {
        SpringAnimation.size = size;
        switch (direction) {
            case HIDE:
                startShrinkAnimations(viewgroup);
                break;
            case SHOW:
                startEnlargeAnimations(viewgroup);
                break;
        }
    }

    /**
     * 开始呈现菜单
     */
    private static void startEnlargeAnimations(ViewGroup viewgroup) {
        for (int i = 0; i < viewgroup.getChildCount(); i++) {
            if (viewgroup.getChildAt(i) instanceof ImageButtonExtend) {
                ImageButtonExtend inoutimagebutton = (ImageButtonExtend) viewgroup
                        .getChildAt(i);
                SpringAnimation animation = new SpringAnimation(
                        ZoomAnimation.Direction.HIDE, DURATION, inoutimagebutton);
                animation.setStartOffset((i * 200)
                        / (-1 + viewgroup.getChildCount()));
                animation.setInterpolator(new OvershootInterpolator(4F));
                inoutimagebutton.startAnimation(animation);
            }
        }
    }

    /**
     * 开始隐藏菜单
     */
    private static void startShrinkAnimations(ViewGroup viewgroup) {
        for (int i = 0; i < viewgroup.getChildCount(); i++) {
            if (viewgroup.getChildAt(i) instanceof ImageButtonExtend) {
                ImageButtonExtend inoutimagebutton = (ImageButtonExtend) viewgroup
                        .getChildAt(i);
                SpringAnimation animation = new SpringAnimation(
                        ZoomAnimation.Direction.SHOW, DURATION,
                        inoutimagebutton);
                animation.setStartOffset((100 * ((-1 + viewgroup
                        .getChildCount()) - i))
                        / (-1 + viewgroup.getChildCount()));
                animation.setInterpolator(new AnticipateOvershootInterpolator(2F));
                inoutimagebutton.startAnimation(animation);
            }
        }
    }

    @Override
    protected void addShrinkAnimation(View[] views) {
        MarginLayoutParams mlp = (MarginLayoutParams) views[0].
                getLayoutParams();
        addAnimation(new TranslateAnimation(
                xOffset + -mlp.leftMargin,
                0F,yOffset + mlp.bottomMargin, 0F));
    }

    @Override
    protected void addEnlargeAnimation(View[] views) {
        MarginLayoutParams mlp = (MarginLayoutParams) views[0].
                getLayoutParams();
        addAnimation(new TranslateAnimation(
                0F, xOffset + -mlp.leftMargin,
                0F,yOffset + mlp.bottomMargin));
    }
}

ZoomAnimation

import android.content.Context;
import android.util.AttributeSet;
import android.view.View;
import android.view.animation.AnimationSet;

public abstract class ZoomAnimation extends AnimationSet {
    public Direction direction;

    public enum Direction {
        HIDE, SHOW;
    }

    public ZoomAnimation(Direction direction, long duration, View[] views) {
        super(true);
        this.direction = direction;
        switch (this.direction) {
            case HIDE:
                addShrinkAnimation(views);
                break;
            case SHOW:
                addEnlargeAnimation(views);
                break;
        }
        setDuration(duration);
    }

    protected abstract void addShrinkAnimation(View[] views);

    protected abstract void addEnlargeAnimation(View[] views);
}

util文件夹下OnItemClickListener

public interface OnItemClickListener {
    void onItemClick(int position);
}

OkHttp3Util

import android.os.Environment;
import java.io.File;
import java.util.Map;
import java.util.concurrent.TimeUnit;

import okhttp3.Cache;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.FormBody;
import okhttp3.OkHttpClient;
import okhttp3.Request;

public class OkHttp3Util {
    private static OkHttpClient okHttpClient = null;

    private OkHttp3Util() {
    }

    public static OkHttpClient getInstance() {
        if (okHttpClient == null) {
            synchronized (OkHttp3Util.class) {
                if (okHttpClient == null) {
                    File sdcache = new File(Environment.getExternalStorageDirectory(), "cache");
                    //指定缓存大小
                    int cacheSize = 10 * 1024 * 1024;
                    okHttpClient = new OkHttpClient.Builder()//构建器
                            .connectTimeout(15, TimeUnit.SECONDS)//连接超时
                            .writeTimeout(20, TimeUnit.SECONDS)//写入超时
                            .readTimeout(20, TimeUnit.SECONDS)//读取超时

                            //.addInterceptor(new CommonParamsInterceptor())
                            //.addNetworkInterceptor(new CacheInterceptor())
                            //.cache(new Cache(sdcache.getAbsoluteFile(), cacheSize))
                            .cache(new Cache(sdcache.getAbsoluteFile(),cacheSize))
                            .build();
                }
            }
        }
        return okHttpClient;
    }

    public static void doGet(String url, Callback callback) {
        OkHttpClient okHttpClient = getInstance();
        //创建Request
        Request request = new Request.Builder().url(url).build();
        //得到Call对象
        Call call = okHttpClient.newCall(request);
        //执行异步请求
        call.enqueue(callback);
    }

    /**
     * post请求
     */
    public static void doPost(String url, Map<String, String> params, Callback callback) {
        OkHttpClient okHttpClient = getInstance();
        FormBody.Builder builder = new FormBody.Builder();
        //遍历集合
        for (String key : params.keySet()) {
            builder.add(key, params.get(key));
        }
        Request request = new Request.Builder().url(url).post(builder.build()).build();
        Call call = okHttpClient.newCall(request);
        call.enqueue(callback);
    }
} 

使用的依赖

<!-- 允许程序打开网络套接字 -->
<uses-permission android:name="android.permission.INTERNET" />
<!-- 允许程序设置内置sd卡的写权限 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!-- 允许程序获取网络状态 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!-- 允许程序访问WiFi网络信息 -->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!-- 允许程序读写手机状态和身份 -->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<!-- 允许程序访问CellID或WiFi热点来获取粗略的位置 -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

compile 'com.amap.api:3dmap:latest.integration'
//定位功能
compile 'com.amap.api:location:latest.integration'
implementation 'com.android.support:recyclerview-v7:26.1.0'

compile 'com.google.code.gson:gson:2.8.2'  //gson

compile 'com.squareup.okhttp3:okhttp:3.6.0' //ok
compile 'com.squareup.okio:okio:1.11.0'
compile 'com.github.bumptech.glide:glide:3.7.0'

bean文件夹下GoodsBean

import java.util.List;

public class GoodsBean {
    private int code;
    private String msg;
    private List<NewslistBean> newslist;

    public int getCode() {
        return code;
    }

    public void setCode(int code) {
        this.code = code;
    }

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }

    public List<NewslistBean> getNewslist() {
        return newslist;
    }

    public void setNewslist(List<NewslistBean> newslist) {
        this.newslist = newslist;
    }

    public static class NewslistBean {

        private String ctime;
        private String title;
        private String description;
        private String picUrl;
        private String url;

        public String getCtime() {
            return ctime;
        }

        public void setCtime(String ctime) {
            this.ctime = ctime;
        }

        public String getTitle() {
            return title;
        }

        public void setTitle(String title) {
            this.title = title;
        }

        public String getDescription() {
            return description;
        }

        public void setDescription(String description) {
            this.description = description;
        }

        public String getPicUrl() {
            return picUrl;
        }

        public void setPicUrl(String picUrl) {
            this.picUrl = picUrl;
        }

        public String getUrl() {
            return url;
        }

        public void setUrl(String url) {
            this.url = url;
        }
    }
}

猜你喜欢

转载自blog.csdn.net/gh323093/article/details/79902050