• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Android > Android View分区域点击实现方案——1.根据坐标范围

Android View分区域点击实现方案——1.根据坐标范围

作者:网友 字体:[增加 减小] 来源:互联网 时间:2017-05-26

网友通过本文主要向大家介绍了android view 坐标,android 获取view坐标,android view类,android view,android recyclerview等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

Android View分区域点击实现方案——1.根据坐标范围


Android View分区域点击实现方案——1.根据坐标范围

标签: Android学习记录


引言

\

好哒,很久没更新博客里关于Android的博文了,有小伙伴经常在群里问或者私聊我:
读者:“Android进阶什么时候出,写什么Git,数据结构,专心写Android进阶…”之类的话,
对此表示我很无奈:

我:\ 读者:\ 我:好吧,怪我… \

嗯,不是自己不想写,主要是自己现在的事情比较多,接触的东西越多,学的东西越多,
除了要完成公司项目外,还有一些其他的东西要学,前段时间刚做完电台的项目,现在
要和另外一个同事搞Launchar,做其中的一个模块,模块里需要用到OpenGL,对于OpenGL
是陌生的,又得花时间去学,就这样,我也想静静地琢磨一些东西,然后写点什么,但是
要终归要回到现实,为了生活,是吧!不过还是决定,不定期给大家写一些自己项目中遇
到的一些东东,比如这节要讲的View分区域点击的实现方案,这是在看到另一个同事的项
目,点击一头猪的不同部位,执行不同的动画,而这头猪是一个自己写的用于显示动画的
View,本节提供的方案就是:根据不同的坐标范围来判断点击区域,好的,话不多说,开
始本节内容!

素材准备

好的,随手打开win自带的画图,画一个400 * 400的图形:

\

代码实现

这里由于时间关系,就直接写一个继承ImageView的View,然后直接通过属性设置图片背景。
关键部分在onTouchEvent部分!这里对点击坐标的区域做判断,然后直接调用Activity里
定义的显示Toast的方法,这里只是方便演示,实际开发中不建议直接把方法暴露出来!

RegionCoordView.java

/**
 * Created by coder-pig on 2016/4/12.
 */
public class RegionCoordView extends ImageView {

    private Context mContext;

    public RegionCoordView(Context context) {
        this(context, null);
    }

    public RegionCoordView(Context context, AttributeSet attrs) {
        super(context, attrs);
        mContext = context;
        init();
    }

    private void init() {
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        if (event.getAction() == MotionEvent.ACTION_BUTTON_PRESS) {
            float x = event.getX();
            float y = event.getY();
            int area = 0;
            if (x >= 0 && x < 200 && y > 0 && y < 200) {
                area = 1;
            } else if (x > 200 && x < 400 && y > 0 && y < 200) {
                area = 2;
            } else if (x > 0 && x < 200 && y > 200 && y < 400) {
                area = 3;
            } else if (x > 200 && x < 400 && y > 200 && y < 400) {
                area = 4;
            }
            ((MainActivity) mContext).showClickArea(area);
        }
        return super.onTouchEvent(event);
    }

}

MainActivity.java

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    public void showClickArea(int area) {
        Toast.makeText(MainActivity.this,"您点击到了第" + area + "块区域!",Toast.LENGTH_SHORT).show();
    }

}

activity_main.xml:




    

运行效果图

小结:

好的,代码还是非常简单的,技巧无非是通过获取TouchEvent的触摸点的x,y坐标,
然后做判断,非常简单,当然这种方案适用于固定普通的规则图形,比如上面的
正方形,三角形,圆形,或者弧形,但是图像越复杂,区域的判断就越麻烦,假如
是下面这种要你判断这样点击区域的呢?不同颜色代表不同响应的点击区域。

\
本节讲述的方案明显是玩不起了…没事,下节给大家提供另外一个解决方案,
根据像素点来判断点击区域~
PS:因为AS的原因,这里贴的代码是没运行过的,理论可行哈,实际不知道…
完整代码和运行截图,明天到公司在贴下!本来想12点前就睡觉的,我真是服了这
长城宽带,各种垃圾,翻墙卡成翔,结果下个gradle下了我1个多小时…然后还是没下完,
我真不知道说什么好…
\

</div> </div>

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Android View分区域点击实现方案——1.根据坐标范围

相关文章

  • 2017-05-26自动完成文本框(AutoCompleteTextView与MultiAutoCompleteTextView)关联适配器,文本框autocomplete
  • 2017-05-26android——从零开始,android从零开始
  • 2017-05-26仿微信底部TAG完美渐变,tag渐变
  • 2017-05-26利用SQL实现简单的分布式锁
  • 2017-05-26Android UI学习笔记 之 使用ViewPager实现导航
  • 2017-05-26Android程序中使用iconfont心得,androidiconfont
  • 2017-05-26Android常用命令行-ADB,android-adb
  • 2017-05-26Android通知栏沉浸式/透明化完整解决方案,root不完整解决方法
  • 2017-05-26android动画详解一 概述
  • 2017-05-228.3.5 Paint API之—— Xfermode与PorterDuff详解(二)

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • Android网络编程(四)从源码解析Volley
    • Android-绘制爱心,android-绘制
    • nginx设置泛域名解析的https证书过程
    • Android中使用ExpandableListView实现微信通讯录界面(完善仿微信APP),expandablelistview
    • RK3288开发过程中遇到的问题点和解决方法之Framework,rk3288framework
    • Linux内核系列—11.操作系统开发之ELF格式,linuxelf
    • Android IPC 之 AIDL(一)
    • Android之网络编程利用PHP操作MySql插入数据(四),androidmysql
    • Android学习笔记-TextView(文本框)(一),android-textview
    • VMware中ubuntu忘记密码的解决办法(转)

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有