当前位置: 编程技术>移动开发
本页文章导读:
▪状态栏 标题栏 暗藏 状态栏 标题栏 隐藏
状态栏 标题栏 隐藏
隐藏之 可以使可视面积最大化 且二者所代表的区域不同
1. 默认界面 即:二者都显示 供大家比较比较
2. 隐藏 状态栏 即:最上方的.........
▪ LunarLander and Snake 游戏更新线程小结 LunarLander and Snake 游戏更新线程总结
snake:是通过send和receive MSG方法来实现视图的跟新。invalidate()sudokuv:是也是通过invalidate跟新视图。由于没有自更新。所以视图变化发生在按键事件jetboy:.........
▪ layout_gravity跟gravity的区别 layout_gravity和gravity的区别
自己记录一下:原文是layout_gravity : Standard gravity constant that a child can supply to its parent. Defines how to place an object, both its x and y axis, within a larger containing object gravity定义.........
[1]状态栏 标题栏 暗藏
来源: 互联网 发布时间: 2014-02-18
状态栏 标题栏 隐藏
这是个好方法,省却了在代码中冗长的API调用,但我发现不用自定义主题,Android自己的有:
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
状态栏 标题栏 隐藏
隐藏之 可以使可视面积最大化 且二者所代表的区域不同
1. 默认界面 即:二者都显示 供大家比较比较
2. 隐藏 状态栏 即:最上方的信号强度 3G网络 等属性
* 如何隐藏
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
* 运行截图:
3. 隐藏 标题栏 即:ImageSizeUpdate 那行
* 如何隐藏
//注意:2行代码的先后顺序 不能颠倒 requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.main);
* 运行截图:
4. 而且 可以同时使用二者以使可视面积最大化!
结束之!
1 楼
风小却
2010-03-22
一个App的风格应该要统一,如果某一个 Activity 要 NoTitle and FullScreen ,其它的应该也要,写在代码里不如写在XMl 配置里。
android:theme="@style/Theme.NotitleFullscreen”
android:theme="@style/Theme.NotitleFullscreen”
2 楼
zero1
2010-04-13
学习了……
3 楼
Vimesly
2010-09-18
高手啊!请问可以隐藏浏览器里面的地址栏吗?
4 楼
cnetwei
2010-10-09
风小却 写道
一个App的风格应该要统一,如果某一个 Activity 要 NoTitle and FullScreen ,其它的应该也要,写在代码里不如写在XMl 配置里。
android:theme="@style/Theme.NotitleFullscreen”
android:theme="@style/Theme.NotitleFullscreen”
这是个好方法,省却了在代码中冗长的API调用,但我发现不用自定义主题,Android自己的有:
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
5 楼
sky_guang
2010-10-10
还有这个自带的theme啊,以前都自己调用api实现的,学习了
6 楼
philshang
2010-10-12
可是如果再加上Translucent就出问题了,状态栏仍然存在
具体可以参考一下我的这个问题
http://www.iteye.com/problems/51504
反复试过,都不行的
具体可以参考一下我的这个问题
http://www.iteye.com/problems/51504
反复试过,都不行的
[2] LunarLander and Snake 游戏更新线程小结
来源: 互联网 发布时间: 2014-02-18
LunarLander and Snake 游戏更新线程总结
snake:是通过send和receive MSG方法来实现视图的跟新。invalidate()
sudokuv:是也是通过invalidate跟新视图。由于没有自更新。所以视图变化发生在按键事件
jetboy:类似lunarlander
LunarLander:是通过线程在RUN方法中while(TRUE)中一直执行dodraw方法。其中它需要取得屏幕的canvas
1.extends view。这个方法所有的绘制都在onDraw()函数里进行,通过调用invalidate()通知系统调用onDraw()重绘屏幕,但是如果是在非UI线程中请求重绘就不一样了,具体怎么做大家自己去看看相关的东西。我没有看过,因为一般游戏开发我们会选择下一种方法。
2.extends SurfaceView,这是游戏开发最常用的方式,应该说如果你的游戏需要不停的更新图像,比如有帧动画的播放等等,那么就采用这种方式吧。
surfaceview的方式下你需要 implements SurfaceHolder.Callback
class SurfaceViewCore extends SurfaceView implements SurfaceHolder.Callback
LunarLander
Snake
snake:是通过send和receive MSG方法来实现视图的跟新。invalidate()
sudokuv:是也是通过invalidate跟新视图。由于没有自更新。所以视图变化发生在按键事件
jetboy:类似lunarlander
LunarLander:是通过线程在RUN方法中while(TRUE)中一直执行dodraw方法。其中它需要取得屏幕的canvas
1.extends view。这个方法所有的绘制都在onDraw()函数里进行,通过调用invalidate()通知系统调用onDraw()重绘屏幕,但是如果是在非UI线程中请求重绘就不一样了,具体怎么做大家自己去看看相关的东西。我没有看过,因为一般游戏开发我们会选择下一种方法。
2.extends SurfaceView,这是游戏开发最常用的方式,应该说如果你的游戏需要不停的更新图像,比如有帧动画的播放等等,那么就采用这种方式吧。
surfaceview的方式下你需要 implements SurfaceHolder.Callback
class SurfaceViewCore extends SurfaceView implements SurfaceHolder.Callback
LunarLander
class LunarView extends SurfaceView implements SurfaceHolder.Callback {
public LunarView(Context context, AttributeSet attrs) {
super(context, attrs);
// register our interest in hearing about changes to our surface
SurfaceHolder holder = getHolder();
holder.addCallback(this);
// create thread only; it's started in surfaceCreated()
thread = new LunarThread(holder, context, new Handler() {
@Override
public void handleMessage(Message m) {
mStatusText.setVisibility(m.getData().getInt("viz"));
mStatusText.setText(m.getData().getString("text"));
}
});
setFocusable(true); // make sure we get key events
}
@Override
public void onWindowFocusChanged(boolean hasWindowFocus) {
if (!hasWindowFocus) thread.pause();
}
public void surfaceCreated(SurfaceHolder holder) {
// start the thread here so that we don't busy-wait in run()
// waiting for the surface to be created
thread.setRunning(true);
thread.start();
}
public void surfaceDestroyed(SurfaceHolder holder) {
// we have to tell thread to shut down & wait for it to finish, or else
// it might touch the Surface after we return and explode
boolean retry = true;
thread.setRunning(false);
while (retry) {
try {
thread.join();
retry = false;
} catch (InterruptedException e) {
}
}
}
class LunarThread extends Thread {
public LunarThread(SurfaceHolder surfaceHolder, Context context,
Handler handler) {
// get handles to some important objects
mSurfaceHolder = surfaceHolder;
mHandler = handler;
mContext = context;
}
public void run() {
while (mRun) {
Canvas c = null;
try {
c = mSurfaceHolder.lockCanvas(null);
synchronized (mSurfaceHolder) {
if (mMode == STATE_RUNNING) updatePhysics();
doDraw(c);
}
} finally {
// do this in a finally so that if an exception is thrown
// during the above, we don't leave the Surface in an
// inconsistent state
if (c != null) {
mSurfaceHolder.unlockCanvasAndPost(c);
}
}
}
}
public void setState(int mode, CharSequence message) {
synchronized (mSurfaceHolder) {
mMode = mode;
if (mMode == STATE_RUNNING) {
Message msg = mHandler.obtainMessage();
Bundle b = new Bundle();
b.putString("text", "");
b.putInt("viz", View.INVISIBLE);
msg.setData(b);
mHandler.sendMessage(msg);
} else {
if (message != null) {
str = message + "\n" + str;
}
if (mMode == STATE_LOSE) mWinsInARow = 0;
Message msg = mHandler.obtainMessage();
Bundle b = new Bundle();
b.putString("text", str.toString());
b.putInt("viz", View.VISIBLE);
msg.setData(b);
mHandler.sendMessage(msg);
}
}
}
private void doDraw(Canvas canvas) {
}
}
}
Snake
public class SnakeView extends TileView {
private static final Random RNG = new Random();
private RefreshHandler mRedrawHandler = new RefreshHandler();
class RefreshHandler extends Handler {
@Override
public void handleMessage(Message msg) {
SnakeView.this.update();
SnakeView.this.invalidate();
}
public void sleep(long delayMillis) {
this.removeMessages(0);
sendMessageDelayed(obtainMessage(0), delayMillis);
}
};
public SnakeView(Context context, AttributeSet attrs) {
super(context, attrs);
initSnakeView();
}
public SnakeView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
initSnakeView();
}
private void initSnakeView() {
setFocusable(true);
}
private void initNewGame() {
}
public void update() {
mRedrawHandler.sleep(mMoveDelay);
}
}
}
[3] layout_gravity跟gravity的区别
来源: 互联网 发布时间: 2014-02-18
layout_gravity和gravity的区别
自己记录一下:
原文是
layout_gravity : Standard gravity constant that a child can supply to its parent. Defines how to place an object, both its x and y axis, within a larger containing object
gravity定义了这个元素内所有子元素对于这个元素的布局
比如一个TextView内部文字的align
layout_gravity定义了这个元素相对于父元素(比如Layout)的布局
比如一个TextView在整个Layout中的位置
所以说, 在Layout里面定义layout_gravity的属性是没用的.
自己记录一下:
原文是
layout_gravity : Standard gravity constant that a child can supply to its parent. Defines how to place an object, both its x and y axis, within a larger containing object
gravity定义了这个元素内所有子元素对于这个元素的布局
比如一个TextView内部文字的align
layout_gravity定义了这个元素相对于父元素(比如Layout)的布局
比如一个TextView在整个Layout中的位置
所以说, 在Layout里面定义layout_gravity的属性是没用的.
最新技术文章: