Android-自定义View的使用

来源:互联网 发布:网络线上赌博 编辑:程序博客网 时间:2024/06/11 23:54

Android所有的控件都继承至View,所以我们可以通过继承View来实现自己想要的控件,具体代码如下:

1,创建自定义View 类

import android.content.Context;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.Canvas;import android.graphics.Paint;import android.util.AttributeSet;import android.view.View;public class CustomView extends View {    /*    画笔,用来绘制View     */    private Paint p = new Paint();    /**     * 此构造方法用于代码生成自定义View实例     * @param context     */    public CustomView(Context context) {        super(context);    }    /**     * 此构造方法用于XML文件生成自定义View实例     * @param context     * @param attrs     */    public CustomView(Context context, AttributeSet attrs) {        super(context, attrs);    }    /**     * 重写onDraw方法即可实现自定义的View效果     * @param canvas     */    @Override    protected void onDraw(Canvas canvas) {        /*        画一个图片         */        Bitmap bitmap = BitmapFactory.decodeResource(getResources(),R.mipmap.ic_launcher);        /*        100,100是图片所在的位置,可自定义        */        canvas.drawBitmap(bitmap,100,100,p);    }    /**     * 重写此方法可以监听点击事件     * @param l     */    @Override    public void setOnClickListener(OnClickListener l) {        super.setOnClickListener(l);    }}

2,布局文件中添加自定义View 的效果

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:paddingBottom="@dimen/activity_vertical_margin"    android:paddingLeft="@dimen/activity_horizontal_margin"    android:paddingRight="@dimen/activity_horizontal_margin"    android:orientation="vertical"    android:paddingTop="@dimen/activity_vertical_margin">    <githan.cn.customview.CustomView        android:id="@+id/custom_view"        android:layout_width="match_parent"        android:layout_height="match_parent" /></LinearLayout>

3,MainActivity中获取自定义View实例

package githan.cn.customview;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.Toast;public class MainActivity extends AppCompatActivity {    private CustomView customView;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        /*        找到自定义的View        */        customView = (CustomView) findViewById(R.id.custom_view);        /*        设置View的监听事件        */        customView.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                Toast.makeText(MainActivity.this, "onclick", Toast.LENGTH_SHORT).show();            }        });    }}

完成这三步之后你的自定义View就可以正常显示啦,上面的例子使用自定义View画了一个图标,如下图所示
这里写图片描述

关于Paint和Canvas的使用可以阅读以下文章:
http://www.jianshu.com/p/c29d3f3b7112

如果希望自定义View能够动起来,可以通过Thread线程改变View的x, y坐标,然后调用postInvalidate()方法通知View重绘即可,这里不在叙述。

0 0
原创粉丝点击