Android 点击 ImageView 弹出大图 实现方法
本文介绍了在 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 时间判断等。您需要提供更多信息才能得到更准确的解释和帮助。
请您提供以下信息,以便我更好地理解您的问题:
- 您想了解代码的哪一部分?
- 您遇到了什么问题?
- 您需要实现什么功能?
原文地址: https://www.cveoy.top/t/topic/jxNL 著作权归作者所有。请勿转载和采集!