簡體   English   中英

帶有SurfaceView的ScrollView

[英]ScrollView with a SurfaceView

目前,我有一個自定義SurfaceView,用於我用於項目的特定尺寸的面板。 但是我正在研究擴展它,因此我需要一個ScrollView來相應地滾動它。 但是我不確定如何將2合並在一起。

自定義SurfaceView

我的SurfaceView使用.java文件創建其布局。 它沒有使用.xml創建布局。

//MySurfaceView.class

    public class MySurfaceView extends SurfaceView implements SurfaceHolder.Callback , Runnable{
        private SurfaceHolder surfaceHolder;
        private boolean isDestroyed = false;
        private Canvas canvas;
        private Paint paint;
        private int maxWidth;
        private int maxHeight;
        private Resources resources;
        int offset;

        final byte ON=1;
        final byte OFF=0;


        int[] ledPositionControl = new int[97];
        int ledBmpSize;
        int positionControlSize;
        int maxControl=96;
        int sizeControl=0;

        int row;
        int col;

        public MySurfaceView(Context context) {
            super(context);
            resources = context.getResources();
            init();     //load pictures 
            surfaceHolder = this.getHolder();
            surfaceHolder.addCallback(this);
            paint =new Paint();
        }

這是運行SurfaceView的類。

//Class that runs the SurfaceView Layout
public class drawingMode extends Activity implements OnClickListener {

    public static int screenWidth;
    public static int screenHeight;
    private SharedPreferences sPrefs;
    final byte ON = 1;
    final byte OFF = 0;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(new MySurfaceView(this));

        DisplayMetrics metric = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(metric);
        screenWidth = metric.widthPixels; 
        screenHeight = metric.heightPixels;
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);

現在如何將這個SurfaceView合並到ScrollView布局中? 我有一個內部帶有ScrollView.xml文件,但是我嘗試通過.xml通過標記明智地放置SurfaceView,但沒有成功。 我還嘗試了.addView ,但它也無法正常工作,給了我一些錯誤。

//I put this in a the onCreate of a class.
    myScrollView = new ScrollView(getApplicationContext());
            myScrollView.addView(new MySurfaceView(this));
            setContentView(R.layout.scrollsurfaceview);

首先,您沒有指定LayoutParams。 其次,您有一個錯誤的setContentView。 最好的方法是將ScrollView放在layout.xml中。 如果您更願意在代碼中執行此操作,則以下提示:

 ScrollView myScrollView = new ScrollView(this);
 myScrollView.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, MATCH_PARENT));

 MySurfaceView myView = new MySurfaceView(this);
 myView.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, myHeight)); 

 myScrollView.addView(myView);
 setContentView(myScrollView);     // !!!!!!  

暫無
暫無

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

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