水波图
package com.bawei.yk.custom;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.util.AttributeSet;
import android.view.View;
/**
* @Author: zhang
* @Date: 2019/4/6 20:27
* @Description:
*/
public class MyView extends View {
Paint paint = new Paint();
Path path = new Path();
float mx;
public MyView(Context context) {
super(context);
}
public MyView(Context context, AttributeSet attrs) {
super(context, attrs);
paint.setAntiAlias(true);
paint.setStyle(Paint.Style.FILL_AND_STROKE);
paint.setColor(Color.RED);
}
public MyView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
path.reset();
path.moveTo(getLeft(),getBottom());
float v= (float) (Math.PI/getRight());
mx -= 0.1f;
for (int i = 0; i <= getRight(); i++) {
float v1 = (float) (60 * Math.sin(v * i + mx) + 100);
path.lineTo(i,v1);
}
path.lineTo(getRight(),getBottom());
canvas.drawPath(path,paint);
postInvalidateDelayed(1);
}
}
/**
* @Author: zhang
* @Date: 2019/3/21 9:00
* @Description:
*/
public class MyView extends View {
Paint paint;
public MyView(Context context) {
super(context);
}
public MyView(Context context, AttributeSet attrs) {
super(context, attrs);
paint = new Paint();
//设置颜色
paint.setColor(Color.RED);
//抗锯齿
paint.setAntiAlias(true);
//填充
paint.setStyle(Paint.Style.FILL);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
//canvas.drawCircle(100,100,100,paint);
RectF rectF = new RectF(0,0,200,200);
canvas.clipRect(rectF);
canvas.drawRect(rectF,paint);
}
}
流式布局
public class LoginActivity extends AppCompatActivity implements MyInterface.ViewInterface.LoginInterface {
List<ShopBean.ResultBean> list = new ArrayList<>();
MyInterface.PresenterInterface presenterInterface;
XRecyclerView xRecyclerView;
MyAdapter adapter;
int page = 1;
String key = "高";
MyLineLayout myLineLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
presenterInterface = new MyPresenter(this);
init();
}
private void init() {
xRecyclerView = findViewById(R.id.xRecycler_id);
myLineLayout = findViewById(R.id.myLineLayout);
LinearLayoutManager layoutManager = new LinearLayoutManager(this);
layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
xRecyclerView.setLayoutManager(layoutManager);
adapter = new MyAdapter(list,this);
xRecyclerView.setAdapter(adapter);
Log.i("tag","V"+key);
presenterInterface.toModel(key,page);
xRecyclerView.setLoadingMoreEnabled(true);
xRecyclerView.setPullRefreshEnabled(true);
xRecyclerView.setLoadingListener(new XRecyclerView.LoadingListener() {
@Override
public void onRefresh() {
list.clear();
page = 1;
presenterInterface.toModel(key,page);
xRecyclerView.refreshComplete();
}
@Override
public void onLoadMore() {
page++;
presenterInterface.toModel(key,page);
xRecyclerView.loadMoreComplete();
}
});
}
@Override
public void reFreDisplay(List<ShopBean.ResultBean> vList) {
list.addAll(vList);
Log.i("tag","个数"+list.size());
adapter.notifyDataSetChanged();
}
}
**
* @Author: zhang
* @Date: 2019/3/22 10:01
* @Description:自定义控件
*/
public class MyLineLayout extends LinearLayout {
TextView back,search;
EditText edie_key;
LoginActivity activity;
FlowLayout flowLayout;
LinearLayout linearLayout;
public MyLineLayout(Context context) {
super(context);
}
public MyLineLayout(final Context context, AttributeSet attrs) {
super(context, attrs);
activity = (LoginActivity) context;
View view = LayoutInflater.from(context).inflate(R.layout.layout_kongjian,this);
back = view.findViewById(R.id.finish_id);
search = view.findViewById(R.id.search_id);
edie_key = view.findViewById(R.id.edit_key);
linearLayout = view.findViewById(R.id.linear_id);
flowLayout = view.findViewById(R.id.flowLayout_id);
back.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(activity,"1111",Toast.LENGTH_SHORT).show();
}
});
edie_key.clearFocus();
edie_key.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
edie_key.requestFocus();
}
});
edie_key.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus){
flowLayout.setVisibility(VISIBLE);
}else {
flowLayout.setVisibility(GONE);
}
}
});
search.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
edie_key.clearFocus();
String key = edie_key.getText().toString();
final TextView textView = new TextView(context);
textView.setTag(key);
textView.setText(key);
textView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Log.e("tag" ,"点击的内容 = " + textView.getTag().toString());
}
});
flowLayout.addView(textView);
flowLayout.requestLayout();
Log.i("tag",""+key);
activity.list.clear();
activity.key = key;
activity.presenterInterface.toModel(key,activity.page);
}
});
}
public MyLineLayout(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
}
流式布局
public class FlowLayout extends ViewGroup {
int mMarginLeft = 20;
int mMarginTop = 20;
public FlowLayout(Context context) {
super(context);
}
public FlowLayout(Context context, AttributeSet attrs) {
super(context, attrs);
}
public FlowLayout(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
measureChildren(widthMeasureSpec,heightMeasureSpec);
int width = MeasureSpec.getSize(widthMeasureSpec);
int height = MeasureSpec.getSize(heightMeasureSpec);
setMeasuredDimension(width,height);
}
@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {
int left = mMarginLeft;
int top = mMarginTop;
for (int i = 0; i <getChildCount() ; i++) {
int measuredWidth = getChildAt(i).getMeasuredWidth();
int measuredHeight = getChildAt(i).getMeasuredHeight();
if (measuredHeight+left+mMarginLeft > getWidth()){
left = mMarginLeft;
top += measuredHeight + mMarginTop;
getChildAt(i).layout(left,top,left+measuredWidth,top+measuredHeight);
}else {
getChildAt(i).layout(left,top,left+measuredWidth,top+measuredHeight);
}
left += mMarginLeft+measuredWidth;
}
}
@Override
public boolean onTouchEvent(MotionEvent event) {
return super.onTouchEvent(event);
}
}
public class MainActivity extends AppCompatActivity {
MyView myView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();
}
private void init() {
myView = findViewById(R.id.myView_id);
WindowManager wm = (WindowManager) this.getSystemService(Context.WINDOW_SERVICE);
int width = wm.getDefaultDisplay().getWidth();
int height = wm.getDefaultDisplay().getHeight();
ObjectAnimator translationX = ObjectAnimator.ofFloat(myView, "translationX", 1, width-200, width-200);
ObjectAnimator translationY = ObjectAnimator.ofFloat(myView, "translationY", 1, height-200, height-200);
AnimatorSet animatorSet = new AnimatorSet();
animatorSet.play(translationX).with(translationY);
animatorSet.setDuration(3000).start();
//动画监听
animatorSet.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationEnd(Animator animation) {
super.onAnimationEnd(animation);
//动画执行结束
Intent intent = new Intent(MainActivity.this,ViewActivity.class);
startActivity(intent);
finish();
}
});
}
}