`
hududumo
  • 浏览: 238866 次
文章分类
社区版块
存档分类
最新评论

Android SurfaceView 运用实例详解

 
阅读更多

package gongzi.co.cc;

import android.app.Activity;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.os.Bundle;
import android.view.SurfaceView;
import android.view.View;
import android.view.View.OnClickListener;

public class SurfaceActivity extends
Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(
Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final SurfaceView surfaceView = (SurfaceView)

findViewById(R.id.surfaceView1);
// surfaceView.setClickable(true);
surfaceView
.setOnClickListener(new

OnClickListener() {

@Override
public void onClick(
View v) {
// TODO Auto-generated

method stub
//SurfaceView surfaceView

= (SurfaceView) v;
Canvas canvas =

surfaceView

.getHolder()

.lockCanvas();
Paint paint = new

Paint();

paint.setColor

(Color.BLUE);
paint.setAntiAlias

(true);
paint.setTextSize(24);
canvas.drawText(

"loveyou",
0, 100,
paint);
surfaceView

.getHolder()

.unlockCanvasAndPost(

canvas);

}
});
}
}


---------------2:主main
package gongzi.co.cc;

import android.app.Activity;
import android.os.Bundle;

public class SurfaceActivity extends
Activity {
@Override
protected void onCreate(
Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(new Click(this));
}

}

-----------SurfaceActivity.java
package gongzi.co.cc;

import android.app.Activity;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.view.SurfaceHolder;
import android.view.SurfaceView;

public class Click extends SurfaceView
implements
SurfaceHolder.Callback {

public Click(Context context) {
super(context);
// TODO Auto-generated constructor stub
getHolder().addCallback(this);
}

@Override
public void surfaceChanged(
SurfaceHolder holder,
int format, int width,
int height) {
// TODO Auto-generated method stub

}

@Override
public void surfaceCreated(
SurfaceHolder holder) {
// TODO Auto-generated method stub

Canvas canvas = holder
.lockCanvas();
Paint paint = new Paint();
paint.setColor(Color.BLUE);
paint.setAntiAlias(true);
paint.setTextSize(26);
canvas.drawText(
"love you gogogogogoigogoi",
100, 100, paint);
holder.unlockCanvasAndPost(canvas);

}

@Override
public void surfaceDestroyed(
SurfaceHolder holder) {
// TODO Auto-generated method stub

}

}

------------图片和轨迹球
package gongzi.co.cc;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.view.MotionEvent;
import android.view.SurfaceView;

public class Click extends SurfaceView {
float left;
float top;
Bitmap mBitmap = BitmapFactory
.decodeResource(
getContext()
.getResources

(),
R.drawable.ic_launcher);

public Click(Context context) {
super(context);

// TODO Auto-generated constructor stub
}

@Override
public boolean onTouchEvent(
MotionEvent event) {
// TODO Auto-generated method stub
left = event.getX();
top = event.getY();
doDraw();
return super
.onTouchEvent(event);
}

@Override
public boolean onTrackballEvent(
MotionEvent event) {
// TODO Auto-generated method stub
left = event.getX();
top = event.getY();
doDraw();
return super
.onTrackballEvent(event);
}

private void doDraw() {
// TODO Auto-generated method stub
Canvas canvas = getHolder()
.lockCanvas();
canvas.drawBitmap(mBitmap,
left, top, null);
getHolder()
.unlockCanvasAndPost(
canvas);

}

}

-------------------半透明 桌面
package gongzi.co.cc;

import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.PixelFormat;
import android.view.MotionEvent;
import android.view.SurfaceHolder;
import android.view.SurfaceView;

public class Click extends SurfaceView
implements
SurfaceHolder.Callback {
float left;
float top;
Bitmap mBitmap = BitmapFactory
.decodeResource(
getContext()
.getResources

(),
R.drawable.ic_launcher);

public Click(Context context) {
super(context);
// TODO Auto-generated constructor stub
getHolder()
.setFormat(

PixelFormat.TRANSLUCENT);
getHolder().addCallback(this);
}

@Override
public void surfaceChanged(
SurfaceHolder holder,
int format, int width,
int height) {
// TODO Auto-generated method stub

}

@Override
public void surfaceCreated(
SurfaceHolder holder) {
// TODO Auto-generated method stub

doDraw();

}

@Override
public void surfaceDestroyed(
SurfaceHolder holder) {
// TODO Auto-generated method stub

}

@Override
public boolean onTouchEvent(
MotionEvent event) {
// TODO Auto-generated method stub
left = event.getX();
top = event.getY();
doDraw();
return super
.onTouchEvent(event);
}

void doDraw() {
// TODO Auto-generated method stub
Canvas canvas = getHolder()
.lockCanvas();
canvas.drawBitmap(mBitmap,
left, top, null);
getHolder()
.unlockCanvasAndPost(
canvas);

}

}

---------manifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="gongzi.co.cc"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk android:minSdkVersion="8" />

<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:label="@string/app_name"
android:name=".SurfaceActivity"
android:theme="@android:style/Theme.Translucent"

>
<intent-filter >
<action android:name="android.intent.action.MAIN" />

<category

android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>

</manifest>

分享到:
评论

相关推荐

    vue3.2+ts+vite+admin 开发的admin管理系统模板

    vue3.2+ts+vite+admin 开发的admin管理系统模板

    chromedriver-win64-124版本浏览器驱动

    自动化测试工具selenium使用的浏览器驱动下载 chromedriver驱动压缩包 Java web 自动化测试工具需要使用的chromedriver浏览器驱动

    node-v8.1.0-darwin-x64.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    2. Power Query 逆透视&分组依据.xlsx

    2. Power Query 逆透视&分组依据.xlsx

    Java 实现微信红包分配算法内含源码以及说明书可以自己运行复现.zip

    Java 实现微信红包分配算法内含源码以及说明书可以自己运行复现.zip

    node-v9.11.1-darwin-x64.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    node-v9.3.0-linux-ppc64le.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    2024-2030中国WiFi连接洗衣机市场现状研究分析与发展前景预测报告.docx

    2024-2030中国WiFi连接洗衣机市场现状研究分析与发展前景预测报告

    node-v8.2.0-linux-ppc64le.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    基于QT+C++实现的多列时间轴控件+源码+文档

    用法链接:https://menghui666.blog.csdn.net/article/details/138544216?spm=1001.2014.3001.5502 Qt 多列时间轴控件。 可与多段字符串格式自由转换,也可手动添加列表项。 专门用来以时间轴作为事件线发展顺序的故事大纲。 特点 时间背包功能:记录所有物品或属性发生的变化,随时回溯 时间可输入任意内容,不限于时间 每一时间段允许多列,即多个文字节点 全自动调整节点大小(宽高),尽量看起来舒服 行与行、列与列 之间任意拖拽更换顺序 可与文字自由转换,默认一段为一个文字节点 方便的多行操作 按需修改快捷键 所有编辑可撤销 美观的调整动画

    基于SSM个人记账本理财管理系统源码+文档说明+数据库(高分项目).zip

    基于SSM个人记账本理财管理系统源码+文档说明+数据库(高分项目).zip 本资源中的源码都是经过本地编译过可运行的,评审分达到95分以上。资源项目的难度比较适中,内容都是经过助教老师审定过的能够满足学习、使用需求,如果有需要的话可以放心下载使用。 基于SSM个人记账本理财管理系统源码+文档说明+数据库(高分项目).zip 本资源中的源码都是经过本地编译过可运行的,评审分达到95分以上。资源项目的难度比较适中,内容都是经过助教老师审定过的能够满足学习、使用需求,如果有需要的话可以放心下载使用。 基于SSM个人记账本理财管理系统源码+文档说明+数据库(高分项目).zip 本资源中的源码都是经过本地编译过可运行的,评审分达到95分以上。资源项目的难度比较适中,内容都是经过助教老师审定过的能够满足学习、使用需求,如果有需要的话可以放心下载使用。 基于SSM个人记账本理财管理系统源码+文档说明+数据库(高分项目).zip 本资源中的源码都是经过本地编译过可运行的,评审分达到95分以上。资源项目的难度比较适中,内容都是经过助教老师审定过的能够满足学习、使用需求,如果有需要的话可以放心下载使用。

    代替AWCC驱动的TCC软件

    代替AWCC驱动的TCC软件

    app.apk

    app.apk

    C++11&14 高速上手教程内含源码以及说明书可以自己运行复现.zip

    C++11&14 高速上手教程内含源码以及说明书可以自己运行复现.zip

    node-v8.11.4-linux-ppc64le.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    国际象棋游戏数据集 CSV 2W+场次 (Lichess)

    这是一组从网站上的精选用户那里收集的 20,000 多款游戏 Lichess.org,以及如何收集更多游戏。我还将在未来收集更多游戏时上传它们。此套装包含:游戏 ID;额定值 (T/F);开始时间;结束时间;匝数;游戏状态;胜利者;时间增量;白色玩家 ID;白人球员评分;黑色玩家 ID;黑人球员评分;所有动作均采用标准国际象棋符号;Opening Eco(任何给定开口的标准化代码,在此处列出); 开场名称;开盘(开盘阶段的移动次数)

    大语言模型高清PDF-人民大学

    大语言模型高清PDF--人民大学。2022 年底,ChatGPT 震撼上线,大语言模型技术迅速“席卷”了整个社会,人工智能技术因此迎来了一次重要进展。面对大语言模型的强大性能,我们不禁要问:支撑这些模型的背后技术究竟是什么?这一问题无疑成为了众多科研人员的思考焦点。 不同综述,本次中文版书籍更注重为大模型技术的入门读者提供讲解,为此我们在内容上进行了大幅度的更新与重组,力图展现一个整体的大模型技术框架和路线图。本书适用于具有深度学习基础的高年级本科生以及低年级研究生使用,可以作为一本入门级的技术书籍

    node-v9.11.2-linux-armv7l.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    2024年中国齿槽扭矩测试仪行业研究报告.docx

    2024年中国齿槽扭矩测试仪行业研究报告

    node-v10.0.0-linux-armv7l.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

Global site tag (gtag.js) - Google Analytics