布局
<?xml version="1.0" encoding="utf-8"?>
<android.widget.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:orientation="vertical"
android:layout_height="match_parent"
tools:context=".MainActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<EditText
android:id="@+id/nameString"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:layout_weight="1"
android:background="@drawable/sty_color"
android:hint="姓名" />
<EditText
android:id="@+id/num"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_margin="10dp"
android:background="@drawable/sty_color"
android:hint="成绩"
app:layout_constraintLeft_toRightOf="@+id/nameString" />
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_margin="10dp"
android:background="@drawable/btn_color"
android:text="添加" />
</LinearLayout>
<zhao.com.demo1.MyView
android:id="@+id/myView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</android.widget.LinearLayout>
画矩形统计图
public class MyView extends View {
private Paint mLinePaint, mTextPaint, mRectPaint;
ArrayList<User> list;
public MyView(Context context) {
super(context);
init();
}
public MyView(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public MyView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init();
}
//长宽 测量控件的大小,确定宽高
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
//测量控件的位置,确定上下左右坐标
@Override
protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
super.onLayout(changed, left, top, right, bottom);
}
private void init() {
mLinePaint = new Paint();
//颜色
mLinePaint.setColor(Color.GREEN);
//样式
mLinePaint.setStyle(Paint.Style.STROKE);
//宽度
mLinePaint.setStrokeWidth(5);
//矩形样式
mRectPaint = new Paint();
mRectPaint.setColor(Color.BLUE);
mRectPaint.setStyle(Paint.Style.FILL);
mTextPaint = new Paint();
//字体颜色
mTextPaint.setColor(Color.BLACK);
mTextPaint.setStyle(Paint.Style.STROKE);
//字体大小
mTextPaint.setTextSize(50);
//添加数据
list = new ArrayList<>();
list.add(new User("啊哈",200));
}
public void addUser(User user) {
list.add(user);//添加数据
this.invalidate();//刷新View
}
//绘图,画点线矩形圆形的
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
/*
* X轴从200,1000开始到1000,1000结束
*
* */
canvas.drawLine(200, 1000, 1000, 1000, mLinePaint);
/*
* Y轴从200,200开始到200,1000结束
*
* */
canvas.drawLine(200, 200, 200, 1000, mLinePaint);
for (int i = 0; i <= 8; i++) {
int a = i * 100;//Y轴上的数字
/*
* 1000+25-a
* a=i*100
*
* 第i个数字到手机顶部的距离
*
* mTextPaint数字的样式
*
* */
canvas.drawText(String.valueOf(a), 100 - 50, 1000 + 25 - a, mTextPaint);
// canvas.drawText(i+"",100-50,1000+25-i,mTextPaint);//一般使用String.valueof()
}
for (int i = 0; i < list.size(); i++) {
int j = i * 200;//字体间距
//字段宽度
float text = mTextPaint.measureText(list.get(i).name);
canvas.drawText(list.get(i).name, 300 - text / 2 + j, 1000 + 100, mTextPaint);
//画矩形
Rect rect = new Rect();
rect.left = 300 - 50 + j;//左间距
rect.right = 300 + 50 + j;//右间距
rect.bottom = 1000;//矩形的底部坐标,不能变
rect.top = rect.bottom-list.get(i).score;//到顶部的距离
canvas.drawRect(rect,mRectPaint);
}
}
}
动态添加
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
EditText nameString;
EditText num;
Button button;
MyView myView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//寻找控件
initView();
//点击事件
button.setOnClickListener(this);
}
private void initView() {
myView = findViewById(R.id.myView);
nameString = findViewById(R.id.nameString);
num = findViewById(R.id.num);
button = findViewById(R.id.button);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.button:
//获取输入框中的值
String name = nameString.getText().toString().trim();
String shu = num.getText().toString().trim();
//转成int类型
int num = Integer.parseInt(shu);
myView.addUser(new User(name, num));
break;
}
}
}