簡體   English   中英

如何以編程方式為相對布局設置z-index

[英]How to set z-index for relative layout programmatically

我正在為Android應用測試一些代碼。 我有2個視圖,一個是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的情況下以編程方式設置視圖的z索引?

好,找到了。 問題出在這一行:

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

我通過插入硬編碼坐標進行了更改:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM