我正在實現android(api> 14)的3D卡片翻轉動畫,並遇到大屏幕平板電腦(> 2048 dpi)的問題。在問題調查期間,我已經到了以下基本塊:Android視圖在大分辨率屏幕上的3D旋轉轉換
嘗試使用矩陣和旋轉相機的矩陣和旋轉角度來轉換視圖(簡單的ImageView),並且它對角度< 60和角度> 120(轉換和顯示),但圖像消失(只是沒有顯示)時,角度爲60和120之間。這裏是我使用的代碼:
private void applyTransform(float degree)
{
float [] values = {1.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 1.0f};
float centerX = image1.getMeasuredWidth()/2.0f;
float centerY = image1.getMeasuredHeight()/2.0f;
Matrix m = new Matrix();
m.setValues(values);
Camera camera = new Camera();
camera.save();
camera.rotateY(degree);
camera.getMatrix(m);
camera.restore();
m.preTranslate(-centerX, -centerY); // 1 draws fine without these 2 lines
m.postTranslate(centerX, centerY); // 2
image1.setImageMatrix(m);
}
這裏是我的佈局XML
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/ImageView01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:src="@drawable/naponer"
android:clickable="true"
android:scaleType="matrix">
</ImageView>
</FrameLayout>
所以我有以下情況:
- 如果在小屏幕800X480,1024x720,運行等工作正常的任何角度,任何中心點...
- 工程確定爲角度< 60和大屏幕設備2048×1536運行時,> 120,2560×1600。 ..
- 如果旋轉不居中,任何設備上的任何角度都可以正常工作(矩陣前後翻譯註釋掉)
- 在大屏幕設備上運行時失敗(圖像消失),旋轉居中且角度介於60和120之間度。
請告訴我做錯了什麼,並建議一些解決方法...謝謝!
如果您爲AndroidManifest.xml中的活動定義了android:hardwareAccelerated =「false」,問題是否消失? – samgak
沒有效果,測試hardwareAccelerated啓用和禁用的情況下 – Henrik
你試過玩相機的距離(例如'camera.setLocation(0,0,-20f)'? – matiash