「スキャンバー」アニメーションを実現し、翻訳のアニメーションを作成する必要があります(Googleゴーグルアプリに少し似ています)。これはバーの画像 (カスタム ビュー) で、サーフェス ビューを左から右に横切っています。
アニメーションが遅れていることを除いて、私は私の期待に近いことをしました:(
これは私の XML の一部です:
<LinearLayout
android:id="@+id/layoutCamera"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="8" >
<SurfaceView
android:id="@+id/surfaceView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="top" />
</LinearLayout>
これは私のカスタムビューです:
class ScannerView extends View
{
private Bitmap scanBar;
private int sizeBarW;
private int sizeBarH;
public ScannerView(Context context, int heightParent)
{
super(context);
//init size
sizeBarW = 5;
//I adjust the height of the bar to my surfaceview
sizeBarH = heightParent;
//prepare bitmap
scanBar = prepareBitmap(getResources().getDrawable(R.drawable.scan_bar), sizeBarW,
sizeBarH);
}
private static Bitmap prepareBitmap(Drawable drawable, int width, int height)
{
Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
drawable.setBounds(0, 0, width, height);
Canvas canvas = new Canvas(bitmap);
drawable.draw(canvas);
return bitmap;
}
@Override
protected void onDraw(Canvas canvas)
{
canvas.drawBitmap(scanBar, 0, 0, null);
}
}
これが私のアニメーション関数です (私のアクティビティ クラスから surfaceChanged() で呼び出されます):
private void LaunchAnimation()
{
// 1 - view
mScanBar = new ScannerView(this, surfaceView.getHeight());
addContentView(mScanBar, new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
// 2 - Animation
Animation animTranslation = new TranslateAnimation(Animation.RELATIVE_TO_PARENT, -1.0f, Animation.RELATIVE_TO_PARENT, 1.0f,
Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, 0.0f);
animTranslation.setDuration(5000);
animTranslation.setRepeatCount(Animation.INFINITE);
mScanBar.startAnimation(animTranslation);
}
私は Android プログラミングの初心者で、最善の方法で行うかどうかわかりません... :?
この遅れ/速度低下の問題を解決するのを手伝ってくれてありがとう. :)