我正在尝试创建一个仅在应用程序第一次启动时出现的弹出窗口.我希望它显示一些文本并有一个按钮来关闭弹出窗口.但是,我在让PopupWindow工作时遇到了麻烦.我尝试了两种不同的方法:
首先我有一个XML文件,它声明了popup.xml的布局(在linearlayout中的textview),我在主Activity的OnCreate()中添加了这个:
PopupWindow pw = new PopupWindow(findViewById(R.id.popup), 100, 100, true);
pw.showAtLocation(findViewById(R.id.main), Gravity.CENTER, 0, 0);
Run Code Online (Sandbox Code Playgroud)
其次,我使用此代码完全相同:
final LayoutInflater inflater = (LayoutInflater)this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
PopupWindow pw = new PopupWindow(inflater.inflate(R.layout.popup, (ViewGroup) findViewById(R.layout.main) ), 100, 100, true);
pw.showAtLocation(findViewById(R.id.main_page_layout), Gravity.CENTER, 0, 0);
Run Code Online (Sandbox Code Playgroud)
第一个抛出NullPointerException,第二个抛出BadTokenException并说"无法添加窗口 - 令牌null无效"
世界上我做错了什么?我是非常新手所以请耐心等待.
我有一个显示漫画书的Android应用程序.为了利用内置的缩放控件,我正在加载图片,WebView如下所示:
webView.loadUrl("file:///android_asset/page1.jpg");
Run Code Online (Sandbox Code Playgroud)
然而,这工作正常,因为图像在资源文件夹中,它们没有被压缩,这使得我的.apk非常大.我想知道如何引用资源文件(从res/drawable文件夹)与我上面的资产一样的文件路径.有谁知道那条路会是什么样的?我尝试过"file:///res/drawable/pagetitle.jpg"没有成功的事情.谢谢您的帮助.
更新:
我发现那"file:///android_res/drawable/page1.jpg"是我正在寻找的道路.
我发现自己只想在变量发生变化时才想在程序中做某些事情.到目前为止,我一直在做这样的事情:
int x = 1;
int initialx = x;
...//code that may or may not change the value of x
if (x!=initialx){
doOneTimeTaskIfVariableHasChanged();
initialx = x; //reset initialx for future change tests
}
Run Code Online (Sandbox Code Playgroud)
这样做有更好/更简单的方法吗?
我是OpenGL的新手,我正在通过使用ES 2.0为Android制作2D游戏来自学.我首先创建一个"Sprite"类,创建一个平面并为其渲染纹理.为了练习,我有两个Sprite对象在同一个地方交替绘制.我在ES 1.0上运行得很好,但是现在我已经切换到2.0,我得到了一个没有错误的黑屏.我已经筋疲力尽地想弄清楚我做错了什么,但我有一种强烈的感觉,它与我的着色器有关.我将把所有相关的代码转储到这里,希望有人可以给我一个答案或者一些关于我做错的建议.如果我没有立即明白我做错了什么,或许就如何解决这个问题提出一些建议?提前感谢您查看我即将发布的所有代码.
我发布的三个类是:
GameRenderer - 我的GLSurfaceView
着色器的渲染器 - 创建着色器程序对象
Sprite - 创建一个正方形并在其上绘制纹理
另外,我将发布我的顶点和片段着色器源.
相关课程我认为没有足够的相关性来发布:
GameActivity GameView
- 一个GLSurfaceView
GameLoopThread - 我的主要游戏循环
FPSCounter - 每100帧输出平均FPS到logcat.
GameRender类:
package com.detour.raw;
import javax.microedition.khronos.egl.EGLConfig;
import javax.microedition.khronos.opengles.GL10;
import android.content.Context;
import android.graphics.Bitmap;
import android.opengl.GLES20;
import android.opengl.GLU;
import android.opengl.Matrix;
import android.opengl.GLSurfaceView;
public class GameRenderer implements GLSurfaceView.Renderer{
private static final String LOG_TAG = GameRenderer.class.getSimpleName();
Context mContext;
Bitmap bitmap;
private float red = 0.0f;
private float green = 0.0f;
private float blue = 0.0f;
Shader …Run Code Online (Sandbox Code Playgroud) 我正在努力应对从OpenGL ES 1.x到2.0的复杂性.我正在尝试将纹理应用于矩形平面,然后能够缩放和平移该平面,同时保持纹理正确映射.
我的问题是:我做错了什么?在翻译和缩放它们时,我如何能够对我的飞机进行纹理化?
我将发布我的渲染器类,对象将用于绘制自己的类,以及我的顶点和片段着色器:
GL渲染器:
package com.detour.raw;
import javax.microedition.khronos.egl.EGLConfig;
import javax.microedition.khronos.opengles.GL10;
import android.content.Context;
import android.graphics.Bitmap;
import android.opengl.GLES20;
import android.opengl.GLSurfaceView;
import android.opengl.Matrix;
public class GameRenderer implements GLSurfaceView.Renderer{
private static final String TAG = "GameRenderer";
Context mContext;
Bitmap bitmap;
private float red = 0.5f;
private float green = 0.5f;
private float blue = 0.5f;
Shader shader;
int program;
FPSCounter fps;
Sprite sprite;
Sprite sprite2;
int x = 0;
private int muMVPMatrixHandle;
private float[] mMVPMatrix = new float[16];
private float[] mProjMatrix = …Run Code Online (Sandbox Code Playgroud)