我做了一個自動滾動圖像的全景圖應用程序,從左到右依次類推。它很好地工作,除了它並不像我想的那樣平滑(意味着恆定的速度)。它有時會「跳躍」一點。它不應該是在1.4千兆赫的核心設備...如何讓我的圖像動畫更流暢?
我實現這只是通過平移的圖像,然後等待位與Thread.sleep(panoanimspeed);
(其中,1/1000秒< = panoanimspeed < = 1/50年代), 等等。可能不是最聰明的事情......?
你知道我該如何使這個更平滑?以下是相關AsyncTask的代碼。
謝謝!
class AnimatePanorama extends AsyncTask<Void, Integer, Void> {
private float scale = foto.getCropScale() * foto.getBaseScale();
private Matrix m = foto.matrix;
@Override
protected void onProgressUpdate(Integer... values) {
if (values[0] == 0) {
m.setScale(scale, scale);
m.postTranslate(values[1], 0);
foto.setImageMatrix(m);
}
}
@Override
protected Void doInBackground(Void... arg) {
dir = -dir;
int l, ini = 0;
float lim = foto.getImageWidth()*scale - foto.getViewWidth();
float[] mm = new float[9];
foto.matrix.getValues(mm);
if (foto.getScale() == foto.getCropScale())
ini = (int) (dir*(lim*(dir+1)/2 + mm[2]));
while (true) {
if(isCancelled()) break;
l = (int) (lim*(dir+1)/2);
for (int i = ini; i < lim; i++) {
if(isCancelled()) break;
try {
Thread.sleep(panoanimspeed);
} catch (InterruptedException e) {
e.printStackTrace();
}
publishProgress(0, dir * i - l);
}
ini = 0;
dir = -dir;
}
return null;
}
}
我嘗試的第一件事是動畫,我認爲這將是一件非常簡單的事情。問題在於,當您爲不適合視圖的圖像(如全景圖)製作動畫時,動畫只會移動圖像中可見的部分。換句話說,圖像像素被黑色像素替代,而不是圖像的像素。希望我自己清楚... –