0
我編寫了一個基本的遊戲應用程序,它由可以通過滑動(類似於CandyCrush)交換的塊組成。我成功地識別了輕掃手勢,但是我的代碼改變了GridLayout中視圖(塊)的位置,只能在模擬器中使用,但不能在真實設備(Samsung Galaxy S3)上使用。GridLayout(Android)中兩個視圖的交換位置
另外我找不到一種方式爲兩個視圖的交換設置動畫。我已經將android:animateLayoutChanges="true"
添加到GridLayout XML中,但它沒有改變任何內容。
這裏是我的交換代碼:
// change to blocks positions in grid layout
GridLayout.LayoutParams sourceParams = (GridLayout.LayoutParams)this.imageView.getLayoutParams();
GridLayout.LayoutParams targetParams = (GridLayout.LayoutParams)otherBlock.imageView.getLayoutParams();
GridLayout.Spec sourceRowSpec = sourceParams.rowSpec;
GridLayout.Spec sourceColumnSpec = sourceParams.columnSpec;
sourceParams.rowSpec = targetParams.rowSpec;
sourceParams.columnSpec = targetParams.columnSpec;
targetParams.rowSpec = sourceRowSpec;
targetParams.columnSpec = sourceColumnSpec;
this.imageView.setLayoutParams(sourceParams);
otherBlock.imageView.setLayoutParams(targetParams);
gameGridLayout.requestLayout();
而這裏的應用程序的截圖:
我已經有了一張可以繪製的索引表。我實際上畫了它,但我不想刪除所有視圖並重新繪製每個塊,只交換兩個塊。這會花費不必要的時間。難道只重繪這兩個?或者我誤解了你的建議? – CGee
現代處理器可以處理大量視圖操作,不用擔心效率問題。 :) – Lovy
我的意思是,看看殭屍海嘯,例如,大約100個意見畫的每一幀,加上rotozoom操作殭屍和硬幣 – Lovy