18.自定义UI(画布)-单点触摸-多点触摸
来源:互联网 发布:网站推荐 无病毒 知乎 编辑:程序博客网 时间:2024/06/05 15:42
一.知识概要
二.案例
1.自定义控件的触摸事件(返回值问题)效果图:
思路:
具体代码实现:
a.布局文件activity_main.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:id="@+id/root" tools:context="com.zking.android18_diyui_touch.MainActivity"> <com.zking.android18_diyui_touch.MyButton android:layout_width="300px" android:layout_height="300px" android:id="@+id/mbtn_main_button" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="我是系统自带的(控件)按钮" /></LinearLayout>b.Java代码
MyButton.java
package com.zking.android18_diyui_touch;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.Path;import android.support.annotation.Nullable;import android.util.AttributeSet;import android.util.Log;import android.view.MotionEvent;import android.view.View;/** * 自定义控件 * 把按钮MyButton当做Button使用 */public class MyButton extends View { public MyButton(Context context) { super(context); } public MyButton(Context context, @Nullable AttributeSet attrs) { super(context, attrs); } public MyButton(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } public MyButton(Context context, @Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes);//报错:Alt+回车-->Disable 跳过检查 } /** * 画一个按钮 * canvas 画布 * Paint 画笔 * canvas.draw 点出你要画的东西 */ @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); canvas.drawColor(Color.RED);//背景颜色 //1.实例化路径 Path path=new Path(); path.moveTo(100,100);//默认的起始坐标(线的开始坐标) path.lineTo(300,100);//开始画线(画到哪里去:线的终点坐标) 左300,高100 path.lineTo(150,300); path.lineTo(200,50); path.lineTo(250,300); path.lineTo(100,100); //2.实例化一个画笔 Paint paint=new Paint(); paint.setColor(Color.YELLOW);//给画笔设置颜色(即实心的星星的颜色) paint.setStyle(Paint.Style.STROKE);//设置空心STROKE paint.setStrokeWidth(20);//设置画笔的粗细(即星星线条的粗细) //a.画路径 canvas.drawPath(path,paint); paint.setStrokeWidth(3);//设置画笔的粗细 paint.setColor(Color.BLUE);//设置字的颜色 paint.setTextSize(30); //设置字的大小 //b.画文字(课外:让字动起来) canvas.drawText("萌萌哒",150,150,paint);//字的位置 } //没有调,但是只要触摸了就自动调用这个事件 @Override public boolean onTouchEvent(MotionEvent event) { Log.i("test","自定义的按钮的触摸事件---->回调"); return false; }}MainActivity.java
package com.zking.android18_diyui_touch;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.util.Log;import android.view.MotionEvent;import android.view.View;import android.widget.LinearLayout;public class MainActivity extends AppCompatActivity { private MyButton mbtn_main_button; private LinearLayout root; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mbtn_main_button = (MyButton) findViewById(R.id.mbtn_main_button); root = (LinearLayout) findViewById(R.id.root); //给自定义按钮设置触摸事件 mbtn_main_button.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { Log.i("test","自定义的按钮的触摸事件---->监听"); return false;//true与false表示事件会不会传播(回调) false继续调下一个 true不会传播 } }); //给root设置触摸事件(布局的事件) root.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { Log.i("test","自定义的按钮所在布局的触摸事件---->监听"); return false; } }); } //Activity的事件 @Override public boolean onTouchEvent(MotionEvent event) { Log.i("test","自定义的按钮所在Activity的触摸事件---->回调"); return true; }}
2.单点触摸
阅读全文
0 0
- 18.自定义UI(画布)-单点触摸-多点触摸
- Android 自定义UI-单点触摸-多点触摸
- Android-单点触摸-多点触摸
- 关于cocos2dx多点触摸和单点触摸
- 单点触摸和多点触摸的使用方法
- Android单点触摸与多点触摸
- Cocos2d-3.x_触摸事件(单点触摸和多点触摸)
- 5.触摸touch,单点触摸,多点触摸,触摸优先和触摸事件的吞噬
- android 单点和多点触摸事件
- unity3d FingerGestures 单点 多点触摸 手势
- jsb 多点与单点触摸设置
- 【Unity】unity3d FingerGestures 单点 多点触摸 手势
- 多点触摸与单点触摸接口主要区别
- Android游戏开发之单点触摸与多点触摸
- Cocos2d触摸:多点触摸
- 多点触摸
- 多点触摸
- 多点触摸
- Python 系统监控管理模块psutil学习
- android developer tiny share-20170708
- vc mfc Edit SetFocus 设置焦点 无效 失败
- 7月记录贴
- UVA
- 18.自定义UI(画布)-单点触摸-多点触摸
- HDU 1281 棋盘游戏 (枚举+匈牙利找关键位置)
- Spotfire简介
- hdu 2072 : 单词数 (水)
- React基本原理——路由
- Struts1 之Hello Word
- React——答疑解惑
- 无需插件只使用浏览器下载b站视频
- jQuery类选择器和模糊选择