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
M
package 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);
}
}
1207

被折叠的 条评论
为什么被折叠?



