自定义控件入门(二)

上一次我们讲了一堆实现自定义控件的理论基础,列举了View类一些可以重写的方法,我们对这些方法的重写是我们继承View类来派生自定义控件的关键


我通过一个最简单的例子给大家展示了这一个过程,无论是多么复杂的自定义控件,思路总是这样子的,但是因为我们仅仅重写了onDraw方法使得大家觉得怪怪的,作为一个控件,我们居然还要为了他的实现为其增加麻烦的监听,这就不能叫做控件了。

下面再给大家介绍一个经常重写的方法法:publicboolean onTouchEvent (MotionEvent event)


通过这个方法,我们就把写在Activity的监听部分内置在控件内部了,这才能叫做一个完整的控件,其功能是建立一片区域,并其中包含一个可以根据手指触摸而改变位置的小球。

下面我们来看一下这个触摸事件方法:

 publicboolean onTouchEvent (MotionEvent event)


Added in API level 1


Implement this method to handle touch screen motionevents.

If this method is used to detect click actions, it isrecommended that the actions be performed by implementing and calling performClick(). This willensure consistent system behavior, including:

obeying click sound preferences

dispatching OnClickListener calls

handling ACTION_CLICK whenaccessibility features are enabled


Parameters

event

The motion event.


Returns

True if the event was handled, false otherwise.

 

这样我们就可以把我们刚才在Activity的类中做的工作放到我们的自定义控件中来实现

只要去掉刚才的setter 和 getter 然后重写这个触摸事件的方法就可以了:

下面我贴一下代码:

Activity的代码:

import com.example.myeasyview.view.DrawView;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;

public class MainActivity extends Activity {
	// 定义DrawView组件
	DrawView drawView = null;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
	}
}
简介了好多有木有!


自定义View的代码:

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;

public class DrawView extends View {

	private Context context;  
    
    private float CircleX = 100;  
    private float CircleY = 100;  
    private float CircleR = 10;

	// 构造方法
	public DrawView(Context context, AttributeSet attrs) {
		super(context, attrs);
		this.context = context;
	}

	// 重写ondraw方法
	@Override
	public void onDraw(Canvas canvas) {
		super.onDraw(canvas);
		// 创建画笔
		Paint paint = new Paint();
		// 设置画笔颜色
		paint.setColor(Color.RED);
		// 画出小球
		canvas.drawCircle(CircleX, CircleY, CircleR, paint);
	}

	@Override  
    public boolean onTouchEvent(MotionEvent motionevent){  
          
        CircleX  = motionevent.getX();  
        CircleY  = motionevent.getY();  
        this.invalidate();  
        return true;  
          
    } 
}
这样就简洁了好多!


还有xml布局文件:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" >

    <com.example.myeasyview.view.DrawView
        android:id="@+id/drawView"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >
    </com.example.myeasyview.view.DrawView>

</RelativeLayout>
这样我们的第二个教程也就先到这里了,这次的主题不是这个ontouch方法,而是要告诉大家,自定义控件的核心是重写这些方法,并添加所需要的逻辑,View的方法不多也不少,我就用这个例子给大家抛砖引玉一下,希望大家在自定义自己的控件并选择了继承View这条路时,要花时间去了解和理解这些方法的重写方法,这是十分重要的。  下次再给大家介绍一下 如果自定义的View需要有自定义的属性我们该如何处理,下一讲也将会是这个系列完结篇了,因为自定义View之路还有很远,我也没有举一些很难的例子,我认为基础知识只有这些,学习了这些之后自定义控件的基础也就讲完了,剩下的是大家在基础之上发挥了!之后如果有比较好的例子我还会继续补充的。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Android Studio 是一款常用的 Android 应用开发工具,用于编写 Android 应用程序。要创建自定义控件,您需要在 Android Studio 中使用 Java 或 Kotlin 编程语言编写代码。 以下是创建自定义控件的基本步骤: 1. 创建一个新的 Java 或 Kotlin 类,并将其扩展为 View 类或其子类,以便您可以在其中添加自定义逻辑。 2. 在构造函数中设置自定义属性(如果有的话),以便在 XML 布局中使用它们。 3. 重写 onDraw() 方法以绘制控件的外观。 4. 实现所需的触摸事件或动画,以便控件可以与用户进行交互。 5. 在布局文件中使用自定义控件。 6. 运行应用程序并测试您的自定义控件。 希望这能帮助您入门 Android Studio 中创建自定义控件的过程。 ### 回答2: Android Studio是一款用于Android开发的集成开发环境。在进行应用程序的布局时,我们可以调用系统提供的控件进行嵌入,但是有时候我们需要开发一些自己的控件,以满足特殊的需求。 自定义控件是指开发者可以通过继承系统控件或者View类,在原控件基础上进行修改或新增,以满足自己的需求,并提供相应的功能和界面。自定义控件是应用程序开发中的重要一环,可以提高程序的可读性和复用性,使UI更具有个性和美观。 自定义控件的开发需要经过几个重要的步骤。首先,我们需要根据需求选择合适的父类,一般选择继承View或其子类,以便于对控件的各个属性、方法进行定制化的修改;然后在控件的类中定义各种需要的属性,包括尺寸、颜色、字体等等;接着,我们需要处理控件的样式和外观,例如背景、边框、圆角等;最后,我们需要添加控件的功能,例如事件处理、刷新UI等等。 除了以上简单的步骤,自定义控件的开发还涉及到一些高级的技术,例如自定义属性、自定义ViewGroup、画布操作等等。自定义属性可用于方便地配置控件;自定义ViewGroup则可以将多个控件进行整体布局;画布操作则可以实现控件的高级绘制效果。 在Android Studio中,可以通过自带的工具来支持自定义控件的开发。使用该工具,可以快速轻松地创建自定义控件,而无需繁琐的手动代码编写。同时,也可以通过该工具来修改已有的自定义控件,并将其添加到应用程序中。掌握Android Studio自定义控件开发,将有助于开发人员更好地完成各种Android应用程序的开发。 ### 回答3: Android Studio是一种非常流行的Java开发工具,针对在Android设备上运行的应用程序进行定制的自定义UI控件。以下是有关使用Android Studio创建自定义控件的详细解释。 首先,开发人员需要了解Android操作系统的基本视图层次结构。在Android应用程序中,屏幕上的一切都被认为是视图,这些视图可以是简单的单个元素,也可以是更复杂的嵌套组合。每个视图都有一个类,用于定义其外观和行为。 为了创建自定义控件,我们需要创建一个新的视图类,该类将扩展现有的视图类。这可以通过继承现有的Android SDK视图类来实现,比如TextView或Button。 如果需要定制视图的外观,可以在新类中重写父类的某些方法。例如,可以重写onDraw()方法来绘制自定义形状或颜色。 要添加自定义行为,可以通过在类中添加新方法来实现。例如,如果要创建一个绘制流程图的视图,可以创建一个绘制线条和节点的方法。 在创建与视图关联的XML布局文件时,必须手动定义新视图类的属性。可以使用自定义属性声明XML命名空间,并将属性添加到视图类中。这些属性可以在代码中编程访问,并允许开发人员在XML和Java代码中控制视图。 一旦创建了自定义控件类,就可以像使用任何其他视图类一样添加它们到XML布局文件中。 总而言之,在Android Studio中开发自定义控件是一项具有挑战性但有益的任务。理解应用程序的视图层次结构和重写现有控件类的方法可能需要一些时间和实践,但最终的结果是定制外观和行为的完全可控控件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值