小编imh*_*tep的帖子

Android图库适配器与MultiTouch?自定义图库或自定义ImageView?

我想重新创建与Gallery3D相同类型的应用程序,但更简单:没有3D动画,基本上只保留GridView和Gallery小部件.我还想在所选图像上启用多点触摸缩放 - 拖动 - 掠夺,这就是我正在努力的地方.我在网上查看了简单的教程,我也查看了Gallery3D源代码,但找不到合适的解决方案.

我能得到的最接近的是在我的Gallery Adapter中使用下面的自定义ImageView.

它工作,我可以捏缩放和拖动,除了图像离开屏幕,我无法滚动到库中的下一个图像.另外,捏合和缩放并不完美,因为它只能缩放图像并且无法正确地重新定位.我应该在Gallery上添加onTouchEvent吗?


import android.content.Context;
import android.graphics.Canvas;
import android.graphics.drawable.BitmapDrawable;
import android.util.AttributeSet;
import android.util.Log;
import android.view.MotionEvent;
import android.view.ScaleGestureDetector;
import android.view.View;

public class MyImageView extends View {

private static final int INVALID_POINTER_ID = -1;

    private BitmapDrawable mImage;
    private float mPosX;
    private float mPosY;

    private float mLastTouchX;
    private float mLastTouchY;
    private int mActivePointerId = INVALID_POINTER_ID;

    private ScaleGestureDetector mScaleDetector;
    private float mScaleFactor = 1.f;

    public MyImageView(Context context, BitmapDrawable bd) {
        this(context, null, 0);
     mImage = bd;
        mImage.setBounds(0, 0, mImage.getIntrinsicWidth(), …
Run Code Online (Sandbox Code Playgroud)

android android-widget

6
推荐指数
1
解决办法
1987
查看次数

如何使用MediaController.MediaPlayerControl?

我试图使用MediaController.MediaPlayerControl,以便MediaController在我的自定义视图的底部显示,但我无法让它工作.它的崩溃在ctrl.show();具有以下例外,每当我尝试加载这样的观点:

E/AndroidRuntime(3007):引起:android.view.WindowManager $ BadTokenException:无法添加窗口 - 令牌null无效; 你的活动在运行吗?

这是我的代码.

public class MediaPlayerView extends ImageView implements MediaPlayerControl {

    private MediaPlayer mp;
    private MediaController ctrl;
    private Uri data;
    private Context mContext;

    public MediaPlayerView(Context context, Uri data) {
        super(context);
        this.mContext = context;
        this.data = data;
        init();
    }

    public void init() {
        mp = new MediaPlayer();
        try {
            mp.setDataSource(mContext, data);
            mp.prepare();
        } catch(IOException e) {
            e.printStackTrace();
        }
        ctrl = new MediaController(mContext);
        ctrl.setMediaPlayer(this);
        ctrl.setAnchorView(this);
        ctrl.setEnabled(true);
        ctrl.show();
    }

    public boolean canPause() …
Run Code Online (Sandbox Code Playgroud)

android android-widget

5
推荐指数
2
解决办法
2万
查看次数

标签 统计

android ×2

android-widget ×2