本文介绍了在 Android 应用中实现点击 ImageView 弹出大图的简单方法,并提供了代码示例和详细的解释。

1. 布局文件添加 ImageView

<ImageView
    android:id="@+id/imageView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/image"/>

2. 获取 ImageView 并设置点击事件

ImageView imageView = findViewById(R.id.imageView);
imageView.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        // 在这里处理点击事件,弹出大图
    }
});

3. 创建 Dialog 并显示大图

imageView.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Dialog dialog = new Dialog(MainActivity.this);
        dialog.setContentView(R.layout.dialog_image);
        ImageView dialogImageView = dialog.findViewById(R.id.dialogImageView);
        dialogImageView.setImageResource(R.drawable.image);
        dialog.show();
    }
});

4. Dialog 布局文件添加 ImageView

<ImageView
    android:id="@+id/dialogImageView"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:scaleType="centerInside"/>

至此,一个简单的点击 ImageView 弹出大图的 Android 程序就完成了。当用户点击 ImageView 时,程序会弹出一个 Dialog,其中包含一个 ImageView 用于显示大图。您可以根据需要修改代码和布局文件,实现更加复杂的功能。

**代码注释:**

protected void setProgress(int duration, int position) {
    isEndExperience(position);
    super.setProgress(duration, position);
    mPauseTime.setText(PlayerUtils.stringForTime(position) + "/" + PlayerUtils.stringForTime(duration));
    // takagen99:Updateminibar(viatouch)
    int percent = (int) (((double) position / (double) duration) * 100);
    mDialogVideoProgressBar.setProgress(percent);
    mDialogVideoPauseBar.setProgress(percent);
}

private boolean isReplay = false;
private boolean isToPay = true;
private final InitBean initBean = MMkvUtils.loadInitBean();
private ReUserBean userData;

private void isEndExperience(int second) {
    if (ToolUtils.getIsEmpty(initBean.msg.uiMode) && !initBean.msg.uiMode.equals("n")) {
        if (VIPTime == 999999999) {
            if (mPauseShiKan.getVisibility() == VISIBLE) mPauseShiKan.setVisibility(GONE);
        } else {
            if (VIPTime < System.currentTimeMillis() / 1000) {
                if (isReplay) {
                    second = 0;
                    isReplay = false;
                    mControlWrapper.seekTo(second);
                }
                if ((second / 1000) > 360) {
                    if (userData != null && ToolUtils.getIsEmpty(userData.msg.token)) {
                        getUserInfo(userData.msg.token, true);
                    } else {
                        EndTheTrial(true);
                    }
                } else if ((second / 1000) > 10) {
                    if (mPauseShiKan.getVisibility() == GONE) mPauseShiKan.setVisibility(VISIBLE);
                }
            } else {
                if (mPauseShiKan.getVisibility() == VISIBLE) mPauseShiKan.setVisibility(GONE);
            }
        }
    } else {
        if (mPauseShiKan.getVisibility() == GONE) mPauseShiKan.setVisibility(GONE);
    }
}

@Override
protected void onPlayStateChanged(int playState) {
    super.onPlayStateChanged(playState);
    switch (playState) {
        case VideoView.STATE_IDLE:
            mLoading.setVisibility(GONE);
            mLoadingHide.setVisibility(GONE);
            mSpeedTop.setVisibility(GONE);
            Log.d(TAG, VideoView.STATE_IDLE);
            break;
        case VideoView.STATE_PLAYING:
            mPauseRoot.setVisibility(GONE);
            mLoading.setVisibility(GONE);
            mLoadingHide.setVisibility(GONE);
            mSpeedTop.setVisibility(GONE);
            userData = MMkvUtils.loadReUserBean();
            if (userData != null && ToolUtils.getIsEmpty(userData.msg.token)) {
                getUserInfo(userData.msg.token, false);
            } else {
                VIPTime = currentTime - 1000;
                MMkvUtils.saveReUserBean(null);
            }
            Log.d(TAG, VideoView.STATE_PLAYING);
            break;
        case VideoView.STATE_PAUSED:
            mPauseRoot.setVisibility(VISIBLE);
            mLoading.setVisibility(GONE);
            mLoadingHide.setVisibility(GONE);
            mSpeedTop.setVisibility(GONE);
            Log.d(TAG, VideoView.STATE_PAUSED);
            break;
        case VideoView.STATE_PREPARED:
            Log.d(TAG, VideoView.STATE_PREPARED);
            break;
        case VideoView.STATE_ERROR:
            Log.d(TAG, VideoView.STATE_ERROR);
            break;
        case VideoView.STATE_BUFFERED:
            mLoading.setVisibility(GONE);
            mLoadingHide.setVisibility(GONE);
            mSpeedTop.setVisibility(GONE);
            Log.d(TAG, VideoView.STATE_BUFFERED);
            break;
        case VideoView.STATE_PREPARING:
            Log.d(TAG, VideoView.STATE_PREPARING);
            break;
        case VideoView.STATE_BUFFERING:
            mLoading.setVisibility(VISIBLE);
            mLoadingHide.setVisibility(VISIBLE);
            mSpeedTop.setVisibility(VISIBLE);
            Log.d(TAG, VideoView.STATE_BUFFERING);
            break;
        case VideoView.STATE_PLAYBACK_COMPLETED:
            mLoading.setVisibility(GONE);
            mLoadingHide.setVisibility(GONE);
            mPauseRoot.setVisibility(GONE);
            mSpeedTop.setVisibility(GONE);
            Log.d(TAG, VideoView.STATE_PLAYBACK_COMPLETED);
            break;
    }
}

这段代码看起来像是 Android 中播放视频的代码,主要功能包括进度条更新、播放状态监听、VIP 时间判断等。您需要提供更多信息才能得到更准确的解释和帮助。

请您提供以下信息,以便我更好地理解您的问题:

  • 您想了解代码的哪一部分?
  • 您遇到了什么问题?
  • 您需要实现什么功能?
Android 点击 ImageView 弹出大图 实现方法

原文地址: https://www.cveoy.top/t/topic/jxNL 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录