android 自定义ui模版,Android开发之自定义UI组件详解

Android开发自定义UI组件实现红色小球跟随手指移动

要写实现自定义UI组件,要创建一个BallView类,继承View类,在BallView类中创建画笔,然后重写OnDraw()方法和OnTouchEvent()方法。

/**

* Created by nuist__NJUPT on 2021/5/9.

* 自定义UI组件

* View组件在布局中是一个矩形的空白区域,没有任何内容

* 而UI组件之所以有内容,是因为继承了View组件之后在其提供的空白区域上重新绘制外观,这就是UI组件的实现原理

* 利用UI组件的实现原理,可以开发出一些特殊的UI组件,

* 这些自定义UI组件创建时需要定义一个继承View类的子类

* 然后重写View类的一个或者多个方法

*

*/

public class BallView extends View {

public BallView(Context context) { //重写构造方法

super(context);

}

public BallView(Context context, AttributeSet attrs) { //重写构造方法

super(context, attrs);

}

//定义圆形的圆形坐标

public float currentX = 60 ;

public float currentY = 60 ;

//创建画笔

Paint paint = new Paint() ;

@Override

protected void onDraw(Canvas canvas) {//重写OnDraw()方法:当组件要绘制内容时候回调该方法

super.onDraw(canvas);

//设置画笔的颜色为红色

paint.setColor(Color.RED);

//画一个圆心坐标为(60,60),半径为20的圆形

canvas.drawCircle(currentX,currentY,20,paint);

}

@Override

public boolean onTouchEvent(MotionEvent event) { //重写OnTouchEvent()方法:当触摸屏幕时候回调该方法

//得到触摸后圆心坐标所在位置

currentX = event.getX() ;

currentY = event.getY() ;

//通知当前组件绘制

invalidate() ;

return true ; //表明处理方法已经处理该事件

}

}

在自定义组件完成后,需要在java代码中把该组件添加到容器中,才能看到想要的效果。

代码如下:

ublic class CodeUiActivity extends AppCompatActivity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_code_ui);

LinearLayout rootView = (LinearLayout) findViewById(R.id.root_view);//实例化布局对象

BallView ballView = new BallView(this) ; //实例自定义的UI组件

rootView.addView(ballView) ;//将自定义组件添加到容器中

}

}

布局文件需要设置布局的id,需要在Java代码中绑定。

XML文件如下:

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical"

android:id="@+id/root_view"

tools:context="com.example.nuist__njupt.uidesign.CodeUiActivity">

实现效果如下:

f0d4efc4df6e3483924ea44880528cba.gif

总结

到此这篇关于Android开发之自定义UI组件的文章就介绍到这了,更多相关Android自定义UI组件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值