布局界面
<com.baidu.tast1.MyView
android:id="@+id/myView"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="8"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:orientation="vertical"
android:layout_weight="3">
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="请输入姓名"
android:id="@+id/ed_name"/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="请输入成绩"
android:id="@+id/ed_score"/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="提交"
android:id="@+id/btn_jiao"
android:gravity="center"/>
</LinearLayout>
MyActivity1
public class MyActivity1 extends AppCompatActivity {
private Button btn_jiao;
private EditText ed_name;
private EditText ed_score;
private MyView myView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.lyout_myview1);
btn_jiao = findViewById(R.id.btn_jiao);
ed_name = findViewById(R.id.ed_name);
ed_score = findViewById(R.id.ed_score);
myView = findViewById(R.id.myView);
btn_jiao.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String sname = ed_name.getText().toString();
String sscore = ed_score.getText().toString();
int score = Integer.parseInt(sscore);
myView.addUser(new User(sname,score));
}
});
}}
MyView
public class MyView extends View {
private Paint mLinePaint,mTextPaint,mRectPaint;
private ArrayList list;
//重写三个方法
public MyView(Context context) {
super(context);
init();
}
public MyView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
init();
}
public MyView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init();
}
public void addUser(User user){
list.add(user);
this.invalidate();
}//抽出画笔方法
private void init() {
mLinePaint=new Paint();
mLinePaint.setColor(Color.BLUE);
mLinePaint.setStyle(Paint.Style.STROKE);//
mLinePaint.setStrokeWidth(2);
mRectPaint =new Paint();
mRectPaint.setColor(Color.RED);
mRectPaint.setStyle(Paint.Style.FILL);
mTextPaint=new Paint();
mTextPaint.setColor(Color.BLUE);
mTextPaint.setTextSize(50);
list = new ArrayList<>();
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawLine(200,1000,1000,1000,mLinePaint);
canvas.drawLine(200,1000,200,200,mLinePaint);
for (int i = 0; i <8 ; i++) {
int a=i*100;
canvas.drawText(String.valueOf(a),50,1000+25-a,mTextPaint);
}
for (int i = 0; i <list.size() ; i++) {
int a=i*200;
float textWidth=mTextPaint.measureText(list.get(i).getName());
canvas.drawText(list.get(i).getName(),300-textWidth/2+a,1000+100,mTextPaint);
canvas.drawText(String.valueOf(list.get(i).getScore()),300-textWidth/2+a,1000-list.get(i).getScore()-50,mTextPaint);
Rect rect = new Rect();
rect.left=300-50+a;
rect.right=300+50+a;
rect.bottom=1000;
rect.top=rect.bottom-list.get(i).getScore();
canvas.drawRect(rect,mRectPaint);
}
}
}