1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

ImageButton mit bewegtem Bild

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von Unicate, 19.07.2012.

  1. Unicate, 19.07.2012 #1
    Unicate

    Unicate Threadstarter Android-Experte

    Beiträge:
    473
    Erhaltene Danke:
    57
    Registriert seit:
    09.08.2010
    Hallo alle zusammen!

    Ich möchte mir einen Button bauen, der eine Image in sich darstellt, die sich bewegt. Also eine Animation in einem Button. Wie könnte ich das realisieren?

    Ich würde den Code am Ende allen zur Verfügung stellen.

    Meine "naive" heramgehensweise:

    View ableiten, die ein Bitmapobject hält und dann irgendwie versuchen im ondraw die Image zu bewegen. Mit bewegen meine ich sowas ala Ken Burns.

    Somit könnte man ein Menü ähnlich der Windowskacheln bauen. Ich habe aktuell eine App in der ich so ein Menü gern hätte.

    Irgendwelche Ideen oder Ratschläge?

    [Update:]

    Ich hab grad mal ein sehr simples Beispiel probiert und bin auf ein recht gutes Ergebnis gekommen. Allerdings glaub ich nicht das das so die Lösung ist:

    PHP:
        
        Bitmap _bitmap
    ;
        private static 
    Paint _paint;
        
        private 
    int _cX_cY;
        
        private 
    Handler h = new Handler() {
            public 
    void handleMessage(android.os.Message msg) {
                if(
    null != _mover) {
                    
    _cX+=1;
                    
    _cY+=1;
                    
    TileButton.this.invalidate();
                }
                
            };
        };

        public 
    TileButton(Context contextAttributeSet attrs) {
            
    super(contextattrs);
            
    _bitmap BitmapFactory.decodeResource(getResources(), R.drawable.testimage);
            
    _cX _cY 0;        
            new 
    Thread(new Runnable() {            
                public 
    void run() {
                    while(
    true) {
                        try {
                            
    Thread.sleep(10);
                            
    h.sendEmptyMessage(0);
                        } catch (
    InterruptedException e) {
                            
    // TODO Auto-generated catch block
                            
    e.printStackTrace();
                        }
                        
                    }
                }
            }).
    start();
        }

        
        @
    Override
        
    protected void onDraw(Canvas canvas) {
            
    super.onDraw(canvas);        
            
    canvas.save();
            
    canvas.scale(33);
            
    canvas.translate(_cX_cY);
            
    canvas.drawBitmap(_bitmap00getPaint());        
            
    canvas.restore();
        }

        private 
    Paint getPaint() {
            if(
    null == _paint)
                
    _paint = new Paint();
            return 
    _paint;
        }
    Das das Bild jetzt aus dem Bildschirm wandert, ist mir klar, ich wollte nur mal die Performance testen, wenn ich die Bildupdates mittels invalidate mache.
    Ich kann mir aber vorstellen, das das auf älteren Geräten nicht so schön läuft. zusätzlich kann man nicht direkt beeinflussen wann das onDraw aufgerufen wird.
     
    Zuletzt bearbeitet: 19.07.2012

Diese Seite empfehlen