首页 > 其他分享 >APP学习7(自定义view)

APP学习7(自定义view)

时间:2023-03-05 21:33:05浏览次数:29  
标签:自定义 int APP attrs context import Circle android view

1. 自定义view

当系统控件不能满足需求是,需要自定义控件。

自定义View常用的3个方法:

onMeasure()方法:测量尺寸。

onDraw()方法:绘制图像。

onLayout()方法:指定布局中控件的位置。

代码及使用:

额外建立一个类

Circle.java

package com.example.myapp;

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

import androidx.annotation.Nullable;

public class Circle extends View {

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

    public Circle(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
    }

    public Circle(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    public Circle(Context context, @Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes) {
        super(context, attrs, defStyleAttr, defStyleRes);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        int r=50;
        int centerX = getLeft()+r;
        int centerY = getTop()+r;
        Paint p=new Paint();
        p.setColor(Color.BLUE);
        canvas.drawCircle(centerX,centerY,r,p);
    }

}

xml文件中使用:

    <com.example.myapp.Circle
        android:layout_width="200dp"
        android:layout_height="200dp">
    </com.example.myapp.Circle>

 

 这里注意,如果xml使用的时候这样子写回直接覆盖到后面的内容。

    <com.example.myapp.Circle
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
    </com.example.myapp.Circle>

 

标签:自定义,int,APP,attrs,context,import,Circle,android,view
From: https://www.cnblogs.com/hmy22466/p/17181739.html

相关文章

  • APP学习6(RecycleView)
    1.RecycleViewAndroid5.0之后提供的用于在有限的窗口范围内显示大量数据的控件。与ListView相比,展示效果、适配器更好。代码:activity_main.xml<?xmlversion="1.0"......
  • TextView(文本框)详解
    从本节开始我们来一个个讲解Android中的UI控件,本节给大家带来的UI控件是:TextView(文本框),用于显示文本的一个控件,另外声明一点,我不是翻译API文档,不会一个个属性的去扣,只学实......
  • 多对多三种创建方式,django内置序列化组件(drf前身),批量操作数据,分页器思路,自定义
    多对多三种创建方式,django内置序列化组件(drf前身),批量操作数据,分页器思路,自定义分页器的使用,form组件多对多三种创建方式1.全自动创建 classBook(models.Model):......
  • spring找不到配置文件applicationContext.xml
    问题描述:报错信息为Causedby:java.io.FileNotFoundException:classpathresource[applicationContext.xml]cannotbeopenedbecauseitdoesnotexisttarget目......
  • 浏览器控制台Application的local storage和session storage区别
    以下仅作为个人学习使用:(1)localStorage:仅在客户端(浏览器)中保存,不参与服务器的通信.设置:localStorage.setItem('Token',JSON.stringify(res.data))获取:localStorage.g......
  • APP学习5(ListView和Adapter)
    1.ListViewListView是以列表的形式展示数据内容,并且能够根据列表的高度自适应屏幕显示。   2.常用数据适配器(Adapter)BaseAdapter是基本的适配器,实际上是一个抽......
  • Android学习-ListView再视
    之前接触了一点ListView的基础知识,但没有自己去敲,学的不是很深刻,今天我按照教程,写了一个listview的基本实现,基本掌握了listviewlistview的学习是为了给RecyclerView打一下......
  • ApplicationContext和BeanFactory
    ApplicationContext和BeanFactoryBeanFactoryBeanFactory是spring的IOC容器的核心,Spring使用BeanFactory来实例化、配置和管理Bean。常用的BeanFactory核心实现有:D......
  • Android studio ListView的界面
    新建.java文件,定义一个实体类bt_list_adapter_type.java,作为ListView适配器的适配类型;publicclassbt_list_adapter_type{privateStringname;privateintim......
  • C# datagridview的指定行获得焦点
    C#datagridview的指定行获得焦点dataGridView1.CurrentCell=dataGridView1.Rows[0].Cells[0];如果出现错误:不能将当前单元格设置为不可见的单元格。”dataGridView1.Curr......