- 浏览: 438943 次
- 性别:
- 来自: 上海
-
文章分类
最新评论
-
IThead:
纠结了几天,用了你的方法,现在解决了,谢谢!
Eclipse 写Javascript卡死问题 -
Rubicon__:
你好,我在运用PageWidget这个类时,出现第一页翻到第二 ...
android翻书效果实现原理( 贝塞尔曲线绘制原理/点坐标计算) -
lionios:
如果不显示printDialog,则打印出来的是空白页,请问你 ...
Print打印机例子 -
rayln:
weiqiulai 写道哥们儿,我怎么没有看到监控队列的配置和 ...
JMS监听MQ实例 -
weiqiulai:
哥们儿,我怎么没有看到监控队列的配置和代码?
JMS监听MQ实例
转载自: http://blog.csdn.net/hellogv/article/details/5985090
效果图:
例子:
main.xml
SurfaceviewActivity.java
效果图:
例子:
main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical"> <LinearLayout android:id="@+id/LinearLayout01" android:layout_width="wrap_content" android:layout_height="wrap_content"> <Button android:id="@+id/Button01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="简单绘画"></Button> <Button android:id="@+id/Button02" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="定时器绘画"></Button> </LinearLayout> <SurfaceView android:id="@+id/SurfaceView01" android:layout_width="fill_parent" android:layout_height="fill_parent"></SurfaceView> </LinearLayout>
SurfaceviewActivity.java
package com.surface; import java.util.Timer; import java.util.TimerTask; import android.app.Activity; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Rect; import android.os.Bundle; import android.util.Log; import android.view.SurfaceHolder; import android.view.SurfaceView; import android.view.View; import android.widget.Button; public class SurfaceviewActivity extends Activity { /** Called when the activity is first created. */ Button btnSimpleDraw, btnTimerDraw; SurfaceView sfv; SurfaceHolder sfh; private Timer mTimer; private MyTimerTask mTimerTask; int Y_axis[],//保存正弦波的Y轴上的点 centerY,//中心线 oldX,oldY,//上一个XY点 currentX;//当前绘制到的X轴上的点 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); btnSimpleDraw = (Button) this.findViewById(R.id.Button01); btnTimerDraw = (Button) this.findViewById(R.id.Button02); btnSimpleDraw.setOnClickListener(new ClickEvent()); btnTimerDraw.setOnClickListener(new ClickEvent()); sfv = (SurfaceView) this.findViewById(R.id.SurfaceView01); sfh = sfv.getHolder(); //动态绘制正弦波的定时器 mTimer = new Timer(); mTimerTask = new MyTimerTask(); // 初始化y轴数据 centerY = (getWindowManager().getDefaultDisplay().getHeight() - sfv .getTop()) / 2; Y_axis = new int[getWindowManager().getDefaultDisplay().getWidth()]; for (int i = 1; i < Y_axis.length; i++) {// 计算正弦波 Y_axis[i - 1] = centerY - (int) (100 * Math.sin(i * 2 * Math.PI / 180)); } } class ClickEvent implements View.OnClickListener { @Override public void onClick(View v) { if (v == btnSimpleDraw) { SimpleDraw(Y_axis.length-1);//直接绘制正弦波 } else if (v == btnTimerDraw) { oldY = centerY; mTimer.schedule(mTimerTask, 0, 5);//动态绘制正弦波 } } } class MyTimerTask extends TimerTask { @Override public void run() { SimpleDraw(currentX); currentX++;//往前进 if (currentX == Y_axis.length - 1) {//如果到了终点,则清屏重来 ClearDraw(); currentX = 0; oldY = centerY; } } } /* * 绘制指定区域 */ void SimpleDraw(int length) { if (length == 0) oldX = 0; Canvas canvas = sfh.lockCanvas(new Rect(oldX, 0, oldX + length, getWindowManager().getDefaultDisplay().getHeight()));// 关键:获取画布 Log.i("Canvas:", String.valueOf(oldX) + "," + String.valueOf(oldX + length)); Paint mPaint = new Paint(); mPaint.setColor(Color.GREEN);// 画笔为绿色 mPaint.setStrokeWidth(2);// 设置画笔粗细 int y; for (int i = oldX + 1; i < length; i++) {// 绘画正弦波 y = Y_axis[i - 1]; System.out.println("oldX:"+oldX+" oldY:"+oldY+" i:"+i+" y:"+y); canvas.drawLine(oldX, oldY, i, y, mPaint); oldX = i; oldY = y; } sfh.unlockCanvasAndPost(canvas);// 解锁画布,提交画好的图像 } void ClearDraw() { Canvas canvas = sfh.lockCanvas(null); canvas.drawColor(Color.BLACK);// 清除画布 sfh.unlockCanvasAndPost(canvas); } }
- screenshot-1.PNG (37.9 KB)
- 下载次数: 25
发表评论
-
背景图平铺
2013-12-05 10:12 895以LinearLayout为例,它提供的background属 ... -
应用加载完成调用的方法
2013-12-04 17:09 801@Override public void ... -
MAC系统下COCOS2D-X(IPHONE-ANDROID)及IDE的开发环境搭建
2013-11-11 16:30 1244最近正在做移动多平台对应游戏框架的调查,因为之前业余时间一直使 ... -
Android多分辨率自适应
2013-10-17 14:41 1496转载: http://blog.csdn.net/soesa/ ... -
Android的系统通知栏小例子
2013-07-19 15:35 731package com.example.notificatio ... -
Android开机广播和关机广播
2013-04-07 11:23 1251http://blog.csdn.net/coolszy/ar ... -
Android发送短信
2013-03-07 17:29 744public void sendMsg(String numb ... -
Android查询所有联系人和根据号码查询联系人方法
2013-03-07 11:11 1051直接看例子: package com.msg.util; ... -
Android短信接收
2013-03-06 14:30 718package com.msg.vo; import a ... -
通过ActionBar设置Tabs
2013-02-28 17:32 1309在网上竟然很少这个完整的例子, 我这里做一个例子让大家分享一下 ... -
Android的ActionBar菜单使用
2013-02-28 16:25 1812使用ActionBar设置菜单例子 /res/menu/ac ... -
TabHost的基本使用方法
2013-02-28 11:17 1013非常简单的例子说明一个TabHost的使用 <Rela ... -
android翻书效果实现原理( 贝塞尔曲线绘制原理/点坐标计算)
2012-04-28 16:43 2456转载: http://www.open-open. ... -
贝塞尔曲线画法
2012-04-28 13:21 2413转载:http://blog.csdn.net/xiaomin ... -
CALL拨打电话
2011-11-22 11:11 895public void onCreate(Bundle sav ... -
SMS短信发送
2011-11-22 11:06 998直接看例子: main.xml <?xml versi ... -
开机启动Service
2011-11-21 15:17 718AndroidManifest.xml <?xml ve ... -
监听电话状态
2011-11-21 11:14 777请看程序 PhoneActivity.java package ... -
App播放Music
2011-11-21 10:45 604/** * 播放录音文件 * @p ... -
MediaRecorder录制音频
2011-11-21 10:43 1360一个录音的小程序!! Main.xml <?xml v ...
相关推荐
下面我们将详细讲解SurfaceView的使用以及在实现一个绘图板时的关键知识点。 首先,SurfaceView包含两个主要组成部分:Surface和View。Surface是实际用于绘图的后台缓冲区,而View则负责管理Surface在屏幕上的显示...
下面是一个简单的SurfaceView使用例子: 首先,创建一个继承自SurfaceView的类,并实现SurfaceHolder.Callback接口: ```java public class MySurfaceView extends SurfaceView implements SurfaceHolder.Callback...
在绘制过程中,SurfaceView会使用两个Surface,一个用于显示,一个用于绘图。当一个Surface完成绘制并交换到前台显示时,另一个Surface则可以开始新的绘图,这样可以避免闪烁,提高用户体验。 总的来说,这个...
android使用双缓冲辨析及surfaceview使用例子
通过学习这个小例子,你可以深入了解SurfaceView的工作原理,掌握如何在Android应用中高效地使用SurfaceView进行图形绘制,为你的应用程序带来更流畅的视觉体验。同时,这个例子也为你提供了一个基础模板,可以在此...
文件名`szt_SurfaceView`可能包含的是一个关于SurfaceView使用示例的代码或文档,通过学习和分析这个例子,可以更好地理解和掌握SurfaceView在实际项目中的运用。 总之,SurfaceView是Android游戏开发中的重要工具...
这个例子展示了如何结合`SurfaceView`和其下的视图,生成一张完整的截图。记住,实际应用中可能需要根据具体的布局和需求进行调整。 总结来说,截取`SurfaceView`的内容需要绕过默认的截图机制,通过直接操作`...
总的来说,这个SurfaceView视频播放功能的例子涵盖了Android中视频播放的基础技术,包括SurfaceView的使用、MediaPlayer的管理、网络流媒体处理,以及可能的用户体验优化。对于想要在Android应用中实现高效视频播放...
使用SurfaceView做视频录制的小例子
在这个例子中,我们可能使用的是View Animation,因为SurfaceView通常需要兼容低版本Android设备。 1. **定义Animation** 创建一个Animation可以通过XML资源文件或代码实现。例如,我们可以创建一个平移动画,通过...
为了实现小窗口播放,我们可以使用`WindowManager`来动态添加一个浮动窗口。这个浮动窗口包含我们的`SurfaceView`,并且可以自由移动和缩放。在悬浮窗口中,我们需要监听触摸事件来控制窗口位置。 全屏播放通常通过...
开发者可以通过查看这个例子学习如何结合SurfaceView和游戏逻辑来构建自己的游戏框架。 通过理解和熟练运用SurfaceView,开发者可以创建出高性能、流畅的游戏体验,满足用户对于游戏画质和响应速度的需求。同时,...
在安卓应用开发中,SurfaceView ...总之,通过理解SurfaceView的工作机制,我们可以利用其特性实现高性能的图形绘制,如这个例子中的风车效果。通过不断学习和实践,开发者可以创造出更多富有创意和互动性的安卓应用。
这个例子可以帮助开发者调试和测试自定义SurfaceView的交互功能。 总结起来,实现Android圆形相机预览窗口需要对SurfaceView有深入的理解,包括如何自定义视图、绘制路径以及与相机的交互。通过这个过程,开发者...
在这个例子中,我用代码制作了一个拍摄界面,里面只有三个控件,一个是自己封装的CameraView,它继承了SurfaceView,一个是悬浮在CameraView上的按 钮,点击它可以捕捉画面并把图像存储到sdCard的根目录下,还有一个...
该资源是一个完整的android项目,主要是利用surfaceview和android的重力传感器实现自由落体的模拟,包括碰撞和瞬间改变重力加速度的方向等。该案例是我模拟物理引擎的一个例子,主要是参照“动量守恒定律”和“动能...
7. **Demo实践**:"SurfaceView入门Demo"可能包含了一个简单的例子,如在一个空白的Surface上绘制动画或者播放视频。通过分析这个Demo,你可以看到如何创建和管理绘图线程,以及如何在Surface上进行基本的绘图操作。...
在Android开发中,SurfaceView是一种特殊的视图,它允许开发者在单独的线程中进行高性能的图形绘制,常用于视频播放...在这个例子中,你可以根据自己的需求调整圆形的运动轨迹、速度和颜色,以创造出各种动态视觉效果。
1. **使用TextureView**:替换SurfaceView为TextureView,因为TextureView可以轻松地嵌入到布局中,且支持透明度。 2. **设置透明度**:通过修改TextureView的背景颜色或使用Alpha通道来实现透明效果。 3. **处理...
将SurfaceView与MediaPlayer结合使用时,需要设置MediaPlayer的SurfaceHolder,以便将视频渲染到SurfaceView上。通常我们会在SurfaceView的回调方法`surfaceCreated()`和`surfaceDestroyed()`中分别调用MediaPlayer...