图库功能:
我正在开发类似于图库的功能,用户可以在其中滑动以查看他们上传的图像或视频。
问题:
只要在viewview后有视频,videoview的Mediacontrol就会在imageview上显示大约2秒钟
Code:] >>
item_pager.xml:
<?xml version="1.0" encoding="utf-8"?> <layout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:layout_gravity="center" android:background="@color/black_overlay" android:gravity="center" android:orientation="vertical"> <ImageView android:id="@+id/images_pager" android:layout_width="match_parent" android:layout_height="250dp" android:adjustViewBounds="true" android:scaleType="fitXY" android:visibility="visible" app:srcCompat="@drawable/cctv_icon" /> <VideoView android:id="@+id/videoview" android:layout_width="match_parent" android:layout_height="250dp" android:adjustViewBounds="true" android:visibility="gone" /> </LinearLayout> </layout>
PagerAdapter代码:
public class ItemViewpager extends PagerAdapter implements MediaPlayer.OnPreparedListener, View.OnClickListener, MediaPlayer.OnCompletionListener, View.OnFocusChangeListener { private List<MediaInfo> mediaInfos; private LayoutInflater layoutInflater; private MediaController mediaController; private HashMap<Integer, MediaController> mediaMap; private VideoView videoView; private ImageView imageView; private int currPos = 0; public ItemViewpager(List<MediaInfo> mediaInfos) { this.mediaInfos = mediaInfos; mediaMap = new HashMap<>(mediaInfos.size()); } @Override public int getCount() { return mediaInfos.size(); } @Override public boolean isViewFromObject(@NonNull View view, @NonNull Object object) { return view == ((LinearLayout) object); } @NonNull @Override public Object instantiateItem(@NonNull ViewGroup container, int position) { layoutInflater= (LayoutInflater)container.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); View itemView = layoutInflater.inflate(R.layout.item_pager, container, false); imageView = itemView.findViewById(R.id.images_pager); videoView = itemView.findViewById(R.id.videoview); videoView.setOnPreparedListener(this); videoView.setOnCompletionListener(this); videoView.setOnFocusChangeListener(this); boolean video = mediaInfos.get(position).video; String uri = mediaInfos.get(position).uri; mediaController = new MediaController(container.getContext()); mediaMap.put(position, mediaController); if (video) { imageView.setVisibility(View.GONE); videoView.setVisibility(View.VISIBLE); videoView.setVideoURI(Uri.parse(uri)); mediaController.setAnchorView(videoView); videoView.setMediaController(mediaController); videoView.requestFocus(); videoView.seekTo(1); } else { imageView.setVisibility(View.VISIBLE); videoView.setVisibility(View.GONE); Picasso.get().load(uri).fit().placeholder(R.mipmap.ic_launcher).into(imageView); } if (mediaMap.size() > 0) mediaMap.get(position).hide(); container.addView(itemView); return itemView; } @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView((LinearLayout) object); } @Override public void onPrepared(MediaPlayer mediaPlayer) { } public void onPageSelectionListener(int pos) { currPos = pos; boolean video = mediaInfos.get(currPos).video; /*if (mediaMap.size() > 0) { if (video) mediaMap.get(currPos).show(0); else mediaMap.get(currPos).hide(); }*/ } @Override public void onClick(View view) { } @Override public void onCompletion(MediaPlayer mediaPlayer) { boolean video = mediaInfos.get(currPos).video; /*if (!video) videoView.stopPlayback(); else mediaMap.get(currPos).show();*/ } @Override public void onFocusChange(View view, boolean focus) { } }
提前感谢:
图库功能:我正在开发与图库类似的功能,用户可以在其中滑动以查看他们上传的图像或视频。问题:每当在imageview之后有视频时,Mediacontrols for ...
尝试一下:
按以下方式尝试