zhoukao2EX
来源:互联网 发布:淘宝账户被骇客入侵 编辑:程序博客网 时间:2024/06/05 16:01
compile 'com.squareup.okhttp3:okhttp:3.9.0' compile 'com.google.code.gson:gson:2.8.1' compile 'com.github.bumptech.glide:glide:3.8.0' compile 'com.github.iwgang:countdownview:1.2' compile 'com.jcodecraeer:xrecyclerview:1.3.2' compile 'com.nostra13.universalimageloader:universal-image-loader:1.9.5'
values–>attr.xml
<declare-styleable name="CountDownView"> <!--颜色--> <attr name="ringColor" format="color" /> <!-- 进度文本的字体大小 --> <attr name="progressTextSize" format="dimension" /> <!-- 圆环宽度 --> <attr name="ringWidth" format="float" /> <!--进度文本颜色--> <attr name="progressTextColor" format="color"/> <!--倒计时--> <attr name="countdownTime" format="integer"/></declare-styleable>
布局文件main.xml
<?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" android:orientation="horizontal" tools:context="com.exbway.ok_http.MainActivity"> <ImageView android:id="@+id/myimg" android:layout_width="200dp" android:layout_height="100dp" android:src="@drawable/a7" android:layout_centerHorizontal="true" /> <com.exbway.ok_http.CountDownView android:id="@+id/countDownView" android:layout_width="100dp" android:layout_height="100dp" /></RelativeLayout>
second.xml
<?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.exbway.ok_http.SecondActivity"> <com.jcodecraeer.xrecyclerview.XRecyclerView android:id="@+id/xrcv" android:layout_width="match_parent" android:layout_height="match_parent"> </com.jcodecraeer.xrecyclerview.XRecyclerView></RelativeLayout>
item
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:gravity="center_vertical" android:layout_width="match_parent" android:layout_height="wrap_content"> <LinearLayout android:orientation="vertical" android:layout_width="wrap_content" android:layout_height="wrap_content"> <ImageView android:layout_width="50dp" android:layout_height="100dp" android:id="@+id/item_image1" android:src="@mipmap/ic_launcher" /> <ImageView android:layout_width="50dp" android:layout_height="100dp" android:id="@+id/item_image2" android:src="@mipmap/ic_launcher" /> <ImageView android:layout_width="50dp" android:layout_height="100dp" android:id="@+id/item_image3" android:src="@mipmap/ic_launcher" /> </LinearLayout> <TextView android:layout_marginLeft="10dp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/item_title" android:textSize="20sp" android:text="1111" /></LinearLayout>
item2
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:gravity="center_vertical" android:layout_width="match_parent" android:layout_height="wrap_content"> <LinearLayout android:orientation="horizontal" android:layout_width="wrap_content" android:layout_height="wrap_content"> <ImageView android:layout_width="100dp" android:layout_height="50dp" android:id="@+id/item2_image1" android:src="@mipmap/ic_launcher" /> <ImageView android:layout_width="100dp" android:layout_height="50dp" android:id="@+id/item2_image2" android:src="@mipmap/ic_launcher" /> <ImageView android:layout_width="100dp" android:layout_height="50dp" android:id="@+id/item2_image3" android:src="@mipmap/ic_launcher" /> </LinearLayout> <TextView android:layout_marginLeft="10dp" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/item2_title" android:textSize="20sp" android:text="1111" /></LinearLayout>
package com.exbway.ok_http.apps;import android.app.Application;import com.exbway.ok_http.R;import com.exbway.ok_http.catcherror.CrashHandler;import com.nostra13.universalimageloader.core.DisplayImageOptions;import com.nostra13.universalimageloader.core.ImageLoader;import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;/** * Created by 张政浩 on 2017/10/21. */public class MyApp extends Application { @Override public void onCreate() { super.onCreate(); CrashHandler crashHandler = CrashHandler.getInstance(); crashHandler.init(getApplicationContext()); initImageLoder(); } /** * 图片加载 */ private void initImageLoder() { DisplayImageOptions options = new DisplayImageOptions.Builder() .cacheOnDisk(true) .cacheInMemory(true) .showImageForEmptyUri(R.mipmap.ic_launcher) .showImageOnFail(R.mipmap.ic_launcher) .showImageOnLoading(R.mipmap.ic_launcher) .build(); ImageLoaderConfiguration configuration = new ImageLoaderConfiguration.Builder(this) .defaultDisplayImageOptions(options) .build(); ImageLoader.getInstance().init(configuration); }}
写Bean,写异常捕获
写MVP
Mpackage com.exbway.ok_http.model;import com.exbway.ok_http.bean.MyBean;import com.exbway.ok_http.net.MyOkhttp;import com.google.gson.Gson;import java.io.IOException;import java.util.List;import okhttp3.Request;/** * Created by 张政浩 on 2017/10/21. */public class DataModel implements IModel{ @Override public void requestData(String url,int page, final OnRequestListentr onRequestListentr) { MyOkhttp.getAsync(url+page, new MyOkhttp.DataCallBack() { @Override public void requestFailure(Request request, IOException e) { onRequestListentr.OnErrorRequest(e.getMessage().toString()); } @Override public void requestSuccess(String result) throws Exception { Gson g = new Gson(); MyBean myBean = g.fromJson(result, MyBean.class); List<MyBean.DataBean> data = myBean.getData(); onRequestListentr.OnSauccessRequest(data); } }); }}
package com.exbway.ok_http.model;/** * Created by 张政浩 on 2017/10/21. */public interface IModel { void requestData(String url,int page,OnRequestListentr onRequestListentr);}
package com.exbway.ok_http.model;import com.exbway.ok_http.bean.MyBean;import java.util.List;/** * Created by 张政浩 on 2017/10/21. */public interface OnRequestListentr { void OnSauccessRequest(List<MyBean.DataBean> list); void OnErrorRequest(String e);}
V
package com.exbway.ok_http.view;import com.exbway.ok_http.bean.MyBean;import java.util.List;/** * Created by 张政浩 on 2017/10/21. */public interface IDataView { void showlist(List<MyBean.DataBean> list); void showErrod(String e);}
P
package com.exbway.ok_http.presenter;import com.exbway.ok_http.bean.MyBean;import com.exbway.ok_http.model.DataModel;import com.exbway.ok_http.model.IModel;import com.exbway.ok_http.model.OnRequestListentr;import com.exbway.ok_http.view.IDataView;import java.util.List;/** * Created by 张政浩 on 2017/10/21. */public class DataPresenter implements IPresenter { IDataView iDataView; IModel iModel; public DataPresenter(IDataView iDataView) { this.iDataView = iDataView; iModel = new DataModel(); } @Override public void loadlist(String url,int page) { iModel.requestData(url,page ,new OnRequestListentr() { @Override public void OnSauccessRequest(List<MyBean.DataBean> list) { iDataView.showlist(list); } @Override public void OnErrorRequest(String e) { iDataView.showErrod(e); } }); }}
package com.exbway.ok_http.presenter;/** * Created by 张政浩 on 2017/10/21. */public interface IPresenter { void loadlist(String url,int page);}
MainActivity
package com.exbway.ok_http;import android.animation.AnimatorSet;import android.animation.ObjectAnimator;import android.content.Intent;import android.os.Handler;import android.os.Message;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.ImageView;import android.widget.TextView;import android.widget.Toast;import java.util.Timer;import java.util.TimerTask;public class MainActivity extends AppCompatActivity { ImageView myimg; CountDownView cdv; private Timer mTimer; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tupian(); daojishi(); mTimer = new Timer(); // start timer task setTimerTask(); } @Override protected void onDestroy() { super.onDestroy(); // cancel timer mTimer.cancel(); } private void setTimerTask() { mTimer.schedule(new TimerTask() { @Override public void run() { Message message = new Message(); message.what = 1; handler.sendMessage(message); } }, 3200); } private Handler handler = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); int msgId = msg.what; switch (msgId) { case 1: Intent intent = new Intent(MainActivity.this,SecondActivity.class); startActivity(intent); break; default: break; } } }; private void tupian() { myimg = (ImageView) findViewById(R.id.myimg); ObjectAnimator moveIn = ObjectAnimator.ofFloat(myimg, "translationY", 0f, 500f); ObjectAnimator animator = ObjectAnimator.ofFloat(myimg, "scaleY", 1f, 2f, 1f); AnimatorSet animSet = new AnimatorSet(); animSet.play(moveIn).before(animator); animSet.setDuration(1500); animSet.start(); } private void daojishi() { cdv = (CountDownView) findViewById(R.id.countDownView); cdv.setAddCountDownListener(new CountDownView.OnCountDownFinishListener() { @Override public void countDownFinished() { Toast.makeText(MainActivity.this, "倒计时结束", Toast.LENGTH_SHORT).show(); } }); cdv.startCountDown(); }}
MyAdapter
package com.exbway.ok_http;import android.content.Context;import android.content.Intent;import android.support.v7.widget.RecyclerView;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.ImageView;import android.widget.TextView;import com.exbway.ok_http.bean.MyBean;import com.nostra13.universalimageloader.core.ImageLoader;import java.util.ArrayList;import java.util.List;/** * Created by 张政浩 on 2017/10/21. */public class MyAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { List<MyBean.DataBean> list; Context context; public MyAdapter( Context context) { list = new ArrayList<>(); this.context = context; } @Override public int getItemViewType(int position) { int itemtype = list.get(position).getItemtype(); if(itemtype==0){ return 0; }else if(itemtype==1){ return 1; } return super.getItemViewType(position); } public void AddData(List<MyBean.DataBean> list, int page){ if(page == 1){ this.list.clear(); } this.list.addAll(list); notifyDataSetChanged(); } public interface OnItemClickLitener { void onItemClick(View view, int position); void onItemLongClick(View view , int position); } private OnItemClickLitener mOnItemClickLitener; public void setOnItemClickLitener(OnItemClickLitener mOnItemClickLitener) { this.mOnItemClickLitener = mOnItemClickLitener; } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { if(viewType==0){ MyViewHolder myViewHolder = new MyViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.item1, parent, false)); return myViewHolder; }else { MyViewHolder2 myViewHolder2 = new MyViewHolder2(LayoutInflater.from(parent.getContext()).inflate(R.layout.item2, parent, false)); return myViewHolder2; } } @Override public void onBindViewHolder(final RecyclerView.ViewHolder holder, int position) { final MyBean.DataBean db = list.get(position); String images = db.getImages(); String[] split = images.split("\\|"); if(holder instanceof MyViewHolder){ ((MyViewHolder) holder).textView.setText(db.getTitle()); ImageLoader.getInstance().displayImage(split[0],((MyViewHolder) holder).imageView1); ImageLoader.getInstance().displayImage(split[1],((MyViewHolder) holder).imageView2); ImageLoader.getInstance().displayImage(split[2],((MyViewHolder) holder).imageView3); }else if(holder instanceof MyViewHolder2){ ((MyViewHolder2) holder).atextView.setText(db.getTitle()); ImageLoader.getInstance().displayImage(split[0],((MyViewHolder2) holder).aimageView1); ImageLoader.getInstance().displayImage(split[1],((MyViewHolder2) holder).aimageView2); ImageLoader.getInstance().displayImage(split[2],((MyViewHolder2) holder).aimageView3); } // 如果设置了回调,则设置点击事件 if (mOnItemClickLitener != null) { holder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { int pos = holder.getLayoutPosition(); mOnItemClickLitener.onItemClick(holder.itemView, pos); } }); holder.itemView.setOnLongClickListener(new View.OnLongClickListener() { @Override public boolean onLongClick(View v) { int pos = holder.getLayoutPosition(); mOnItemClickLitener.onItemLongClick(holder.itemView, pos); return false; } }); } holder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent in = new Intent(context,WebActivity.class); in.putExtra("url",db.getDetailUrl()); context.startActivity(in); } }); } @Override public int getItemCount() { return list.size(); } public class MyViewHolder extends RecyclerView.ViewHolder { TextView textView; ImageView imageView1; ImageView imageView2; ImageView imageView3; public MyViewHolder(View itemView) { super(itemView); textView =(TextView) itemView.findViewById(R.id.item_title); imageView1 = (ImageView)itemView.findViewById(R.id.item_image1); imageView2 = (ImageView)itemView.findViewById(R.id.item_image2); imageView3 = (ImageView)itemView.findViewById(R.id.item_image3); } } public class MyViewHolder2 extends RecyclerView.ViewHolder { TextView atextView; ImageView aimageView1; ImageView aimageView2; ImageView aimageView3; public MyViewHolder2(View itemView) { super(itemView); atextView =(TextView) itemView.findViewById(R.id.item2_title); aimageView1 = (ImageView)itemView.findViewById(R.id.item2_image1); aimageView2 = (ImageView)itemView.findViewById(R.id.item2_image2); aimageView3 = (ImageView)itemView.findViewById(R.id.item2_image3); } }}
Second
package com.exbway.ok_http;import android.content.Intent;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.support.v7.widget.LinearLayoutManager;import android.support.v7.widget.RecyclerView;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.TextView;import android.widget.Toast;import com.exbway.ok_http.bean.MyBean;import com.exbway.ok_http.presenter.DataPresenter;import com.exbway.ok_http.view.IDataView;import com.google.gson.Gson;import com.jcodecraeer.xrecyclerview.XRecyclerView;import java.util.ArrayList;import java.util.List;public class SecondActivity extends AppCompatActivity implements IDataView,XRecyclerView.LoadingListener { private XRecyclerView mXrcv; private DataPresenter dataPresenter; String url ="http://120.27.23.105/product/getProducts?pscid="; int page = 1; private MyAdapter myAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_second); initView(); dataPresenter = new DataPresenter(this); dataPresenter.loadlist(url,page); } private void initView() { mXrcv = (XRecyclerView) findViewById(R.id.xrcv); LinearLayoutManager layoutManager = new LinearLayoutManager(this); layoutManager.setOrientation(LinearLayoutManager.VERTICAL); myAdapter = new MyAdapter(this); mXrcv.setAdapter(myAdapter); mXrcv.setLayoutManager(new LinearLayoutManager(this)); mXrcv.setLayoutManager(layoutManager); mXrcv.setLoadingListener(this); /*myAdapter.setOnItemClickLitener(new MyAdapter.OnItemClickLitener() { @Override public void onItemClick(View view, int position) { } @Override public void onItemLongClick(View view, int position) { Toast.makeText(SecondActivity.this, "长按", Toast.LENGTH_SHORT).show(); } });*/ } @Override public void showlist(final List<MyBean.DataBean> list) { myAdapter.AddData(list,page); } @Override public void showErrod(String e) { Toast.makeText(this, "" + e, Toast.LENGTH_SHORT).show(); } @Override public void onRefresh() { page =1; dataPresenter.loadlist(url,page); //刷新完成 mXrcv.refreshComplete(); mXrcv.loadMoreComplete(); } @Override public void onLoadMore() { page ++; dataPresenter.loadlist(url,page); //刷新完成 mXrcv.refreshComplete(); mXrcv.loadMoreComplete(); }}
WebView
package com.exbway.ok_http;import android.content.Intent;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.webkit.WebView;import android.webkit.WebViewClient;public class WebActivity extends AppCompatActivity { private WebView mWb; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_web); initView(); Intent in = getIntent(); String url = in.getStringExtra("url"); mWb.loadUrl(url); mWb.setWebViewClient(new WebViewClient(){ @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } }); } private void initView() { mWb = (WebView) findViewById(R.id.wb); }}