1
package com.example.gifsample;

import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.view.Menu;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;

//@TargetApi(Build.VERSION_CODES.HONEYCOMB)
public class MainActivity extends Activity{
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        GIFWebView view = new GIFWebView
            (this, "file:///android_asset/imageedit_ball.gif");

        setContentView(view); 
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }
}

.

package com.example.gifsample;

import android.content.Context;
import android.webkit.WebView;

public class GIFWebView extends WebView {
    public GIFWebView(Context context, String path) {
        super(context);
        loadUrl(path);
        // TODO Auto-generated constructor stub
    }
}

现在我希望每当我触摸我的屏幕时在触摸事件上播放它,并且它应该在它的一个循环完成后停止。当动画已经播放时,我不想再次播放动画。动画应该完成循环,然后可以在触摸事件上再次播放。

4

1 回答 1

1

如果您想收听MOTION_EVENTSonTouch()方法),请使用此代码并将其粘贴到MainActivity

@Override
public boolean onTouch(View v, MotionEvent event) {

    switch (event.getAction()){
    case MotionEvent.ACTION_DOWN:
    // You can also put any code here, it will be caught when you touch the screen
    break;
    // This event here is triggered when you lift your finger from the screen, when touching it
    case MotionEvent.ACTION_UP:

    GIFWebView view = new GIFWebView
        (this, "file:///android_asset/imageedit_ball.gif");

    setContentView(view);

    break;
    }
    return true;
}

如果您的gif文件仅循环一次,它将显示为这样。

因为您正在实例化一个类,它扩展了WebView. 这些类不拦截onTouch事件。只有Activity类可以。

这是关于播放 gif 文件的一个很好的教程 - LINK和 google.cod 中的一个不错的项目,您可以使用 - LINK

于 2013-08-06T06:59:10.433 回答