Oto coś, co wymyśliłem, używając ścieżki klipu. Używam następujących obrazów (kolorów koderów), z których tło jest stałe, a na pierwszym planie zawiera tylko niebieskie kółko na przezroczystym tle. Pierwszy obraz tła jest rysowany na ekranie, a następnie ścieżka klipu jest ustawiana tak, aby obraz postępu, pierwszy plan, był prawidłowo rysowany na wierzchu.
Obraz tła; http://i.imgur.com/Sf6kg.png
Obraz pierwszego planu; http://i.imgur.com/Svtoh.png
I kod;
private class ProgressView extends View {
private Bitmap bgBitmap;
private Bitmap fgBitmap;
private RectF fullRect = new RectF();
private Path clipPath = new Path();
public ProgressView(Context context) {
super(context);
bgBitmap = BitmapFactory.decodeResource(
context.getResources(), R.drawable.bg);
fgBitmap = BitmapFactory.decodeResource(
context.getResources(), R.drawable.fg);
}
@Override
public void onDraw(Canvas c) {
fullRect.right = getWidth();
fullRect.bottom = getHeight();
c.drawBitmap(bgBitmap, null, fullRect, null);
float angle = SystemClock.uptimeMillis() % 3600/10.0f;
clipPath.reset();
clipPath.setLastPoint(getWidth()/2, getHeight()/2);
clipPath.lineTo(getWidth()/2, getHeight());
clipPath.arcTo(fullRect, -90, angle);
clipPath.lineTo(getWidth()/2, getHeight()/2);
c.clipPath(clipPath);
c.drawBitmap(fgBitmap, null, fullRect, null);
invalidate();
}
}
Nie powinno być zbyt trudno zastąpić moje tymczasowe obrazy przyzwoitymi i zaktualizować kąt w bardziej odpowiedni sposób.
Jakie jest Twoje aktualne pytanie ..? – Veger
@Veger po dotknięciu obrazu i przewijaniu jak pasek wyszukiwania, a drugi obraz zostanie wyświetlony jako dotykowy. – kyogs