其实说实话,还是不怎么爱写博客,索性不勉强自己,但今天想写点东西,关于安卓的Activity。自己写了一个安卓的简单游戏,虽然简单,但里面牵扯到了颇多类容,算是入了个门。我写的这个游戏主要实现有安卓组件运用,界面风格设定,界面布局,界面跳转,界面销毁,界面返回键菜单键的屏蔽,自定义SurfaceView组件画图,线程的使用,事件监听,获取权限,数据保存等等等等。里面几乎所有的类容都与Activity有关。
1.自定义界面风格
在资源文件夹的value目录下的style.xml里面可以自己设定风格,最好的方式是先继承一种系统提供的风格,再根据自己的需要改 ,下面的MyTheme是我自定义的风格
<style name="MyTheme" parent="AppBaseTheme" > <item name="android:windowFullscreen">true</item> <item name="android:windowNoTitle">true</item> <!-- All customizations that are NOT specific to a particular API-level can go here. --> </style>
同时还需要在安卓的主配置文件里面,把自己需要改变风格的界面里设置为自己定义的风格
<activity android:name="com.example.foolgame.GameActivity" android:label="@string/title_activity_game" android:theme="@style/MyTheme" > </activity>
2.界面布局
这个部分是很死的类容,只要搞清每种布局的属性就行了,再改一些布局的基本属性,多种布局嵌套使用,这些搞定了,你的界面想怎么布局就就怎么布局
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".AnswerActivity" > <TextView /> <TableLayout ======嵌套一个布局 </TableLayout> </RelativeLayout>
3.界面跳转
界面的跳转是一件再容易不过的事情了
startActivity(new Intent(this,AnswerActivity.class));
so easy有木有
4.界面的销毁
这个东西更简单,只要this.finish();就OK了,不过还有事情不要忘记做了,就是这个界面的线程,你可以用标记来结束线程,或是重写Activity的onDestroy方法,这个方法很有用,它处在安卓页面生命周期的末尾,所以我们可以再这个方法里面写一些销毁页面后的善后工作,比如结束线程
public void run() { while(!stopflag){ } protected void onDestroy() { //这里可以写一些善后工作 super.onDestroy(); stopflag=true; }
5.屏蔽返回键或菜单键
返回键的的屏蔽或是设置询问对话框是很有必要的,我几乎每一个界面都屏蔽了原来Activity的返回键功能,这可以通过重写来实现
public boolean onKeyDown(int keyCode, KeyEvent event) { if(keyCode==KeyEvent.KEYCODE_BACK){ new Exit(this);//弹出询问对话框 } return false; }
6.用SurfaceView画图
要用好这玩意的关键在于三点:
1.获取SurfaceHolder,hold住全场,
2.实现SurfaceHolder.Callback接口并且添加回调函数
3.锁定画布,画图,提交画布
下面是一个SurfaceView的模板代码
//这是强哥讲的另一种自定义组件,一般是用这个做游戏的 public class MySurfaceView extends SurfaceView implements Callback,Runnable{ private ArrayList<Entity> list = new ArrayList<Entity>(); private SurfaceHolder holder; private Paint paint=new Paint(); private boolean runflag=true; private static boolean stopflag=false; public MySurfaceView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } public MySurfaceView(Context context) { this(context, null); } public MySurfaceView(Context context, AttributeSet attrs) { this(context, attrs, 0); holder=this.getHolder(); holder.addCallback(this); } public void surfaceCreated(SurfaceHolder holder) { Thread t=new Thread(this); t.start(); } public void surfaceChanged(SurfaceHolder holder, int format, int width,int height) { } public void surfaceDestroyed(SurfaceHolder holder) { runflag=false; } public void run() { while(runflag){ if(stopflag)continue; try { Thread.sleep(10); } catch (InterruptedException e) { e.printStackTrace(); } Canvas canvas=null; try { canvas=holder.lockCanvas(); paint.setStyle(Style.FILL); paint.setColor(Color.BLACK); canvas.drawRect(0,0, this.getWidth(), this.getHeight(), paint); for(int i=0;i<list.size();i++){ list.get(i).draw(canvas); list.get(i).move(); } } catch (Exception e) { // TODO: handle exception }finally{ //画布画完后要释放 if(runflag){ holder.unlockCanvasAndPost(canvas); } } } } }
7.获取权限
如果我们想使用一些系统服务,那么久要获取相应的权限,这里方法很简单,在主配置文件里加一行权限的获取就行了
?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.foolgame" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="18" /> <application> </application> <uses-permission android:name="android.permission.VIBRATE"/>
要注意的是,请写在application之外,上面是我写的获取震动权限,不写的话,调用震动方法时就会报错
相关推荐
一篇关于android activity的详细总结
本资源包含的是关于Android Activity与Intent相关的Java源代码,非常适合学习Android开发的同学参考。 首先,我们来看Activity。Activity是一个具有用户界面的单个屏幕,它负责处理用户交互和展示UI。在Java源码中...
在Android开发中,Activity是应用程序的基本组件之一,用于呈现用户界面并与用户交互。然而,有时候开发者可能需要在不改变原始Activity的基础上实现不同的功能或者提供不同的入口,这时Android系统提供的Activity...
以上就是关于Android Activity间跳转和常用控件使用的一些基础知识。理解并熟练掌握这些内容对于开发Android应用至关重要。在实际项目中,还需要考虑其他因素,比如Activity的栈管理(back stack)、Activity的配置...
在Android开发中,Activity是应用程序的基本构建块,它负责与用户进行交互并展示UI。本篇文章将深入探讨如何在Activity中使用嵌套布局,这是创建复杂用户界面的关键技术。我们将结合源码分析和实用工具来理解这个...
这个压缩包"安卓动画效果相关-activity切换特效.rar"包含了关于如何实现Android应用中Activity之间过渡的动画效果的相关资源。虽然由于文件数量众多,无法逐一验证其可用性,但它们提供了学习和参考的价值。 在...
在Android开发中,Activity是应用程序的基本构建块,用于展示用户界面和处理用户交互。当我们希望Activity的背景变得透明,以实现如悬浮窗、半透明过渡效果等设计需求时,就需要对Activity进行一些特殊的配置。本篇...
在Android开发中,Activity是应用程序的基本组件,用于承载用户界面。Activity之间的切换动画可以极大地提升用户体验,"android activity右进右出动画"就是一个常见的应用场景,它使得应用在切换时具有更加自然、...
Android Activity学习笔记 Android Activity是Android系统中最基本的组件之一,它负责处理用户交互和显示用户界面。本文将深入讲解Activity的生命周期、Activity之间的数据交互、Activity启动模式、Task和BackStack...
Android Activity 生命周期 Android Activity 生命周期是指 Activity 从创建到销毁的整个过程,该过程中会经历多个状态变化,每个状态变化都会触发相应的回调方法。理解 Activity 生命周期是 Android 开发的基础。 ...
在Android应用开发中,Activity是应用程序的基本构建块,它代表用户界面的一个屏幕。理解Activity的跳转和ListView的使用是Android开发中至关重要的技能。在这个主题中,我们将深入探讨如何通过Intent和Bundle实现...
在Android应用开发中,Activity是核心组件之一,它代表了用户界面的一个屏幕或者一个交互窗口。这个"android Activity 详述 demo"旨在深入探讨Activity的工作原理及其在实际应用中的使用方式。通过链接给出的博客...
### Android 中从Activity1跳转到Activity2再回到Activity1所经历的生命周期 在Android开发过程中,理解Activity的生命周期对于管理界面状态、处理用户交互以及响应系统事件至关重要。本文将详细解析从一个Activity...
在Android开发中,有时我们需要创建一个弹出式对话框来与用户进行交互,但不同于常见的`Dialog`类,我们可以利用`Activity`来实现这一功能。这种方式适用于需要更复杂交互或者自定义布局的情况。本文将详细讲解如何...
【Android Intent 启动和关闭Activity】 在Android应用程序开发中,Intent是连接各个组件(如Activity、Service等)的关键桥梁,主要用于启动和关闭Activity。Intent不仅能够启动一个新的Activity,还能在Activity...
在Android开发中,Activity是应用程序的基本构建块,它代表了一个用户可见并与其交互的屏幕。Activity可以展示用户界面,处理用户输入,并与系统服务或其它应用程序进行交互。本压缩包"Activityzhuanghuantexiao...
在Android应用开发中,Activity是构成应用程序的基本组件,它代表用户界面的一个屏幕。有时,我们需要在子Activity执行某些操作后将结果返回给父Activity。这个过程通常涉及到Intent的使用,Intent不仅用于启动新的...
关于压缩包内的`CameraDemo`,这可能是一个演示如何在悬浮Activity中使用相机的例子。在悬浮Activity中集成相机功能需要处理权限、初始化Camera对象、创建预览SurfaceView以及处理拍照事件。首先,在AndroidManifest...
### Android Activity之间数据的回传 #### 一、引言 在Android开发中,Activity间的交互是非常常见的需求。特别是当我们需要从一个Activity跳转到另一个Activity,并希望在完成某些操作后能够将数据回传给原始...
在Android开发中,Activity是应用程序的基本构建块,用于展示用户界面和处理用户交互。Activity间的切换动画不仅可以提升用户体验,还能让应用更具个性化和吸引力。本文将深入探讨多种Activity切换动画的实现方法,...