教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 建筑文档 >

Android手机游戏开发知识点总结(7)

来源:网络收集 时间:2026-04-01
导读: } public void onDraw(Canvas canvas){ super.onDraw(canvas); shapeDrawable = new ShapeDrawable(new OvalShape());//设置绘制椭圆 shapeDrawable.getPaint().setShader(bitmapShaper);//设置要绘制的椭圆形的图

}

public void onDraw(Canvas canvas){ super.onDraw(canvas);

shapeDrawable = new ShapeDrawable(new OvalShape());//设置绘制椭圆 shapeDrawable.getPaint().setShader(bitmapShaper);//设置要绘制的椭圆形的图片

shapeDrawable.setBounds(0,0,qq2width,qq2height);//设置要显示的区域 shapeDrawable.draw(canvas);//绘制图片

paint.setShader(linearGradient);//绘制线性渲染 canvas.drawRect(200,0,320,50, paint);

paint.setShader(composeShaper);//绘制混合渲染 canvas.drawRect(200,55,320,105, paint);

paint.setShader(radialGradient);//绘制环形渲染 canvas.drawRect(200,200,320,250, paint);

paint.setShader(sweepGradient);//绘制梯度渲染 canvas.drawRect(200,110,320,160, paint); } }

================================================================================================================================================= 第九部分 双缓冲技术

原理:当一个动画争先显示时,程序又在改变它,前面的还没画完,程序又请求重新绘制,这时就会出现闪屏。为避免这种情况,可以使用双缓冲技术,将要处理好的的图片

在内存中处理好之后,再将其显示到屏幕上。Android中SurfaceView类本身就是一个双缓冲机制,所以游戏开发中用SurfaceView用得更多,效率也更高。下例是针对View类实现 双缓冲技术的例子。

public class BufferView extends View implements Runnable{-----------???

Bitmap bitmap1= null;

Bitmap bufferBitmap = null;//创建缓冲区

Canvas canvas1 = null; Paint paint = null;

public BufferView(Context context) { super(context); bitmap1 =

((BitmapDrawable)getResources().getDrawable(R.drawable.qq)).getBitmap();//装载资源

bufferBitmap = Bitmap.createBitmap(320,480,Config.ARGB_8888);//创建屏幕大小的缓冲区

canvas1 = new Canvas();//创建画布(程序中出现了两块画布) paint = new Paint();

canvas1.setBitmap(bufferBitmap);//将内容绘制在bufferBitmap缓冲区上,可理解为将缓冲区作为画布。

canvas1.drawBitmap(bitmap1, 0,0, paint);//将图片绘制到缓冲区上

new Thread(this).start(); }

public void onDraw(Canvas canvas){ super.onDraw(canvas);

canvas.drawBitmap(bufferBitmap, 0,0, paint);//将bufferBitmap缓冲区上画布绘制到屏幕上去 }

@Override public void run() {

while(!Thread.currentThread().isInterrupted()){ try{

Thread.sleep(200); }catch(Exception e){

Thread.currentThread().interrupt(); }

postInvalidate(); } } }

================================================================================================================================================= 第十部分 全屏显示及获取屏幕属性

如果想像G1游戏那样,当我们把手机屏幕横放时,应用程序会自动变为横屏模式。其实可以通过下面两个方法实现这个功能。

法一:双击AndroidManifest.xml文件,选择Application选项卡,选中Activity类,再找到Screen orientation选项 ,选择 senor 最后保存即可。在真机上就能看到效果

法二:在AndroidManifest.xml文件中设计如下中加入android:screenOrientation=\即可。如下:

public class FullScreen extends Activity{

public TextView textView_FullScreen;//定义一个TextView来显示屏幕属性 public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState);

requestWindowFeature(Window.FEATURE_NO_TITLE);//通过requestWindowFeature方法来设置为无标题栏

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);//通过setFlags方法设置为全屏模式

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);//通过setRequestedOrientation方法来设置为横屏 setContentView(R.layout.fullscreen);

textView_FullScreen =

(TextView)this.findViewById(R.id.textView_FullScreen);//得到TextView对象

DisplayMetrics displayMetrics = new DisplayMetrics();//定义DisplayMetrics对象,DisplayMetrics定义了屏幕的一些属性

getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);//通过getMetrics方法来取得窗口属性

int screenWidth = displayMetrics.widthPixels;//得到窗口宽度 int screenHeight = displayMetrics.heightPixels;//得到窗口高度

textView_FullScreen.setText(\屏幕宽度:\屏幕高度:\} }

第十一部分 Tween动画 第一种方法 在代码中设计

public class AnimationView extends View{ public Animation animationAlpha = null; public Animation animationScale = null; public Animation animationTranslate = null; public Animation animationRotate = null;

Bitmap bitmap1 = null;

public AnimationView(Context context) { super(context); bitmap1 =

((BitmapDrawable)getResources().getDrawable(R.drawable.dog)).getBitmap();//加载资源 }

public void onDraw(Canvas canvas){ canvas.drawBitmap(bitmap1, 50,100, null); }

public boolean onKeyUp(int keyCode,KeyEvent event){ switch(keyCode){ /*

* Alpha透明度动画效果。其属性设置格式为: * AlphaAnimation(float fromAlpha,float toAlpha) * fromAlpha---为动画起始时透明度

* toAlpha---动画结束时透明度(0.0表示完全透明,1.0表示完全不透明) *

* setDuration(long durationMillis);设置动画显示的时间 单位为毫秒 * startAnimation(Animation animation);开始播放动画 */

case KeyEvent.KEYCODE_DPAD_UP:

animationAlpha = new AlphaAnimation(0.0f, 1.0f);//创建Alpha动画 animationAlpha.setDuration(3000);//动画持续时间 this.startAnimation(animationAlpha);//开始播放动画 break; /*

* Scale伸缩动画效果.。其属性设置如下:

* ScaleAnimation(fromX, toX, fromY, toY, pivotXType, pivotXValue, pivotYType, pivotYValue)

* fromX,toX 为起始和结束时x坐标上的伸缩尺寸 * fromY,toY 为起始和结束时y坐标上的伸缩尺寸 * pivotXType,pivotYType 分别为x,y的伸缩模式

* pivotXVale,pivotYVale 分别为伸缩动画相对于x,y的坐标开始位置 */

case KeyEvent.KEYCODE_DPAD_DOWN:

animationScale = new ScaleAnimation(0.0f, 1.0f, 0.0f, 1.0f, Animation.RELATIVE_TO_SELF,

0.5f, Animation.RELATIVE_TO_SELF, 0.5f);//创建Scale动画 animationScale.setDuration(500);//动画持续的时间 this.startAnimation(animationScale);//开始播放动画 /*

* Translate移动动画效果。其属性设置如下:

* Tr …… 此处隐藏:3000字,全部文档内容请下载后查看。喜欢就下载吧 ……

Android手机游戏开发知识点总结(7).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/438798.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)