package com.dream.apm;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.RectF;
import android.util.AttributeSet;
import android.util.Log;
import android.view.MotionEvent;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
/**
* Created by HuangZhiLong on 2015/1/22.
*/
public class MySurfaceViewone extends SurfaceView implements SurfaceHolder.Callback,Runnable {
private Thread th;
private SurfaceHolder sfh;
private Canvas canvas;
private Paint paint;
private boolean flag;
public int screenW=0,screenH=0;
/**
* SurfaceView初始化函数
*/
public MySurfaceViewone(Context context, AttributeSet attrs) {
super(context, attrs);
this.setKeepScreenOn(true);
sfh = this.getHolder();
sfh.addCallback(this);
paint = new Paint();
paint.setAntiAlias(true);//消除锯齿
//paint.setTypeface(Typeface.DEFAULT_BOLD);
this.setFocusable(true);
this.setFocusableInTouchMode(true);
}
/**
* SurfaceView视图创建,响应此函数
*/
@Override
public void surfaceCreated(SurfaceHolder holder) {
screenW = this.getWidth();
screenH = this.getHeight();
myDraw();
//tt=new Rect(0,0,this.getWidth(),this.getHeight());
flag = true;
th = new Thread(this);
th.start();
}
/**
* 游戏绘图
*/
public void myDraw() {
try {
canvas = sfh.lockCanvas();
canvas.drawColor(Color.rgb(90, 151, 161));//背景
paint.setStrokeWidth(0);
paint.setColor(Color.BLACK);
//paint.setTextSize(size);
//绘制表格
} catch (Exception e) {
} finally {
if (canvas != null)
sfh.unlockCanvasAndPost(canvas);
}
}
/**
* 图片的线程运行
*/
public void run() {
while (flag) {
myDraw();
try {
Thread.sleep(40);
} catch (Exception ex) {
Log.e("ERROR", "Thread is Error!");
}
}
}
/**
* 触屏事件监听
*/
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction())
{
//移动
case MotionEvent.ACTION_MOVE:
break;
//按下
case MotionEvent.ACTION_DOWN:
break;
//放开
case MotionEvent.ACTION_UP:
break;
}
return true;
}
/**
* SurfaceView视图状态发生改变,响应此函数
*/
@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
System.out.println("ImageSurfaceView is surfaceChanged");
}
/**
* SurfaceView视图消亡时,响应此函数
*/
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
System.out.println("ImageSurfaceView is surfaceDestroyed");
flag = false;//停止线程
}
}
- 浏览: 283225 次
- 性别:
- 来自: 广州
博客专栏
-
数据结构
浏览量:70214
最新评论
-
clever101:
兄弟,能提供一个有参数传递的例子吗?
java jni详细入门实例 -
comsci:
拓扑分析算法...............寻径与导 ...
A星寻路算法 -
manxisuo:
感谢博主,好文章。
java的类加载器ClassLoader -
User_Java:
类的静态变量初始化顺序与其声明的顺序有关。自增操作都执行后保存 ...
据说一半以上的java程序员会出错的题 -
flashsnow:
在公司写这样的代码是要遭雷劈的But,为了理解ClassLoa ...
据说一半以上的java程序员会出错的题
相关推荐
本示例着重讲解如何使用`MediaPlayer`、`SurfaceView`以及自定义控制器来实现这一功能。`MediaPlayer`是Android系统提供的一个核心组件,它允许开发者处理多媒体文件,如音频和视频。`SurfaceView`则是一个特殊的...
自定义相机界面通常需要创建XML布局文件,包括相机预览区域、按钮(如拍照、切换摄像头、开关闪光灯等)和其他UI元素。` ConstraintLayout`或`RelativeLayout`可以帮助更好地组织和定位这些元素。 9. **权限管理**...
这通常包括播放/暂停按钮、进度条、音量控制等元素,这些可以通过Android的XML布局文件来设计。 3. **事件监听**:为了响应用户的操作,如点击按钮,开发者需要在代码中设置事件监听器。例如,当用户点击播放按钮时...
4. **创建扫描界面:**如果选择自定义扫描界面,需要设计XML布局文件,并在对应的Activity中初始化和配置相机。 5. **实现扫描逻辑:**调用ZXing提供的API,如`CaptureActivity`或`IntentIntegrator`,处理扫描事件...
在拼图功能中,开发者可能使用了LinearLayout、RelativeLayout或者GridLayout等布局,根据用户选择的拼图模板动态调整布局参数。 5. **图片资源管理**:“2014-03big”文件可能是一个包含了多种拼图模板的资源文件...
2. 项目结构:了解Android项目的目录结构,包括`src/main/java`(存放Java代码)、`res/layout`(XML布局文件)、`res/drawable`(资源图片)等。 二、游戏界面设计 1. XML布局:在`res/layout`目录下,创建`...
使用XML布局文件,如`activity_main.xml`,可以定义这些元素的布局和样式。你可以使用`LinearLayout`、`RelativeLayout`或`ConstraintLayout`来组织UI组件。 3. **游戏逻辑**:贪吃蛇的核心逻辑涉及到移动、碰撞...
游戏界面通常由自定义的View或布局组成,可以使用XML布局文件描述界面元素。例如,可以创建一个全屏的自定义View,然后在其中添加Snake游戏的画布。 10. **测试与发布** 在开发过程中,使用Android Studio内置的...
- 使用XML布局文件来设计界面,包括TextView(文本显示),EditText(输入框),Button(按钮),ImageView(图片视图),ListView/RecyclerView(列表视图)等。 7. **Android应用程序的工作机制**: - 应用启动...
在Android中,使用XML布局文件来设计游戏界面,通常包括一个SurfaceView用于绘制游戏画面,以及一些Button或TextView用于控制游戏和显示分数。你可以使用自定义View扩展SurfaceView,重写onDraw()方法绘制游戏图形。...
1. 使用XML布局文件创建游戏主界面,可以包含一个SurfaceView,作为游戏画面的承载容器。 2. 在SurfaceView中,自定义一个Canvas类,继承自SurfaceHolder.Callback,用于绘制游戏画面和处理游戏逻辑。 三、实现游戏...
1. **自定义View**:刮刮卡功能需要自定义一个View类,继承自Android的View或SurfaceView。自定义View允许我们覆盖onDraw()方法,绘制刮刮卡的背景和可刮除的覆盖层。我们还需要处理触摸事件,以便在用户滑动手指时...
在Demo_zhy_07_GuaGuaKa_02_path这个文件中,很可能是包含了实现刮刮卡功能的相关代码文件,包括但不限于布局文件(XML)、Java源代码(实现自定义View的类)、资源图片(背景和涂层)等。通过查看和学习这些代码,...
项目创建完成后,我们需要编写主活动(MainActivity)和对应的布局文件(activity_main.xml)。 在布局文件中,我们可以设计一个自定义View来展示拼图。自定义View类需要继承自View或者SurfaceView,重写onDraw()...
使用XML布局文件定义游戏界面,可以使用ImageView显示静态图片,如地图背景,以及自定义View或SurfaceView来绘制动态元素,如坦克和子弹。 三、游戏逻辑实现 1. 坦克移动:通过监听用户的触摸事件,改变坦克的位置...
- **布局管理**:线性布局、相对布局、表格布局、绝对布局、单帧布局,帮助开发者构建复杂的游戏界面布局。 - **控件高级应用**:例如,使用ListView实现动态加载的游戏列表,自定义Adapter以增强控件的灵活性和表现...
这通常通过在XML布局文件中使用`android:configChanges="orientation|screenSize"`来实现,并重写`onConfigurationChanged()`方法。 激光线是许多二维码扫描应用中常见的视觉辅助元素,用于帮助用户对准条码。在...
在Android Studio工程中,我们通常会将`VideoView`添加到XML布局文件中,如下所示: ```xml android:id="@+id/videoView" android:layout_width="match_parent" android:layout_height="wrap_content" /> ``` ...
每个类都可能继承自特定的Android游戏框架或自定义基类,例如继承自SurfaceView或Canvas,以便进行游戏循环和渲染。 至于游戏的性能优化,开发者可能利用了多线程技术,将游戏逻辑和渲染分开处理,以减少UI线程的...