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
- Android 自定义View的使用
- Android自定义View的使用
- android!自定义view的使用
- Android-自定义View的使用
- android 自定义View使用
- Android中自定义View的MeasureSpec使用
- Android中自定义View的MeasureSpec使用
- Android之自定义View的使用
- Android中自定义View的MeasureSpec使用
- 【Android】自定义View之Canvas的使用
- Android中自定义View的MeasureSpec使用
- Android中自定义View的MeasureSpec使用
- android 自定义View的使用(一)
- android:自定义View的使用(二)
- Android中自定义View的MeasureSpec使用
- Android中自定义View的MeasureSpec使用
- Android中自定义View的MeasureSpec使用
- Android中自定义View的MeasureSpec使用
- SwipeRefreshLayout+RecyclerView实现下拉刷新上拉加载功能
- Java虚拟机工作原理详解
- C# 键盘响应事件及键值对照表
- iOS简单直播实现(一:创建本地rtmp服务器)Mac上搭建直播服务器Nginx+rtmp
- AutoCompleteTextView的简单使用
- Android-自定义View的使用
- ACdream1417-Numbers
- 微信自动关闭内置浏览器
- 全局函数如何跨文件使用
- Log4j的使用教程
- C#学习笔记-Winform 界面笔记
- ThinkPHP框架学习之String类
- splice()方法删除数组中不连续的几项
- Cocoapods提高速度的镜像