下面就贴上一个小程序代码,主要运用SurfaceView来实现在屏幕上画一个圆,你可以通过按方向键和触摸屏幕来改变圆的位置
代码:
Activity
- package com.view;
-
- import android.app.Activity;
- import android.os.Bundle;
- import android.view.Window;
- import android.view.WindowManager;
-
- public class MainActivity extends Activity {
-
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
-
-
- this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
- WindowManager.LayoutParams.FLAG_FULLSCREEN);
-
-
- requestWindowFeature(Window.FEATURE_NO_TITLE);
-
-
- this.setContentView(new MySurfaceView(this));
- }
- }
SurfaceView
- package com.view;
-
- import android.content.Context;
- import android.graphics.Canvas;
- import android.graphics.Color;
- import android.graphics.Paint;
- import android.view.KeyEvent;
- import android.view.MotionEvent;
- import android.view.SurfaceHolder;
- import android.view.SurfaceHolder.Callback;
- import android.view.SurfaceView;
-
- public class MySurfaceView extends SurfaceView implements Runnable, Callback {
-
- private SurfaceHolder mHolder;
-
- private Thread t;
-
- private boolean flag;
-
- private Canvas mCanvas;
-
- private Paint p;
-
- private int x = 50, y = 50, r = 10;
-
- public MySurfaceView(Context context) {
- super(context);
-
- mHolder = getHolder();
- mHolder.addCallback(this);
- p = new Paint();
- p.setColor(Color.WHITE);
- setFocusable(true);
- }
-
-
-
-
- public void Draw() {
- mCanvas = mHolder.lockCanvas();
- mCanvas.drawRGB(0, 0, 0);
- mCanvas.drawCircle(x, y, r, p);
- mHolder.unlockCanvasAndPost(mCanvas);
- }
-
-
-
-
- @Override
- public void surfaceCreated(SurfaceHolder holder) {
- t = new Thread(this);
- flag = true;
- t.start();
- }
-
-
-
-
- @Override
- public void surfaceChanged(SurfaceHolder holder, int format, int width,
- int height) {
- }
-
-
-
-
- @Override
- public void surfaceDestroyed(SurfaceHolder holder) {
- flag = false;
- }
-
-
-
-
- @Override
- public boolean onTouchEvent(MotionEvent event) {
- x = (int) event.getX();
- y = (int) event.getY();
- return true;
- }
-
-
-
-
- @Override
- public boolean onKeyDown(int keyCode, KeyEvent event) {
- if(keyCode == KeyEvent.KEYCODE_DPAD_UP){
- y--;
- }
- return super.onKeyDown(keyCode, event);
- }
-
- @Override
- public void run() {
- while (flag) {
- Draw();
- try {
- Thread.sleep(50);
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- }
- }
-
- }
MySurfaceView首先继承SurfaceView,然后实现Runnable和Callback接口
重写了Runnable的run方法和Callback的surfaceCreated(SurfaceHolder holder),surfaceChanged(SurfaceHolder holder, int format, int width,int height),surfaceDestroyed(SurfaceHolder holder)方法,
还实现了onTouchEvent(MotionEvent event),onKeyDown(int keyCode, KeyEvent event)方法来,详细的在代码里已注释。
更多信息请查看 java进阶网 http://www.javady.com
分享到:
相关推荐
Android SurfaceView 实现实时显示摄像头视频,详见博客:https://blog.csdn.net/qq_30297763/article/details/90241102
Android的SurfaceView实现图片缩放、滑动,网上资源不多,目前还有些问题,仅供参考。
android使用双缓冲辨析及surfaceview使用例子
Android SurfaceView实现动画效果
android SurfaceView添加线程源码
这是一个android SurfaceView双缓冲Demo,希望对大家理解android SurfaceView双缓冲有所帮助。
android surfaceview自定义拍照 绘制头像轮廓 注明:是借用网上的demo基础上进行修改的
Android SurfaceView实现加载GIF动画
Android SurfaceView添加组件view不被组件覆盖.zip
基于android的SurfaceView实现人物动画的一个简单示例程序。
SurfaceView游戏框架实例,讲解如何使用,如何掌握基础性东西
android中的surfaceview示例源码下载,Android SurfaceView在游戏开发中使用想当广泛,SurfaceView对于画面的控制有着更大的自由度,它不像View那样要用handler来更新,但是网上关于 SurfaceView使用这方面的参考...
一个使用SurfaceView的Demo
android demo,使用SurfaceView,使用多线程技术,可以滑动的选择按钮组,动画效果非常流畅,按钮数量可以随意改变。
android摄像头预览界面呈现自定义的矩形框,只拍摄(矩形框)特定区域的图片,然后根据图片解析条码。
android学习 SurfaceView实现人物动画,代码通过测试并且附有APK编译文件,可直接在手机上运行
这是在上网收集的,能够截取当前Activity中surfaceView中图片。本人亲测可以通过。
android surfaceview播放视频文件。MP4格式视频。
android surfaceview多图拖拽,希望能够对你有所帮助