简单自定义View

简单的自定义View下,参考李刚疯狂Andriod

package com.utils.MyDemo;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;

import android.util.AttributeSet;
import android.view.View;

public class MyView extends View {
	public float currentX=40;
	public float currentY=40;

	public MyView(Context context) {
		super(context);
	}

	public MyView(Context context, AttributeSet attrs, int defStyle) {
		super(context, attrs, defStyle);
		// TODO Auto-generated constructor stub
	}

	public MyView(Context context, AttributeSet attrs) {
		super(context, attrs);
		// TODO Auto-generated constructor stub
	}

	@Override
	protected void onDraw(Canvas canvas) {
		super.onDraw(canvas);
		Paint paint=new Paint();
		paint.setColor(Color.GREEN);
		canvas.drawCircle(currentX, currentX, 15, paint);

	}

}

主要需要重新父类构造方法,几个方法切记不要删除。

在XML引用如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
    <com.utils.MyDemo.MyView
      android:id="@+id/myView"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
    />

</LinearLayout>

主要是全称,包名+类名

在Activity中修改

public class MainActivity extends Activity {
    /** Called when the activity is first created. */

	private MyView myView=null;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        myView=(MyView)this.findViewById(R.id.myView);
        myView.setMinimumHeight(500);
        myView.setMinimumWidth(300);
        myView.setOnTouchListener(new View.OnTouchListener() {

		public boolean onTouch(View arg0, MotionEvent event) {
				myView.currentX=event.getX();
				myView.currentY=event.getY();
				myView.invalidate();
				return true;
			}
		});
    }
}

以上自定义MyView 主要完成了,随鼠标点击移动事件,MyView 为圆形随之运动。

时间: 2024-07-30 20:40:28

简单自定义View的相关文章

零门槛!ZBLibrary仿微信朋友圈自定义View,就是这么简单!

传统方法是继承现有View再重写方法,这种方式缺点很多: 1.往往不能在xml编辑器中预览效果: 2.比较难实现预期效果,比如设置宽度为wrap_content,实际显示为match_parent等: 3.需要在xml代码中声明自定义View的全路径,经常无法自动补全,需要手动复制粘贴路径: 4.一旦自定义View修改了全路径(移动至其它package.删除等),xml代码中并不会同步,但能编译通过,然后在渲染这个自定义View时崩溃: 5.需要学习draw,measure等平时比较少用的方法:

【Android自定义View实战】之超简单SearchView

[Android自定义View实战]之超简单SearchView 在Android开发中我们经常会用到搜索框,而系统提供的又不尽完美.所以自定义一个比较简单的SearchView. 效果图 实现代码 package cn.bluemobi.dylan.searchview; import android.content.Context; import android.text.Editable; import android.text.TextWatcher; import android.ut

wing带你玩转自定义view系列(2) 简单模仿qq未读消息去除效果

上一篇介绍了贝塞尔曲线的简单应用 仿360内存清理效果 这一篇带来一个  两条贝塞尔曲线的应用 : 仿qq未读消息去除效果. 转载请注明出处:http://blog.csdn.net/wingichoy/article/details/50503630 老规矩,先上效果图: qq的未读消息去除很炫酷,其实就是用了两条贝塞尔曲线,我们按思路来,先来画两个圆,及两条贝塞尔曲线,辅助点为圆心y坐标的一半.我们把下面移动的圆,叫做mMoveCircle. 这样一画,就很简单明了了对不对.只要在拖动的时候

Android零基础入门第24节:自定义View简单使用

当我们开发中遇到Android原生的组件无法满足需求时,这时候就应该自定义View来满足这些特殊的组件需求. 一.概述 很多初入Android开发的程序员,对于Android自定义View可能比较恐惧,但这又是高手进阶的必经之路,这里先不做过多学习,只是简单了解.关于高阶的内容会在后续课程陆续进行学习,欢迎关注分享达人秀(ShareExpert)获取第一手教程. 如果说要按类型来划分的话,自定义View的实现方式大概可以分为三种:自绘控件.组合控件.以及继承控件. 自绘控件:内容都是开发者自己绘

自定义View时,用到Paint Canvas的一些温故,只有想不到没有做不到(实例 1,画一个简单的Activity并且实现他能实现的)

转载请注明出处:王亟亟的大牛之路 这两天都在写Paint Canvas 昨天前天都写的比较基础的一些只是和一些简单的Demo演示,那今天就写一个"大气磅礴的"(之前几篇没看的可以看下传送门:http://blog.csdn.net/ddwhan0123/article/details/50426935) 废话不多,先上效果 YE? 为什么贴2个一模一样的试图,你错了!不带toCopy按钮的那整个Activity都是画的,并且还有点击事件哦! 再贴一下2张图片(上面张为原图,下面一张为效

Android自定义view教程06--Activity的绘制流程简单分析(基于android 4.0源码进行分析)

要明白这个流程,我们还得从第一部开始,大家都知道 在activity里面 setcontentview 调用结束以后 就可以看到程序加载好我们的布局文件了,从而让我们在手机上看到这个画面. 那么我们来看一下这个源码是如何实现的. 1 /** 2 * Set the activity content from a layout resource. The resource will be 3 * inflated, adding all top-level views to the activit

自定义View简单小例子

在开发过程中,尽管Android系统提供了非常多的控件给我们使用,但是还是不能满足我们人类的需求,感觉我们确实在贪婪了,呵呵!这个时候,我们可能就要用到自定义控件,以及自定义属性,应该怎么操作呢? 一般要按照以下几个步骤来操作: 1,继承View或其它控件,重写构造函数onDraw,onMeasure,onTouch等函数. 2,自定义属性的话,就需要在values下建立attrs.xml,在其中定义你需要的属性,详细的属性类型可以参考文章http://www.jb51.net/article/

iOS开发——笔记篇&amp;关于字典plist读取/字典转模型/自定义View/MVC/Xib的使用/MJExtension使用总结

关于字典plist读取/字典转模型/自定义View/MVC/Xib的使用/MJExtension使用总结 一:Plist读取 1 /******************************************************************************/ 2 一:简单plist读取 3 4 1:定义一个数组用来保存读取出来的plist数据 5 @property (nonatomic, strong) NSArray *shops; 6 7 2:使用懒加载的方

自定义View之实现日出日落太阳动效

以前也很羡慕网上大神随手写写就是一个很漂亮的自定义控件,所以我下决心也要学着去写,刚好最近复习了Android View的绘制流程知识,看来看去就是那些个知识点,没点产出总感觉很迷.现在个人呢用的是华为荣耀8手机,碰巧在看自带的天气APP时,滑到最下面看到那个动效图:日出时间和日落时间上边是一个半圆,白天任意的时刻(在日出和日落时间之间)都有对应一个太阳从日出时刻沿着半圆弧做动画特效,个人第一感觉就是:就拿这个来练练手啦!于是拿着笔和纸,画了模型图,甚至求什么sin.cos函数,有点过分了哈,还