Android 窗口已聚焦,忽略的聚焦增益用于提高精灵的高度首选项
我知道以前有人问过这个问题,我仔细看了所有的答案,不,这不是那个,是的,我在清单上有活动的名称,所以不是那个。 我的问题是: 我有一个精灵在屏幕上移动,在你选择livewallpaper的窗口中,我有一个让用户选择高度的首选项(这样他们就可以上下移动精灵)。唯一的问题是精灵一直在移动,所以当他们使用seekbar上下移动精灵时,我得到了旧的“窗口”已经聚焦,忽略“现在,如果我出去,然后再回来”的焦点增益,当然,这会停止并重新启动它,新的偏好高度已经在他们的屏幕中,所以它会移动到新的高度,但不会在实时预览中。 以下是精灵代码:Android 窗口已聚焦,忽略的聚焦增益用于提高精灵的高度首选项,android,sprite,sharedpreferences,Android,Sprite,Sharedpreferences,我知道以前有人问过这个问题,我仔细看了所有的答案,不,这不是那个,是的,我在清单上有活动的名称,所以不是那个。 我的问题是: 我有一个精灵在屏幕上移动,在你选择livewallpaper的窗口中,我有一个让用户选择高度的首选项(这样他们就可以上下移动精灵)。唯一的问题是精灵一直在移动,所以当他们使用seekbar上下移动精灵时,我得到了旧的“窗口”已经聚焦,忽略“现在,如果我出去,然后再回来”的焦点增益,当然,这会停止并重新启动它,新的偏好高度已经在他们的屏幕中,所以它会移动到新的高度,但不会在
private void addShipOne() {
int heightPosition = (screenSized / 2) - (screenSized / /*this.bigShipHeight*/gettheFreakingHeight());
int widthPosition = 0;
Point startPoint = new Point(widthPosition, heightPosition);
this._shipone.add(new SpaceShipOne(this._context, this, startPoint, 125));
(很抱歉我用来测试快速版本的方法名,当时我有点沮丧)哈哈
然后它进入OnDraw方法,然后进入渲染以渲染所有内容
public void render(){
Canvas canvas = null;
try{
canvas = this._surfaceHolder.lockCanvas(null);
synchronized (this._surfaceHolder) {
this.onDraw(canvas);
}
}finally{
if(canvas != null){
this._surfaceHolder.unlockCanvasAndPost(canvas);
}
}
}
我有另一个偏好,允许用户选择船舶出现的频率。它工作正常,但它从左到右,然后改变船舶,所以它更新频率,然后,但高度一个不工作,我测试了日志,以确保高度int通过,它不这样做,我唯一能想到的是with是当船向左或向右转弯时可能添加的,但从外观上看,它在移动时不起作用。
this.bigShipHeight是新高度值的所在(我刚刚用gettheFreakingHeight()以另一种方式进行了测试)(我对该方法使用了if-else语句,该语句使用了frquency首选项,但效果很好。
只需添加完整的代码部分。
在onDraw(画布)中
我认为34;希波尼"是这样的
for (Renderable renderable : this._shipone) {
renderable.render(canvas);
}
任何帮助都将不胜感激。
提前谢谢
Sam好的,我应该先看看我的sprite类,很抱歉,我再次回答了我自己的问题,这太明显了,这就是我从长期看代码中得到的,我应该走开然后回来,那时总是更清楚 万一别人碰到这个问题,我会给出答案。 在我的sprite课程中,SpaceShipOne运行的时候,我刚刚添加了这个
this.getSprite().setYPos(this._blimp.gettheFreakingHeight());
这会立即更新,没有窗口已经聚焦。
我不知道为什么我昨晚没有看到这个,因为这是唯一一个可以立即添加和更新的地方,我所要做的就是将Y位置设置为首选项。
它就像一个符咒。
希望这能帮助其他人
萨姆