自定义UI

来源:互联网 发布:网络上dm是什么意思 编辑:程序博客网 时间:2024/06/07 18:57

首先,先写一个JAVA类,自定义一个按钮

package com.example.y2_android18_touch;import android.content.Context;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.DrawFilter;import android.graphics.Paint;import android.graphics.Path;import android.support.annotation.Nullable;import android.util.AttributeSet;import android.util.Log;import android.view.MotionEvent;import android.view.View;/** * Created by Administrator on 2017/7/8 0008. */public class MyButton extends View {    public MyButton(Context context) {        super(context);    }    public MyButton(Context context, @Nullable AttributeSet attrs) {        super(context, attrs);    }    public MyButton(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {        super(context, attrs, defStyleAttr);    }    public MyButton(Context context, @Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes) {        super(context, attrs, defStyleAttr, defStyleRes);    }//    /**//     *//     * @param canvas 画布//     *         Paint  画笔//     */    @Override    protected void onDraw(Canvas canvas) {        super.onDraw(canvas);        Path path = new Path();        path.moveTo(95, 100);        path.lineTo(305, 100);        path.lineTo(130, 240);        path.lineTo(200, 20);        path.lineTo(270, 240);        path.lineTo(95, 100);        //实例化一个画笔        Paint paint = new Paint();        paint.setColor(Color.RED);        //画路径        canvas.drawPath(path, paint);        //设置空心//        paint.setStyle(Paint.Style.STROKE);        //设置画笔的粗细//        paint.setStrokeWidth(20);    }    @Override    public boolean onTouchEvent(MotionEvent event) {        Log.i("test", "自定义的按钮的触摸事件---->回调");        return false;    }}
然后在activity_main.xml里面使用
<?xml version="1.0" encoding="utf-8"?><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:layout_height="match_parent"    android:orientation="vertical"    android:id="@+id/root"    tools:context="com.example.y2_android18_touch.MainActivity">    <com.example.y2_android18_touch.MyButton        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:id="@+id/mbtn_main_button"        /></LinearLayout>
最后在activity_main.xml相对应的activity里面调用这个布局
package com.example.y2_android18_touch;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.util.Log;import android.view.MotionEvent;import android.view.View;import android.widget.LinearLayout;public class MainActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);}