iis服务器助手广告广告
返回顶部
首页 > 资讯 > 移动开发 >Android编程之View简单学习示例
  • 209
分享到

Android编程之View简单学习示例

view示例学习Android 2022-06-06 09:06:40 209人浏览 薄情痞子
摘要

本文实例讲述了Android编程之View简单学习示例。分享给大家供大家参考,具体如下: View,是Android的一个超类,这个类几乎包含了所有的屏幕类型。每一个View都

本文实例讲述了Android编程之View简单学习示例。分享给大家供大家参考,具体如下:

View,是Android的一个超类,这个类几乎包含了所有的屏幕类型。每一个View都有一个用于绘图的画布,这个画布可以进行任意扩展。

游戏开发中叶可以自定义视图(View),这个画布的功能更能满足我们在游戏开发中的需要。在Android中,任何一个View类都只需重写onDraw 方法来实现界面显示,自定义的视图可以是复杂的3D实现,也可以是非常简单的文本形式等。

游戏的核心是不断地绘图和刷新界面,Android中提供了 invalidate 方法来实现界面刷新。注意,invalidate 不能直接在线程中调用, 就是不可以在子线程中调用,因此它违背了 Android的单线程模型:Android UI操作并不是线程安全的,并且这些操作必须在UI 线程中执行,因此Android中最常用的方法就是利用Handler来实现UI线程的更新。 其实用 AsyncTask 也可以。

具体示例:

Activity:


public class Activity01 extends Activity { 
  private static final String TAG = "mThread"; 
  private static final int REFRESH = 0x000001; 
  private GameView mGameView = null; 
  @Override 
  public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    this.mGameView = new GameView(this); 
    mGameView.x = 320.0f; 
    mGameView.y = 120.0f; 
    setContentView(mGameView); 
    new Thread(new GameThread()).start(); 
  } 
  Handler myHandler = new Handler() { 
    @Override 
    public void handleMessage(Message msg) { 
      switch (msg.what) { 
      case Activity01.REFRESH: 
        mGameView.invalidate();   // repaint View 
        break; 
      } 
      super.handleMessage(msg); 
    } 
  }; 
  class GameThread implements Runnable { 
    @Override 
    public void run() { 
      while (!Thread.currentThread().isInterrupted()) { 
        Message message = new Message(); 
        message.what = Activity01.REFRESH; 
        Activity01.this.myHandler.sendMessage(message); 
        try { 
          Thread.sleep(1000); 
        } catch (InterruptedException e) { 
          Thread.currentThread().interrupt(); 
        } 
      } 
    } 
  } 
  @Override 
  public boolean onTouchEvent(MotionEvent event) { 
    if(event.getAction() == MotionEvent.ACTION_DOWN){ 
      mGameView.x = event.getX(); 
      mGameView.y = event.getY(); 
    } 
    return true; 
  } 
  @Override 
  public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if(keyCode == KeyEvent.KEYCODE_BACK){ 
      this.finish(); 
    } 
    return true; 
  } 
}

gameview:


public class GameView extends View { 
  int count = 0; 
  float x = 0, y = 0; 
  public GameView(Context context) { 
    super(context); 
  } 
  public void onDraw(canvas canvas) { 
    if (count < 100) { 
      count++; 
    } else { 
      count = 0; 
    } 
    Paint mPaint = new Paint(); 
    switch (count % 4) { 
    case 0: 
      mPaint.setColor(Color.BLUE); 
      break; 
    case 1: 
      mPaint.setColor(Color.GREEN); 
      break; 
    case 2: 
      mPaint.setColor(Color.RED); 
      break; 
    case 3: 
      mPaint.setColor(Color.YELLOW); 
      break; 
    default: 
      mPaint.setColor(Color.WHITE); 
      break; 
    } 
    canvas.drawRect(x - 40, y - 20, x + 40, y + 20, mPaint); 
  } 
}

运行效果:

完整实例代码代码点击此处本站下载。

希望本文所述对大家Android程序设计有所帮助。

您可能感兴趣的文章:android教程之textview解析带图片的html示例android开发教程之实现listview下拉刷新和上拉刷新效果android开发教程之view组件添加边框示例Android开发笔记之探秘WEBViewandroid中GridView的用法示例Android中实现为TextView添加多个可点击的文本Android中通过view方式获取当前Activity的屏幕截图实现方法Android中使用ListView实现漂亮的表格效果Android View如何测量


--结束END--

本文标题: Android编程之View简单学习示例

本文链接: https://www.lsjlt.com/news/26413.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Android编程之计时器Chronometer简单示例
    本文实例讲述了Android计时器Chronometer。分享给大家供大家参考,具体如下:Android中Chronometer控件继承自TextView,这个组件可以用1秒的时间间隔进行计时,并显示出计时结果。就是我们常说的计时器工具。p...
    99+
    2023-05-30
    android 计时器 chronometer
  • Android学习之Broadcast的简单使用
    本文实例为大家分享了Android学习之Broadcast的使用方法,供大家参考,具体内容如下实现开机启动提示网络的广播package com.example.luobo.broadcasttest;import android.conte...
    99+
    2023-05-30
    android broadcast roi
  • Android编程简单实现九宫格示例
    本文实例讲述了Android编程简单实现九宫格。分享给大家供大家参考,具体如下:实现的步骤 一个整体的容器部分。就是上图中包括整个图片项个各个部分,这里我们使用gridView(表格布局)来实现整个界面里需要注意的是 “重复的部分”,就是 ...
    99+
    2023-05-31
    android 九宫格 roi
  • android学习笔记之View的滑动
    目录前言1.layout方法2.接下来,我们看看offsetLeftAndRight()与offsetTopAndBottom()方法3.第三个方法:LayoutParam...
    99+
    2023-01-03
    android页面滑动 android view android view的移动滑动
  • android开发实践之ndk编译命令简单示例
    前言Android提供了NDK工具,用来编译native代码(c/c++),该工具配置好了相关的交叉编译环境和工具链,只需要你简单地编写几个.mk文件即可将你的c/c++代码编译为Android的java工程/Android手机可以识别、加...
    99+
    2023-05-31
    android ndk编译 命令
  • Android编程之菜单Menu的创建方法示例
    本文实例讲述了Android编程之菜单Menu的创建方法。分享给大家供大家参考,具体如下:在res目录下的menu文件夹下创建一个main.xml文件,内容如下:<?xml version="1.0" encoding="ut...
    99+
    2023-05-30
    android 菜单 menu
  • android蓝牙简单开发示例教程
    目录概述1、权限申请2、打开蓝牙3、接收蓝牙状态的改变4、扫描其他的设备5、蓝牙配对6、获取已经配对的设备7、连接设备概述 前段时间学习了一些蓝牙开发的知识,记录一下Android中...
    99+
    2024-04-02
  • vue3学习笔记简单封装axios示例实现
    目录简介openapi基本配置拦截器api请求数据渲染简介 axios是一个基于promise的网络请求库,管理后台使用的场景通常 获取后端api数据,然后交给页面渲染 还是在前面的...
    99+
    2024-04-02
  • Vue3学习之表单的使用示例详解
    目录1.Vue3表单概述2.双向数据绑定3.复选框绑定4.select 列表绑定5.修饰符1.Vue3表单概述 我们可以用 v-model 指令在表单 <input>、&...
    99+
    2022-12-08
    Vue3表单使用 Vue3表单 Vue 表单
  • Pythonasyncio异步编程简单实现示例
    目录一、asyncio事件循环简介二、async协程函数简介三、await关键字四、async异步编程简单实现今天继续给大家介绍Python相关知识,本文主要内容是Python as...
    99+
    2023-01-18
    Python asyncio异步 Python asyncio
  • Java编程异常简单代码示例
    练习1写一个方法void triangle(int a,int b,int c),判断三个参数是否能构成一个三角形。如果不能则抛出异常IllegalArgumentException,显示异常信息:a,b,c “不能构成三角形”;如果可以构...
    99+
    2023-05-30
    java 异常 ava
  • Android学习之菜单的使用方法
    本文实例为大家分享了Android学习之菜单使用的具体代码,供大家参考,具体内容如下 Android中菜单包含上下文菜单和选项菜单两种类型。 使用统一的菜单类来管理菜单: Menu、...
    99+
    2024-04-02
  • Socket编程简单示例(聊天服务器)
    目录传统Socket基于BIO实现一个简单的聊天服务器Socket编写一个简单的Http服务器基于NIO的非阻塞简单服务器实现基于NIO的Selector的简单服务器实现总结传统So...
    99+
    2023-02-18
    socket编程java java socket网络编程 Java socket
  • QT学习之[QTreeWidgetItem]详解,示例
    QTreeWidgetItem 树形控件,当选中顶层树形节点时,子节点全部被选中,当取消选择顶层数节点时,子节点全部被取消,当选中子节点时候,父节点显示被选中,示例如下: 用法以及API详解如图: 图...
    99+
    2023-09-21
    qt 学习 ui c++
  • ElasticSearch学习之ESMapping实战示例
    目录什么是MappingMapping 属性字段类型(type)详解字符串类型数字类型日期类型布尔类型二进制类型范围类型复合数据类型数组类型对象类型嵌套类型地理数据类型地理坐标(ge...
    99+
    2023-01-31
    ElasticSearch ES Mapping ES Mapping
  • 学习python:练习5.简单红包程序
    快过年了,最近不少群里都发红包,晚上突然想用这个红包做个练习,简单实现了一下,效果不错哦觉得稍微有点困难的地方是红包的算法,想了久了点,也不知道微信的算法是咋样的...效果:代码:# 简单的拼手气红包 import random from...
    99+
    2023-01-31
    红包 简单 程序
  • Python基础学习之简单理解函数
    目录一、什么是函数二、无参函数三、有参函数四、实例五、return的使用六、结语一、什么是函数 注意不要和数学中的函数搞混了 那么到底什么是函数呢? 函数其实就是当我们在程序中需要大...
    99+
    2024-04-02
  • C++程序简单示例
    目录1、注释2、include3、main函数4、命名空间5、cout前言: 很多小伙伴反应想要用C++刷LeetCode,但是对于C++语法不熟悉,对于很多算法和数据结构也不够了解...
    99+
    2024-04-02
  • android音乐播放简单实现的简单示例(MediaPlayer)
    利用MediaPlayer完成一个最简单的音乐播放。这个基本的控制掌握后,可直接利用为背景乐的控制。为了能够实现播放,在界面方面,我们需要三个控制按钮,分别是:Play(播放)、Pause(暂停)、Stop(停止)请看activity_ma...
    99+
    2023-05-30
    android 音乐 播放
  • python学习—几个简单小程序
    刚开始学Python,基础很重要,告诫自己不要好高骛远,把基础打好才是最重要的。 下面用几个简单的题目来巩固一下所学: 输出1到100之间所有的偶数 输出1到100之间所有的奇数 输出1-2+3-4+…+99-100的和 ...
    99+
    2023-01-31
    几个 简单 程序
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作