gpt4 book ai didi

android - 如何以编程方式为相对布局设置 z-index

转载 作者:行者123 更新时间:2023-11-30 02:51:37 25 4
gpt4 key购买 nike

我正在测试 Android 应用程序的一些代码。我有 2 个 View ,一个是 ImageView,另一个是 FastRenderView,它们都是用 Java 而不是 Xml 实现的。我想要做的是让 FastrenderView 全屏显示,并将 imageView 放在屏幕较小部分的顶部。问题是只有 fastrenderview 出现在屏幕上。这是代码:

...
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
assMan = getAssets();

rocketImage = new ImageView(this);
rocketImage.setBackgroundResource(R.drawable.rocket);
anime = (AnimationDrawable) rocketImage.getBackground();

layout = new RelativeLayout(this);

android.widget.RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.FILL_PARENT,RelativeLayout.LayoutParams.WRAP_CONTENT);
renderView = new FastRenderView(this);

android.widget.RelativeLayout.LayoutParams testbox = new RelativeLayout.LayoutParams(screenWidth/4,screenHeight/4);

layout.addView(renderView, 0, params);
layout.addView(rocketImage, 1, testbox);
setContentView(layout);

renderView.resume();
gDetector = new GestureDetector(getBaseContext(), this);
try{
is=assMan.open("pot.png");
bm = BitmapFactory.decodeStream(is);
bm = bm.copy(Config.ARGB_8888 ,true);
is.close();

is = assMan.open("boo1.png");
bm1 = BitmapFactory.decodeStream(is);
bm1 = bm1.copy(Config.ARGB_8888 ,true);
is.close();

is = assMan.open("boo3.png");
bm2 = BitmapFactory.decodeStream(is);
bm2 = bm2.copy(Config.ARGB_8888 ,true);
is.close();
} catch (Exception e) {
e.printStackTrace();
}


DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
screenHeight = metrics.heightPixels;
screenWidth = metrics.widthPixels;
scaleFactorX = screenWidth/480f;
scaleFactorY = screenHeight/800f;


dst.set((int)(0*scaleFactorX),(int)(0*scaleFactorY),(int)(479*scaleFactorX),(int)(799*scaleFactorY));
src.set(0, 0, 1024, 1024);

dst1.set((int)(0*scaleFactorX),(int)(0*scaleFactorY),(int)(100*scaleFactorX),(int)(100*scaleFactorY));
src1.set(0, 0, 1024, 1024);

dst2.set((int)(200*scaleFactorX),(int)(200*scaleFactorY),(int)(400*scaleFactorX),(int)(400*scaleFactorY));
src2.set(0, 0, 1024, 1024);

}

class FastRenderView extends SurfaceView implements Runnable{
Thread renderThread = null;
SurfaceHolder holder;
volatile boolean running = false;

@Override
public boolean onTouchEvent(MotionEvent me){
return gDetector.onTouchEvent(me);
}

public FastRenderView(Context context) {
super(context);
setKeepScreenOn(true);
holder=getHolder();
}

public void resume() {
running = true;
renderThread = new Thread(this);
renderThread.start();
}

public void pause() {
running = false;
while(true) {
try {
renderThread.join();
break;
} catch (InterruptedException e) {
// retry
}
}
renderThread = null;
}

public void run() {
while(running) {
if(!holder.getSurface().isValid())
continue;
Canvas canvas = holder.lockCanvas();
drawSurfice(canvas);
holder.unlockCanvasAndPost(canvas);
}
}


private void drawSurfice(Canvas canvas){
canvas.drawColor (Color.BLACK);
canvas.drawBitmap(bm, src, dst, null);
canvas.drawBitmap(bm1, src1, dst1, null);
canvas.drawBitmap(bm2, src2, dst2, null);
}

}

那么,有没有办法在不使用 xml 的情况下以编程方式设置 View 的 z 索引?

最佳答案

好的,找到了。问题出在这一行:

    android.widget.RelativeLayout.LayoutParams testbox = new RelativeLayout.LayoutParams(screenWidth/4,screenHeight/4);

我通过插入硬编码坐标进行了更改:

android.widget.RelativeLayout.LayoutParams testbox = new RelativeLayout.LayoutParams(100, 100);

关于android - 如何以编程方式为相对布局设置 z-index,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24055959/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com