我在縮放GIF電影框架時遇到問題。我在繪製框架之前使用了Canvas.scale(float sx,float sy)。但它沒有繪製縮放的框架,它沒有畫任何東西。任何ides?無法在Android Canvas中縮放gif移動框架
1
A
回答
1
這應該工作。
protected void onDraw(Canvas canvas)
{
canvas.drawColor(Color.TRANSPARENT);
canvas.scale(0.5f, 0.5f); // scale gif to its half size
super.onDraw(canvas);
/* movie.setTime . . . */
movie.draw(canvas, ...);
this.invalidate();
}
2
如果你想做一個專門的觀點是規模,能和可重用的另一個佈局中,你應該使用視圖的的getWidth()和getHeight()方法爲好。 canvas.getWidth()在整個屏幕的寬度,而不是意見寬度,使我修改的onDraw方法如下:
我當改變視圖的專用尺寸就遇到了這個問題。
@Override
protected void onDraw(Canvas canvas) {
canvas.drawColor(Color.TRANSPARENT);
super.onDraw(canvas);
long now = android.os.SystemClock.uptimeMillis();
Paint p = new Paint();
p.setAntiAlias(true);
if (cur == 0) cur = now;
if(movie != null)
{
float scale = 1f;
if(movie.height() > getHeight() || movie.width() > getWidth())
scale = (1f/Math.min(canvas.getHeight()/movie.height(), canvas.getWidth()/movie.width())) + 0.25f;
else
scale = Math.min(canvas.getHeight()/movie.height(), canvas.getWidth()/movie.width());
canvas.scale(scale, scale);
canvas.translate(((float)getWidth()/scale - (float)movie.width())/2f,
((float)getHeight()/scale - (float)movie.height())/2f);
int relTime = (int)((now - cur) % movie.duration());
movie.setTime(relTime);
movie.draw(canvas, 0, 0);
invalidate();
}
}
通知之的getWidth()的getHeight()if語句檢查,看看電影是超過視圖大小,在我的情況,我的看法高度爲160,但我的GIF爲260,但使用另一種方法是總是會畫出GIF太大的圖像,在這兩種情況下,我都能夠測試並看到它的工作情況,在這兩種情況下,我的視圖是1280 X 900,圖像放大了,我的視圖也是1000 X 160,並縮小了比例。
最好的運氣,和有樂趣:d
克里斯
相關問題
- 1. 框架無法移動在actionscript3.0
- 2. 在框架佈局中的Android拖動和縮放
- 3. UIScrollView無法在縮放後平移
- 4. HTML5 Canvas縮放/縮放更大2D世界的視圖框?
- 5. 在移動瀏覽器中無法縮放的背景圖片
- 6. Linux - 使用平移和縮放功能創建動畫gif
- 7. 爲iOS設置移動和縮放框
- 8. HTML5 Canvas縮放圖像動畫
- 9. bxslider縮放移動
- 10. 防止MFMailComposeViewController縮放動畫GIF
- 11. 無法移除的Android活動邊框?
- 12. 我無法移動,旋轉,縮放Unity編輯器中的GameObject
- 13. Bootstrap在移動設備上無法正確縮放
- 14. 移動框架
- 15. 縮放UIImageView和移動縮放
- 16. 爲什麼canvas drawImage方法縮放?
- 17. Android-從文件中播放GIF動畫
- 18. Flash CS5中的縮放框架圖形
- 19. 如何在GDI中移動縮放線+
- 20. jQuery在webview中的移動UI縮放
- 21. PHP框架和移動框架
- 22. 哪些Canvas和Bitmap方法可通過dpi(Android)進行縮放?
- 23. 畫布 - 在Android上放大,移動和縮放
- 24. 在Android中的縮放對話框
- 25. 捏縮放,平移mapview android
- 26. 縮放和平移ImageView Android
- 27. iphone5上的html5-canvas無法正確縮放
- 28. 在php中動態縮放圖像jpg/png/gif
- 29. 我無法移動框架佈局中的按鈕
- 30. 在Ruby on Rails中拆分GIF框架
我發現,只有使用繪圖代碼的「其他」語句產生更好的結果 - 即。它擴展到所有設備。我在我的項目中混淆了'if'陳述。 – EricRobertBrewer 2016-04-08 23:42:06