实例 public class DragSurfaceView extends SurfaceView implements SurfaceHolder.Callback,Runnable{ private int screenW; //屏幕宽度 private int screenH; //屏幕高度 private float cx = 100; //默认X坐标 private float cy = 100; //默认Y坐标 private Bitmap mBitmap; private Su…
  今天要实现的是一个跟随手指的小球,说白了就是让小球按着手指滑动的轨迹运动,实现起来还是比较容易的. 用到的类是drawView,我们先自定义一个DrawView组件. DrawView.java: package cn.csdn.android.view; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.…
eatwhatApp的客户端基本实现,会再后续进行整改,今天做一个在网上找到的小Demo,让屏幕中出现一个圆球,并跟随手指移动. 写个java类DrawView继承于View: public class DrawView extends View { public DrawView(Context context) { super(context); } } 定义属性: //画笔 private Paint paint; //当前X坐标 private float currentX; //当前Y…
今天学习了一些安卓开发中的自定义布局,编写了简单一个实例,“跟随手指移动的鸟”,需要两张图片,背景图片和鸟的图片,鸟的图片可以在屏幕中跟随手指的移动而移动. 1.将两张图片导入到mipmap中: 2.首先设置背景,用到了background方法,并设置其id: <?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.…
Android SurfaceView vs TextureView https://github.com/crosswalk-project/crosswalk-website/wiki/Android-SurfaceView-vs-TextureView…
http://www.cnblogs.com/SkyD/archive/2010/11/08/1871423.html Android SurfaceView 绘图覆盖刷新及脏矩形刷新方法 SurfaceView在Android中用作游戏开发是最适宜的,本文就将演示游戏开发中常用的两种绘图刷新策略在SurfaceView中的实现方法. 首先我们来看一下本例需要用到的两个素材图片: bj.jpg就是一个渐变图,用作背景. question.png是一个半透明的图像,我们希望将它放在上面,围绕其圆心…
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/43063331,本文出自:[张鸿洋的博客] 1.概述 在Android SurfaceView实战 带你玩转flabby bird (上)中,我们完成了在游戏所需的所有的元素的绘制,包括 Bird鸟. Floor地板.Pipe 管道 .背景图以及分数等. 本篇博客将在上篇的基本上,继续带领大家向我们的目标进发,那么问题来了,我们的目标是: 就是这个效果图了. 首先我们明确下,当然…
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/42965779 ,本文出自:[张鸿洋的博客] 1.概述 哈,记得以前写过Android SurfaceView实战 打造抽奖转盘 , 同属于SurfaceView系列,基本可以从这篇博文中学习到SurfaceView的用法,以及利用SurfaceView做抽奖转盘.但是其中缺少一部分的知识点,就是与用户交互时界面的改变,所以今天给大家再带来本篇博文教大家如何做flabby bir…
Android SurfaceView内容获取 这几天在做一个Android的小项目,项目中需要使用到SurfaceView来显示相机捕获的内容,同时还有一个SurfaceView用于绘制一些辅助线,最后要得到一张图,包含相机内容和用户编辑的辅助线. 用户的辅助线是相对比较好保存的,直接将操作在图片上进行,再将图片贴到SurfaceView上即可,使用如下代码: SurfaceView mSurfaceView = (SurfaceView)findViewById(R.id.surface_v…
/** * 拖动View 配合onTouchListener使用 * 设置View的布局属性,使得view随着手指移动 注意:view所在的布局必须使用RelativeLayout 而且不得设置居中等样式 * * @param view * @param rawY */private void moveViewWithFinger(View view, float rawY ,int statusBar) { if (rawY> view.getHeight()){ rawY = view.ge…
这次的学习主要是在包里面除自动生成的mainactivity.java之外,再新建一个class, DrawView,在mainactivity里面调用DrawView. 在DrawView里面主要是重写onDraw方法,----该方法负责在该组件指定位置绘制一个小球. package org.crazyit.helloworld; import android.content.Context; import android.graphics.Canvas; import android.gra…
简介:SurfaceView继承自View,但它与View不同,View是在UI主线程中更新画面,而SurfaceView是在一个新线程中更新画面,View的特性决定了其不适合做动画,因为如果更新画面时间过长,那么UI线程就会被正在画的函数阻塞,所以Android通常用SurfaceView做动画效果. 下面给出一个使用SurfaceView做的简单例子: package com.yw.myapiupdate.mydraw; import android.app.Activity; import…
学习资料: Android 开发群英传 搜索学习资料时,搜到了罗升阳老师的Android视图SurfaceView的实现原理分析,老罗老师写的一系列博客,一年前开始学习Android时看不懂,现在依然看不懂,感觉涉及到的知识面太广并且非常深入,还得需要积累很多知识后才能看得懂 在包建强老师的博客中看到,说老罗的博客不是给开发App的人写的,是给开发Rom的人写的.哈哈,为看不懂找个心安理得的理由,推荐包老师的系列博客 写给Android App开发人员看的Android底层知识 1. Surfa…
OnPreparedListener mediaPlayerOnPreparedListener = new OnPreparedListener() { @Override public void onPrepared(MediaPlayer arg0) { // 首先取得video的宽和高 int vWidth = mediaPlayer.getVideoWidth(); int vHeight = mediaPlayer.getVideoHeight(); // 该LinearLayout…
本文利用SurfaceView来实现视频的播放 本文地址:http://www.cnblogs.com/wuyudong/p/5851156.html,转载请注明源地址. 在main.xml布局文件添加用于视频画面绘制的SurfaceView 控件: <SurfaceView android:layout_width="fill_parent" android:layout_height="240dip" android:id="@+id/surfa…
Android当中实现视频播放的方式有两种,即:通过VideoView实现或者通过SurfaceView + MediaPlayer实现. 由浅至深,首先来看下想要在Android上播放一段视频,我们应当怎么做. 前面我们已经提到了两种方式,这里我们来看一下具有更好的拓展性的第二种方式,也就是通过SurfaceView + MediaPlayer进行实现. 首先,我们来定义一个布局文件如下,为了方便起见,我们仅仅只在该布局中定义了一个SurfaceView: <?xml version="…
1. SurfaceView的定义前面已经介绍过View了,下面来简单介绍一下SurfaceView,参考SDK文档和网络资料:SurfaceView是View的子类,它内嵌了一个专门用于绘制的Surface,你可以控制这个Surface的格式和尺寸,Surfaceview控制这个Surface的绘制位置.surface是纵深排序(Z-ordered)的,说明它总在自己所在窗口的后面.SurfaceView提供了一个可见区域,只有在这个可见区域内的surface内容才可见.surface的排版显…
public class Mymedia extends Activity implements OnBufferingUpdateListener, OnCompletionListener, MediaPlayer.OnPreparedListener, SurfaceHolder.Callback { private static final String TAG = "Mymedia "; private int mVideoWidth; private int mVideoH…
自从大二写了个android游戏去参加比赛,之后就一直写应用,一直没用过SurfaceView了,现在进入了游戏公司,准备从基础开始重新快速的学一下这个,然后再去研究openGL和游戏引擎. 直接上代码吧: import android.content.Context; import android.util.AttributeSet; import android.util.Log; import android.view.SurfaceHolder.Callback; import andr…
周末看<精通Android游戏开发>(Pro Android Games),里面讲到游戏的框架,其中一个重要的概念surfaceview,觉得不是很理解,于是花了一点时间研究了下,写下自己的心得. surface,这个单词的意思是浮在表面的,那么surfaceview就是浮在表面的view了.如果真的这样解释,估计有人要拍砖了.然而,话虽不能这么说,取这个名儿,多少还是有点关系的.surface是一个可见区域.   我们在屏幕上看到的这些view,在屏幕上看到的就是画面,在内存中就是一块内存区…
本文是基于Android的SurfaceView的动态画图效果,实现静态和动态下的正弦波画图,可作为自己做图的简单参考,废话不多说,先上图, 静态效果: 动态效果: 比较简单,代码注释的也比较详细,易懂,我就直接上代码了吧: 1.main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/ap…
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/41722441 ,本文出自:[张鸿洋的博客] 1.概述 今天给大家带来SurfaceView的一个实战案例,话说自定义View也是各种写,一直没有写过SurfaceView,这个玩意是什么东西?什么时候用比较好呢? 可以看到SurfaceView也是继承了View,但是我们并不需要去实现它的draw方法来绘制自己,为什么呢? 因为它和View有一个很大的区别,View在UI线程去…
在Android系统中,有一种特殊的视图,称为SurfaceView,它拥有独立的绘图表面,即它不与其宿主窗口共享同一个绘图表面.由于拥有独立的绘图表面,因此SurfaceView的UI就可以在一个独立的线程中进行绘制.又由于不会占用主线程资源,SurfaceView一方面可以实现复杂而高效的UI,另一方面又不会导致用户输入得不到及时响应.在本文中,我们就详细分析SurfaceView的实现原理. 在前面Android控件TextView的实现原理分析一文中提到,普通的Android控件,例如T…
SurfaceView是什么? 它继承自类View,因此它本质上是一个View.但与普通View不同的是,它有自己的Surface.有自己的Surface,在WMS中有对应的WindowState,在SurfaceFlinger中有Layer.我们知道,一般的Activity包含的多个View会组成View hierachy的树形结构,只有最顶层的DecorView,也就是根结点视图,才是对WMS可见的.这个DecorView在WMS中有一个对应的WindowState.相应地,在SF中对应的L…
要求:1.通过手指移动来拖动图片   2.控制图片不能超出屏幕显示区域 技术点:1.MotionEvent处理2.对View进行动态定位(layout) activity_main.xml: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout…
在这次实践中,它抖动得不正常,太不正常,太抖. 其实是我代码上出现了问题,记录一下. 我是怎么设置滑动的呢? 通过改变view的margin. 然而我在onTouchEvent中怎么控制它滑动的大小呢? 我获取的是event.getY(). 而event.getY()获取的是相对距离,也就是说坐标是相对于我们手指下的那个view来说的,是相对坐标. 而这个view又跟随着手指的滑动,通过改变margin的方式,margin一旦改变,那么坐标也跟着改变,于是getY就出现了异常. 所以我们不应该用…
最近在做一个viewpager + fragment 切换的页面, 其中一个fragment 打开摄像头,需要surfaceView,但是当切换到这个fragment的前一个个时,这个fragment也被加载了.导致会卡和闪一下黑屏. 黑屏解决: 在主FragmentAcivity的onCreate方法 getWindow().setFormat(PixelFormat.TRANSLUCENT); 加载慢的方法 viewpager的机制是 当加载一个view时,会保留前一个,显示当前view,预…
今天介绍一下SurfaceView的用法,SurfaceView一般与SurfaceHolder结合使用,SurfaceHolder用于向与之关联的SurfaceView上绘图,调用SurfaceView的getHolder()方法即可获取SurfaceView关联的SurfaceHolder. SurfaceHolder提供一下几个方法来获取Canvas对象: Canvas lockCanvas():锁定整个SurfaceView对象,获取该Surface上的Canvas. Canvas lo…
直接上demo,图是自己切的,将就用吧.点击左右两边分别向左右移动. public class MySurfaceView extends SurfaceView implements Callback, Runnable { private Thread th; private SurfaceHolder sfh; private int SH, SW; private Canvas canvas; private Paint p; private Paint p2; private Reso…
解释都在代码注释中: public class SampleView extends View { private Paint mPaint; private Path mPath; public SampleView(Context context) { super(context); setFocusable(true); mPaint = new Paint(); mPaint.setAntiAlias(true); mPaint.setStrokeWidth(6); mPaint.set…