[英]ScrollView with a SurfaceView
目前,我有一個自定義SurfaceView,用於我用於項目的特定尺寸的面板。 但是我正在研究擴展它,因此我需要一個ScrollView來相應地滾動它。 但是我不確定如何將2合並在一起。
我的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.