Ecco qualcosa che ho trovato usando il percorso della clip. Sto usando le seguenti immagini (colori codificatore) da cui lo sfondo è solido e quello in primo piano contiene solo un cerchio blu su sfondo trasparente. La prima immagine di sfondo viene disegnata sullo schermo, quindi il percorso della clip viene impostato in modo tale che l'immagine progressiva, quella in primo piano, sia disegnata correttamente sopra di essa.
Immagine di sfondo; http://i.imgur.com/Sf6kg.png
Immagine in primo piano; http://i.imgur.com/Svtoh.png
E il codice;
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();
}
}
Non dovrebbe essere troppo difficile sostituire le mie immagini temporanee con quelle decenti e aggiornare l'angolo in un modo più appropriato.
E qual è la tua domanda attuale ..? – Veger
@Veger quando tocco l'immagine e scorrono come barra di ricerca e la seconda immagine verrà visualizzata come tocco. – kyogs