当前位置: 编程技术>移动开发
本页文章导读:
▪获取在显示的Activity-转载 获取正在显示的Activity-转载
1. ActivityManager am = (ActivityManager) getSystemService(ACTIVITY_SERVICE); 2. ComponentName cn = am.getRunningTasks(1).get(0).topActivity; 3. Log.d("", "pkg:"+cn.getPackageName()); .........
▪ Activity生命周期跟对话框 Activity生命周期和对话框
在一个Android程序中至少得有一个Activity,Android是一个对象,也就是可以想象成有生命形式的存在的一种方式,生命有生老病死的过程,伴随着Activity的一系列生命.........
▪ OpenGL学习四 OpenGL学习4
绘制一个3D的三棱锥
1.代码
package com.lanhuidong.opengl;
import java.nio.FloatBuffer;
import javax.microedition.khronos.egl.EGLConfig;
import javax.microedition.khronos.opengles.GL10;
import com.lanhuidong.opengl.util.Buf.........
[1]获取在显示的Activity-转载
来源: 互联网 发布时间: 2014-02-18
获取正在显示的Activity-转载
1. ActivityManager am = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
2. ComponentName cn = am.getRunningTasks(1).get(0).topActivity;
3. Log.d("", "pkg:"+cn.getPackageName());
4. Log.d("", "cls:"+cn.getClassName());
1. ActivityManager am = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
2. ComponentName cn = am.getRunningTasks(1).get(0).topActivity;
3. Log.d("", "pkg:"+cn.getPackageName());
4. Log.d("", "cls:"+cn.getClassName());
[2] Activity生命周期跟对话框
来源: 互联网 发布时间: 2014-02-18
Activity生命周期和对话框
在一个Android程序中至少得有一个Activity,Android是一个对象,也就是可以想象成有生命形式的存在的一种方式,生命有生老病死的过程,伴随着Activity的一系列生命周期的方法决定着Activity的存不存在。这几个方法分别是长成这样的:onCreate();onStart();onResume();onPause();onStop();onDestroy();onRestart();根据单词就能大概判断出这几个方法是干什么用的。
当一个Activity第一次被创建的时候就会调用onCreate();这个时候可以初始化数据,绑定LIstView,这个是帮助文档上如是说。
onStart();是当一个Activity可以被用户看到的时候就会调用onStart();
onRestart();当再次启动的时候就会调用这个方法;
onResume();在Android应用程序里面所有的Activity都存放在一个Activity栈里面,所谓的栈就是遵循LIFO(last in first out)规律的存储空间,对于这段Activity的存储空间只有两种操作,压栈弹栈,所以对于放在最顶上的Activity总是最先被看到。onResume();就是当这个Activity被置于栈顶的时候调用的方法;
onPause();当启动另一个Activity的时候会调用此方法,新的Activity会把旧的Activity遮住,此时就是被遮住那个Activity调用onPause();如果时间久了原来被遮住的Activity都会消失可以理解位线程挂起的状态。
onStop()跟onPause();方法的区别就在于当一个Activity被完全遮住的时候就会调用onStop()方法,当前Activity只被局部遮住,被遮住的Activity已经用鼠标点不到的情况下就会调用onPause();
onDestroy();毫无疑问最后的这个方法是销毁这个Activity,同样的finish();这个方法同样会调用onDestroy()方法销毁Activity
最后来看看对话框:
写过javascript的哥们姐们都应该知道在那个里面最好的调试bug的工具就是alert();弹出来看看里面到底是些什么东西既方便又快捷还直观。不知道Android里面的对话框能不能用来作调试。不管能不能先学会了弹对话框肯定没坏处。
一样的新建Android项目,名字随便取自己人的就好,建好了以后第一件事就是该确定用哪种方式来布局,布局有两种方式,一种是在布局.xml文件里面写好,然后再onCreate()方法里面设置setContentView();两种方式效果都是一样的,本人崇尚与在程序端new 对象,一个Button就是一个对象,java的万物皆对象就是这个意思。当然这个随个人喜好。
虽然本人崇尚在程序段new对象,但是今天这个就是几个Button做测试练手的。
在layout布局文件中写四个Button。分别是 弹出来两个Button的对话框,弹出来三个Button的对话框,和弹出来能输入文本的对话框,最后一个是个进度条的对话框。
首先在类中定义四个int类型的变量取好名字,在onCreate()方法中得到四个Button ,也就是findViewById();得到以后分别设置点击事件,重写父类的onCreateDialog方法,传进来一个Id,假设点击的是第一个Button那就传1就来,第二个Button就传2,再创建Dialog对象,这个过程看上去很麻烦,这个掉那个那个调这个,有个简单的方法直接弹出对话框:
在一个按钮的点击事件里面这样写到:AlertDialog.Builder builder=new AlertDialog.Builder(context);builder就是一个Dialog对象,需要设置builder.setTitle();builder.setMsg();设置属性,然后 builder.show();就可以了;
在一个Android程序中至少得有一个Activity,Android是一个对象,也就是可以想象成有生命形式的存在的一种方式,生命有生老病死的过程,伴随着Activity的一系列生命周期的方法决定着Activity的存不存在。这几个方法分别是长成这样的:onCreate();onStart();onResume();onPause();onStop();onDestroy();onRestart();根据单词就能大概判断出这几个方法是干什么用的。
当一个Activity第一次被创建的时候就会调用onCreate();这个时候可以初始化数据,绑定LIstView,这个是帮助文档上如是说。
onStart();是当一个Activity可以被用户看到的时候就会调用onStart();
onRestart();当再次启动的时候就会调用这个方法;
onResume();在Android应用程序里面所有的Activity都存放在一个Activity栈里面,所谓的栈就是遵循LIFO(last in first out)规律的存储空间,对于这段Activity的存储空间只有两种操作,压栈弹栈,所以对于放在最顶上的Activity总是最先被看到。onResume();就是当这个Activity被置于栈顶的时候调用的方法;
onPause();当启动另一个Activity的时候会调用此方法,新的Activity会把旧的Activity遮住,此时就是被遮住那个Activity调用onPause();如果时间久了原来被遮住的Activity都会消失可以理解位线程挂起的状态。
onStop()跟onPause();方法的区别就在于当一个Activity被完全遮住的时候就会调用onStop()方法,当前Activity只被局部遮住,被遮住的Activity已经用鼠标点不到的情况下就会调用onPause();
onDestroy();毫无疑问最后的这个方法是销毁这个Activity,同样的finish();这个方法同样会调用onDestroy()方法销毁Activity
最后来看看对话框:
写过javascript的哥们姐们都应该知道在那个里面最好的调试bug的工具就是alert();弹出来看看里面到底是些什么东西既方便又快捷还直观。不知道Android里面的对话框能不能用来作调试。不管能不能先学会了弹对话框肯定没坏处。
一样的新建Android项目,名字随便取自己人的就好,建好了以后第一件事就是该确定用哪种方式来布局,布局有两种方式,一种是在布局.xml文件里面写好,然后再onCreate()方法里面设置setContentView();两种方式效果都是一样的,本人崇尚与在程序端new 对象,一个Button就是一个对象,java的万物皆对象就是这个意思。当然这个随个人喜好。
虽然本人崇尚在程序段new对象,但是今天这个就是几个Button做测试练手的。
在layout布局文件中写四个Button。分别是 弹出来两个Button的对话框,弹出来三个Button的对话框,和弹出来能输入文本的对话框,最后一个是个进度条的对话框。
首先在类中定义四个int类型的变量取好名字,在onCreate()方法中得到四个Button ,也就是findViewById();得到以后分别设置点击事件,重写父类的onCreateDialog方法,传进来一个Id,假设点击的是第一个Button那就传1就来,第二个Button就传2,再创建Dialog对象,这个过程看上去很麻烦,这个掉那个那个调这个,有个简单的方法直接弹出对话框:
在一个按钮的点击事件里面这样写到:AlertDialog.Builder builder=new AlertDialog.Builder(context);builder就是一个Dialog对象,需要设置builder.setTitle();builder.setMsg();设置属性,然后 builder.show();就可以了;
[3] OpenGL学习四
来源: 互联网 发布时间: 2014-02-18
OpenGL学习4
绘制一个3D的三棱锥
1.代码
package com.lanhuidong.opengl; import java.nio.FloatBuffer; import javax.microedition.khronos.egl.EGLConfig; import javax.microedition.khronos.opengles.GL10; import com.lanhuidong.opengl.util.BufferToNativeOrder; import android.opengl.GLSurfaceView.Renderer; public class OpenGL3DRender implements Renderer { private float unit = 0.5f; private float sqrt = (float) Math.sqrt(3); private float[] triArray = new float[] { 0, unit, 0, -unit, 0, unit/sqrt, unit, 0, unit/sqrt, 0, unit, 0, unit, 0, unit/sqrt, 0, 0, -unit*2*sqrt/3, 0, unit, 0, 0, 0, -unit*2*sqrt/3, -unit, 0, unit/sqrt, -unit, 0, unit/sqrt, unit, 0, unit/sqrt, 0, 0, -unit*2*sqrt/3 }; private float colorUnit = 1f; private float[] triColor = new float[]{ colorUnit, 0, 0, colorUnit, 0, colorUnit, 0, colorUnit, 0, colorUnit, colorUnit, colorUnit, colorUnit, 0, 0, colorUnit, 0, colorUnit, colorUnit, colorUnit, colorUnit, 0, colorUnit, colorUnit, colorUnit, 0, 0, colorUnit, 0, colorUnit, 0, colorUnit, colorUnit, 0, colorUnit, colorUnit, 0, colorUnit, 0, colorUnit, 0, colorUnit, colorUnit, colorUnit, colorUnit, 0, colorUnit, colorUnit }; private float triangle = 0f; @Override public void onDrawFrame(GL10 gl) { gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT); gl.glLoadIdentity(); gl.glEnableClientState(GL10.GL_VERTEX_ARRAY); gl.glEnableClientState(GL10.GL_COLOR_ARRAY); FloatBuffer floatBuffer = BufferToNativeOrder.getNativeOrderFloatBuffer(triArray); gl.glVertexPointer(3, GL10.GL_FLOAT, 0, floatBuffer); gl.glColorPointer(4, GL10.GL_FLOAT, 0, BufferToNativeOrder.getNativeOrderFloatBuffer(triColor)); gl.glRotatef(triangle, 0, 1, 0); triangle += 1f; for(int i = 0; i < 4; i++){ gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, i * 3, 3); } gl.glDisableClientState(GL10.GL_COLOR_ARRAY); gl.glDisableClientState(GL10.GL_VERTEX_ARRAY); } @Override public void onSurfaceChanged(GL10 gl, int width, int height) { gl.glViewport(0, 0, width, height); float ratio = (float) width / height; gl.glMatrixMode(GL10.GL_PROJECTION); gl.glLoadIdentity(); gl.glFrustumf(-ratio, ratio, -1, 1, 1, 10); } @Override public void onSurfaceCreated(GL10 gl, EGLConfig config) { gl.glClearColor(0, 0, 1.0f, 0.5f); } }
2.效果
最新技术文章: