M层接口
public interface MInterface {
public void getRequest(String url, Map<String,String> map);
public void postrequest(String url, String phone, String pwd);
}
P层接口
public interface PInterface {
public void toshow(String findtext, int page);
}
V层接口
public interface VInterface {
public void showList(Object o);
}
M层
public class MyModel implements MInterface {
MyCallBack myCallBack;
Handler handler=new Handler(){
@Override
public void dispatchMessage(Message msg) {
super.dispatchMessage(msg);
int type=msg.arg1;
if (type==1){
}
if (type==2){
String json= (String) msg.obj;
Gson gson=new Gson();
JsonBean jsonBean = gson.fromJson(json, JsonBean.class);
Log.e("aa",json+jsonBean);
myCallBack.success(jsonBean);
}
}
};
@Override
public void getRequest(String url, Map<String,String> map) {
OkHttpUtils utils = OkHttpUtils.getInstance();
utils.doGet(url, map, new Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
String json = response.body().string();
Message message = new Message();
message.obj=json;
message.arg1=2;
handler.sendMessage(message);
}
});
}
@Override
public void postrequest(String url, String phone, String pwd) {
OkHttpUtils utile = OkHttpUtils.getInstance();
utile.doPost(url, phone, pwd, new Callback() {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
String json = response.body().string();
Message message = new Message();
message.obj = json;
handler.sendMessage(message);
}
});
}
public void setMyCallBack(MyCallBack myCallBack){
this.myCallBack=myCallBack;
}
//避免同出现类型转化异常
/*public void setMyCallBack(int type,MyCallBack myCallBack){
if (type==1){
this.myCallBack1=myCallBack;
}else {
this.myCallBack2=myCallBack;
}
}*/
public interface MyCallBack{
public void success(Object suc);
}
}
P层
public class MyPresenter implements PInterface {
MyModel myModel;
VInterface vInterface;
public MyPresenter(VInterface vInterface) {
myModel = new MyModel();
this.vInterface = vInterface;
}
@Override
public void toshow(String findtext, int page) {
Map<String,String> map = new HashMap<>();
map.put("keyword", findtext);
map.put("page", page+"");
map.put("count", "10");
myModel.setMyCallBack(new MyModel.MyCallBack() {
@Override
public void success(Object suc) {
JsonBean jsonBean= (JsonBean) suc;
List<JsonBean.ResultBean> list = jsonBean.getResult();
vInterface.showList(list);
}
@Override
public void error(Object err) {
}
});
myModel.getRequest(URL.FIND_URL,map);
}
}
V层
public class Main3Activity extends AppCompatActivity implements VInterface, XRecyclerView.LoadingListener {
public View3 view3_id;
public View2 view2_id;
public List<JsonBean.ResultBean> list= new ArrayList<>();
public XRecyclerView xrecycler;
public PInterface pInterface;
public TextView find;
public EditText find_text;
public String findtext;
private MyAdapter myAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main3);
init();
}
private void init() {
view3_id = findViewById(R.id.view3_id);
view2_id = findViewById(R.id.view2_id);
find =findViewById(R.id.find_id);
find_text =findViewById(R.id.find_text_id);
xrecycler = findViewById(R.id.xrecycler_id);
xrecycler.addItemDecoration(new DividerItemDecoration(this, DividerItemDecoration.VERTICAL));
xrecycler.setLoadingMoreEnabled(true);
xrecycler.setPullRefreshEnabled(true);
xrecycler.setLoadingListener(this);
//瀑布流
StaggeredGridLayoutManager staggeredGridLayoutManager = new StaggeredGridLayoutManager(2,StaggeredGridLayoutManager.VERTICAL);
xrecycler.setLayoutManager(staggeredGridLayoutManager);
pInterface = new MyPresenter(this);
pInterface.toshow("高",1);
myAdapter = new MyAdapter(list, Main3Activity.this);
xrecycler.setAdapter(myAdapter);
pInterface = new MyPresenter(this);
pInterface.toshow("高",1);
find.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final TextView textView;
findtext = find_text.getText().toString();
textView = new TextView(Main3Activity.this);
textView.setTag(findtext);
textView.setText(findtext);
pInterface.toshow(findtext, 1);
textView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String s = textView.getTag().toString();
find_text.setText(s);
// Log.e("tag" ,"点击的内容 = " + textView.getTag().toString());
}
});
textView.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
return false;
}
});
view3_id.addView(textView);
view3_id.requestLayout();
find_text.setFocusableInTouchMode(false);
find_text.clearFocus();
}
});
}
@Override
public void showList(Object o) {
list.clear();
xrecycler.refreshComplete();
xrecycler.loadMoreComplete();
List<JsonBean.ResultBean> list= (List<JsonBean.ResultBean>) o;
this.list.addAll(list);
myAdapter.notifyDataSetChanged();
}
@Override
public void onRefresh() {
list.clear();
pInterface.toshow("高",1);
}
int page=1;
@Override
public void onLoadMore() {
page++;
pInterface.toshow(findtext,page);
}
}
V层引导页(属性动画)
public class MainActivity extends AppCompatActivity {
private View1 view;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
view = findViewById(R.id.view1_id);
ObjectAnimator translationX = ObjectAnimator.ofFloat(view, "translationX", 0, 200);
ObjectAnimator translationY = ObjectAnimator.ofFloat(view, "translationY", 0, 500);
ObjectAnimator alpha = ObjectAnimator.ofFloat(view, "alpha", 1,0,1,0,1,0,1,0,1);
AnimatorSet animatorSet=new AnimatorSet();
animatorSet.play(translationX).with(translationY).with(alpha);
animatorSet.setDuration(3000);
animatorSet.start();
translationX.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
super.onAnimationEnd(animation);
Intent intent=new Intent(MainActivity.this,Main3Activity.class);
startActivity(intent);
finish();
}
});
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent(MainActivity.this,Main3Activity.class);
startActivity(intent);
}
});
}
}
展示列表适配器
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.Hold> {
List<JsonBean.ResultBean> list;
Context context;
public MyAdapter(List<JsonBean.ResultBean> list, Context context) {
this.list=list;
this.context=context;
}
@NonNull
@Override
public Hold onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(context).inflate(R.layout.item, null);
return new Hold(view);
}
@Override
public void onBindViewHolder(@NonNull Hold holder, int position) {
String title = list.get(position).getCommodityName();
String price = list.get(position).getMasterPic();
holder.text_id.setText(title);
//圆形图片
RoundedCorners roundedCorners= new RoundedCorners(100);
Glide.with(context).load(price).apply(RequestOptions.bitmapTransform(roundedCorners)).into(holder.image_id);
}
@Override
public int getItemCount() {
if (list!=null){
return list.size();
}
return 0;
}
public class Hold extends RecyclerView.ViewHolder{
public ImageView image_id;
public TextView text_id;
public Hold(View itemView) {
super(itemView);
image_id = itemView.findViewById(R.id.image_id);
text_id = itemView.findViewById(R.id.text_id);
}
}
}
自定义View继承View画圆
//为调试代码 可忽略
public class View1 extends View {
ValueAnimator valueAnimator;
Paint paint;
private String vtext;
private float vsize;
private int vcolor;
boolean isgoing=true;
int i=0;
int x=0;
private int w;
public View1(Context context) {
super(context);
}
public View1(Context context, AttributeSet attrs) {
super(context, attrs);
/*TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.View1);
vsize = typedArray.getDimension(R.styleable.View1_vsize, 30f);
vtext = typedArray.getString(R.styleable.View1_vtext);
vcolor = typedArray.getColor(R.styleable.View1_vcolor, 0xFF0000);
typedArray.recycle();
paint = new Paint();
paint.setStyle(Paint.Style.FILL);
paint.setColor(vcolor);
paint.setTextSize(50f);
*/
paint = new Paint();
paint.setColor(Color.RED);
paint.setStyle(Paint.Style.FILL_AND_STROKE);
paint.setAntiAlias(true);
}
public View1(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
// w = getMeasuredWidth();
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawCircle(100, 100, 100, paint);
// canvas.drawText(vtext,x,x,paint);
// if (x<500){
// starAnimation();
// }
}
private void starAnimation(){
/*valueAnimator = ValueAnimator.ofInt(0, w);
// isgoing=false;
// valueAnimator.setDuration(5000);
// valueAnimator.setRepeatCount(ValueAnimator.INFINITE);
// valueAnimator.setInterpolator(new LinearInterpolator());
x+=2;
postInvalidate();
// valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
// @Override
// public void onAnimationUpdate(ValueAnimator animation) {
// x= (int)animation.getAnimatedValue();
// Log.e("aaa",x+"");
// postInvalidate();
// }
// });
valueAnimator.start();*/
}
}
public class View2 extends LinearLayout {
public EditText find_text;
public ImageView back;
public Main3Activity activity;
public View view;
public View2(Context context) {
super(context);
}
public View2(final Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
activity = (Main3Activity) context;
view = LayoutInflater.from(context).inflate(R.layout.hand, this);
back = view.findViewById(R.id.back_id);
find_text = view.findViewById(R.id.find_text_id);
find_text.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
find_text.setFocusableInTouchMode(true);
}
});
find_text.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus){
activity.view3_id.setVisibility(VISIBLE);
}else {
activity.view3_id.setVisibility(GONE);
}
}
});
}
}