List of usage examples for android.widget ImageView post
public boolean post(Runnable action)
Causes the Runnable to be added to the message queue.
From source file:com.example.g40_70m.framedemo.view.photoview.PhotoViewAttacher.java
@Override public void setScale(float scale, float focalX, float focalY, boolean animate) { ImageView imageView = getImageView(); if (null != imageView) { // Check to see if the scale is within bounds if (scale < mMinScale || scale > mMaxScale) { L.w("Scale must be within the range of minScale and maxScale"); return; }/* www . j a v a2s.c o m*/ if (animate) { imageView.post(new AnimatedZoomRunnable(getScale(), scale, focalX, focalY)); } else { mSuppMatrix.setScale(scale, scale, focalX, focalY); checkAndDisplayMatrix(); } } }
From source file:org.thor.base.view.photoView.PhotoViewAttacher.java
@Override public void setScale(float scale, float focalX, float focalY, boolean animate) { ImageView imageView = getImageView(); if (null != imageView) { // Check to see if the scale is within bounds if (scale < mMinScale || scale > mMaxScale) { Logger.d(//from w w w . j av a2 s.c o m "PhotoViewAttacher setScale: " + "Scale must be within the range of minScale and maxScale"); return; } if (animate) { imageView.post(new AnimatedZoomRunnable(getScale(), scale, focalX, focalY)); } else { mSuppMatrix.setScale(scale, scale, focalX, focalY); checkAndDisplayMatrix(); } } }
From source file:com.org.lengend.photoview.library.PhotoViewAttacher.java
@Override public void setScale(float scale, float focalX, float focalY, boolean animate) { ImageView imageView = getImageView(); if (null != imageView) { // Check to see if the scale is within bounds if (scale < mMinScale || scale > mMaxScale) { Logger.i(LOG_TAG, "Scale must be within the range of minScale and maxScale"); return; }//from www. ja v a 2 s. c o m if (animate) { imageView.post(new AnimatedZoomRunnable(getScale(), scale, focalX, focalY)); } else { mSuppMatrix.setScale(scale, scale, focalX, focalY); checkAndDisplayMatrix(); } } }
From source file:com.github.lakeshire.photoview.PhotoViewAttacher.java
@Override public void setScale(float scale, float focalX, float focalY, boolean animate) { ImageView imageView = getImageView(); if (null != imageView) { // Check to see if the scale is within bounds if (scale < mMinScale || scale > mMaxScale) { // LogManager.getLogger().i(LOG_TAG, "Scale must be within the range of minScale and maxScale"); return; }//from w ww . ja v a2 s . c o m if (animate) { imageView.post(new AnimatedZoomRunnable(getScale(), scale, focalX, focalY)); } else { mSuppMatrix.setScale(scale, scale, focalX, focalY); checkAndDisplayMatrix(); } } }
From source file:com.ptapp.activity.SessionsFragment.java
@Override public void bindCollectionItemView(Context context, View view, final int groupId, int indexInGroup, int dataIndex, Object tag) { if (mCursor == null || !mCursor.moveToPosition(dataIndex)) { LOGW(TAG, "Can't bind collection view item, dataIndex=" + dataIndex + (mCursor == null ? ": cursor is null" : ": bad data index.")); return;/*from www .j av a2 s . c o m*/ } Log.v(TAG, "test collection view cursor data: " + mCursor.getString(0) + ", " + mCursor.getString(1) + ", " + mCursor.getString(2) + ", " + mCursor.getString(3) + ", "); final String groupJid = mCursor.getString(SessionsQuery.GROUP_JID); final String classSubjectId = mCursor.getString(SessionsQuery.CLASS_SUBJECT_ID); if (classSubjectId == null) { return; } // first, read session info from cursor and put it in convenience variables final String courseTitle = mCursor.getString(SessionsQuery.GROUP_NAME); /*final String courseTitle = mCursor.getString(SessionsQuery.SUBJECT_TITLE); final String className = mCursor.getString(SessionsQuery.CLASS_TITLE) + "-" + mCursor.getString(SessionsQuery.SECTION_TITLE);*/ /*final String educatorId = mCursor.getString(SessionsQuery.EDUCATOR_ID); final String classId = mCursor.getString(SessionsQuery.CLASS_ID); final String studentId = mCursor.getString(SessionsQuery.STUDENT_ID);*/ /*final String sessionAbstract = mCursor.getString(SessionsQuery.ABSTRACT); final long sessionStart = mCursor.getLong(SessionsQuery.SESSION_START); final long sessionEnd = mCursor.getLong(SessionsQuery.SESSION_END); final String roomName = mCursor.getString(SessionsQuery.ROOM_NAME); int sessionColor = mCursor.getInt(SessionsQuery.COLOR);*/ int sessionColor = 0; sessionColor = sessionColor == 0 ? getResources().getColor(R.color.default_session_color) : sessionColor; /*final String snippet = mIsSearchCursor ? mCursor.getString(SessionsQuery.SNIPPET) : null; final Spannable styledSnippet = mIsSearchCursor ? buildStyledSnippet(snippet) : null; final boolean starred = mCursor.getInt(SessionsQuery.IN_MY_SCHEDULE) != 0; final String[] tags = mCursor.getString(SessionsQuery.TAGS).split(",");*/ // now let's compute a few pieces of information from the data, which we will use // later to decide what to render where /*final boolean hasLivestream = !TextUtils.isEmpty(mCursor.getString( SessionsQuery.LIVESTREAM_URL));*/ final long now = UIUtils.getCurrentTime(context); /*final boolean happeningNow = now >= sessionStart && now <= sessionEnd;*/ // text that says "LIVE" if session is live, or empty if session is not live /*final String liveNowText = hasLivestream ? " " + UIUtils.getLiveBadgeText(context, sessionStart, sessionEnd) : "";*/ final String liveNowText = ""; // get reference to all the views in the layout we will need final TextView titleView = (TextView) view.findViewById(R.id.session_title); final TextView subtitleView = (TextView) view.findViewById(R.id.session_subtitle); final TextView shortSubtitleView = (TextView) view.findViewById(R.id.session_subtitle_short); /*final TextView snippetView = (TextView) view.findViewById(R.id.session_snippet);*/ final TextView abstractView = (TextView) view.findViewById(R.id.session_abstract); final TextView categoryView = (TextView) view.findViewById(R.id.session_category); final View boxView = view.findViewById(R.id.info_box); final View sessionTargetView = view.findViewById(R.id.session_target); final View grpmsgView = (ImageView) view.findViewById(R.id.session_grp_msg); if (sessionColor == 0) { // use default sessionColor = mDefaultSessionColor; } sessionColor = UIUtils.scaleSessionColorToDefaultBG(sessionColor); ImageView photoView = (ImageView) view.findViewById(R.id.session_photo_colored); if (photoView != null) { if (!mPreloader.isDimensSet()) { final ImageView finalPhotoView = photoView; photoView.post(new Runnable() { @Override public void run() { mPreloader.setDimens(finalPhotoView.getWidth(), finalPhotoView.getHeight()); } }); } // colored photoView.setColorFilter(UIUtils.setColorAlpha(sessionColor, UIUtils.SESSION_PHOTO_SCRIM_ALPHA)); } else { photoView = (ImageView) view.findViewById(R.id.session_photo); } ((BaseActivity) getActivity()).getLPreviewUtils().setViewName(photoView, "photo_" + classSubjectId); // when we load a photo, it will fade in from transparent so the // background of the container must be the session color to avoid a white flash ViewParent parent = photoView.getParent(); if (parent != null && parent instanceof View) { ((View) parent).setBackgroundColor(sessionColor); } else { photoView.setBackgroundColor(sessionColor); } //String photo = mCursor.getString(SessionsQuery.PHOTO_URL); int subjPath = R.drawable.nophotoavailable; //TODO:Temporary task to generate screenshots if (courseTitle != null) { if (courseTitle.contains("English")) { subjPath = R.drawable.logo_english; } else if (courseTitle.contains("Math")) { subjPath = R.drawable.logo_math; } else if (courseTitle.contains("Punjabi")) { subjPath = R.drawable.course_punjabi; } else if (courseTitle.contains("Hindi")) { subjPath = R.drawable.course_hindi; } else if (courseTitle.contains("German")) { subjPath = R.drawable.course_german; } else if (courseTitle.contains("Dutch")) { subjPath = R.drawable.course_dutch; } else if (courseTitle.contains("Science")) { subjPath = R.drawable.course_science; } else if (courseTitle.contains("French")) { subjPath = R.drawable.course_french; } } /*if (!TextUtils.isEmpty(photo)) {*/ //mImageLoader.loadImage(photo, photoView, true /*crop*/); Picasso.with(context) // .load(subjPath) // .placeholder(CommonConstants.LOADING) // .error(CommonConstants.ERROR_IMAGE) // .fit() // .into(photoView); /*} else { // cleaning the (potentially) recycled photoView, in case this session has no photo: photoView.setImageDrawable(null); }*/ // render title /*titleView.setText(courseTitle == null ? "?" : courseTitle);*/ titleView.setText(courseTitle == null ? "?" : courseTitle); // render subtitle into either the subtitle view, or the short subtitle view, as available if (subtitleView != null) { /*subtitleView.setText(UIUtils.formatSessionSubtitle( sessionStart, sessionEnd, roomName, mBuffer, context) + liveNowText);*/ //subtitleView.setText(className == null ? "?" : className); } else if (shortSubtitleView != null) { //Dummy data /*shortSubtitleView.setText("25");*/ shortSubtitleView.setText(mCursor.getString(SessionsQuery.MEMBER_COUNT)); shortSubtitleView.setGravity(Gravity.RIGHT); /*shortSubtitleView.setText(UIUtils.formatSessionSubtitle( sessionStart, sessionEnd, roomName, mBuffer, context, true) + liveNowText);*/ //shortSubtitleView.setText(className == null ? "?" : className); } // render category if (categoryView != null) { /*categoryView.setText(className == null ? "?" : className);*/ } // if a snippet view is available, render the session snippet there. /*if (snippetView != null) { *//*if (mIsSearchCursor) { // render the search snippet into the snippet view snippetView.setText(styledSnippet); } else { // render speaker names and abstracts into the snippet view mBuffer.setLength(0); if (!TextUtils.isEmpty(speakerNames)) { mBuffer.append(speakerNames).append(". "); } if (!TextUtils.isEmpty(sessionAbstract)) { mBuffer.append(sessionAbstract); } snippetView.setText(mBuffer.toString()); }*//* }*/ if (abstractView != null && !mIsSearchCursor) { // render speaker names and abstracts into the abstract view mBuffer.setLength(0); /*if (!TextUtils.isEmpty(speakerNames)) { mBuffer.append(speakerNames).append("\n\n"); } if (!TextUtils.isEmpty(sessionAbstract)) { mBuffer.append(sessionAbstract); }*/ abstractView.setText(mBuffer.toString()); } // in expanded mode, the box background color follows the session color if (useExpandedMode()) { boxView.setBackgroundColor(sessionColor); } /*// show or hide the "in my schedule" indicator view.findViewById(R.id.indicator_in_schedule).setVisibility(starred ? View.VISIBLE : View.INVISIBLE);*/ // if we are in condensed mode and this card is the hero card (big card at the top // of the screen), set up the message card if necessary. if (!useExpandedMode() && groupId == HERO_GROUP_ID) { // this is the hero view, so we might want to show a message card final boolean cardShown = setupMessageCard(view); // if this is the wide hero layout, show or hide the card or the session abstract // view, as appropriate (they are mutually exclusive). final View cardContainer = view.findViewById(R.id.message_card_container_wide); final View abstractContainer = view.findViewById(R.id.session_abstract); if (cardContainer != null && abstractContainer != null) { cardContainer.setVisibility(cardShown ? View.VISIBLE : View.GONE); abstractContainer.setVisibility(cardShown ? View.GONE : View.VISIBLE); abstractContainer.setBackgroundColor(sessionColor); } } // if this session is live right now, display the "LIVE NOW" icon on top of it View liveNowBadge = view.findViewById(R.id.live_now_badge); if (liveNowBadge != null) { liveNowBadge.setVisibility(View.INVISIBLE); //liveNowBadge.setVisibility(happeningNow && hasLivestream ? View.VISIBLE : View.GONE); } // if this view is clicked, open the session details view final View finalPhotoView = photoView; final int studentGroupId = mCursor.getInt(SessionsQuery.GROUP_ID); sessionTargetView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mCallbacks.onSessionSelected(classSubjectId, courseTitle, groupJid, studentGroupId, finalPhotoView); } }); // animate this card if (dataIndex > mMaxDataIndexAnimated) { mMaxDataIndexAnimated = dataIndex; } //if this view is clicked, open group messages chatting screen if (grpmsgView != null) { grpmsgView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Log.i(TAG, "grp msg image clicked, opening group messages screen"); Intent intent = new Intent(getActivity(), EducatorGroupMsgActivity.class); startActivity(intent); } }); } }
From source file:com.widgets.photoview.PhotoViewAttacher.java
@Override public void setScale(float scale, float focalX, float focalY, boolean animate) { ImageView imageView = getImageView(); if (null != imageView) { // Check to see if the scale is within bounds if (scale < mMinScale || scale > mMaxScale) { LogManager.getLogger().i(LOG_TAG, "Scale must be within the range of minScale and maxScale"); return; }//from w w w . jav a 2 s . co m if (animate) { imageView.post(new AnimatedZoomRunnable(getScale(), scale, focalX, focalY)); } else { Log.e("ZoomImageView", "setScale ,degrees= " + degrees); mSuppMatrix.setScale(scale, scale, focalX, focalY); mSuppMatrix.postRotate(degrees); checkAndDisplayMatrix(); } } }
From source file:com.saarang.samples.apps.iosched.ui.SessionsFragment.java
@Override public void bindCollectionItemView(Context context, View view, int groupId, int indexInGroup, int dataIndex, Object tag) {/*from www . j a v a2 s. c om*/ if (mCursor == null || !mCursor.moveToPosition(dataIndex)) { LOGW(TAG, "Can't bind collection view item, dataIndex=" + dataIndex + (mCursor == null ? ": cursor is null" : ": bad data index.")); return; } final String sessionId = mCursor.getString(SessionsQuery.SESSION_ID); if (sessionId == null) { return; } // first, read session info from cursor and put it in convenience variables final String sessionTitle = mCursor.getString(SessionsQuery.TITLE); final String speakerNames = mCursor.getString(SessionsQuery.SPEAKER_NAMES); final String sessionAbstract = mCursor.getString(SessionsQuery.ABSTRACT); final long sessionStart = mCursor.getLong(SessionsQuery.SESSION_START); final long sessionEnd = mCursor.getLong(SessionsQuery.SESSION_END); final String roomName = mCursor.getString(SessionsQuery.ROOM_NAME); int sessionColor = mCursor.getInt(SessionsQuery.COLOR); sessionColor = sessionColor == 0 ? getResources().getColor(com.saarang.samples.apps.iosched.R.color.default_session_color) : sessionColor; int darkSessionColor = 0; final String snippet = mIsSearchCursor ? mCursor.getString(SessionsQuery.SNIPPET) : null; final Spannable styledSnippet = mIsSearchCursor ? UIUtils.buildStyledSnippet(snippet) : null; final boolean starred = mCursor.getInt(SessionsQuery.IN_MY_SCHEDULE) != 0; final String[] tags = mCursor.getString(SessionsQuery.TAGS).split(","); // now let's compute a few pieces of information from the data, which we will use // later to decide what to render where final boolean hasLivestream = !TextUtils.isEmpty(mCursor.getString(SessionsQuery.LIVESTREAM_URL)); final long now = UIUtils.getCurrentTime(context); final boolean happeningNow = now >= sessionStart && now <= sessionEnd; // text that says "LIVE" if session is live, or empty if session is not live final String liveNowText = hasLivestream ? " " + UIUtils.getLiveBadgeText(context, sessionStart, sessionEnd) : ""; // get reference to all the views in the layout we will need final TextView titleView = (TextView) view .findViewById(com.saarang.samples.apps.iosched.R.id.session_title); final TextView subtitleView = (TextView) view .findViewById(com.saarang.samples.apps.iosched.R.id.session_subtitle); final TextView shortSubtitleView = (TextView) view .findViewById(com.saarang.samples.apps.iosched.R.id.session_subtitle_short); final TextView snippetView = (TextView) view .findViewById(com.saarang.samples.apps.iosched.R.id.session_snippet); final TextView abstractView = (TextView) view .findViewById(com.saarang.samples.apps.iosched.R.id.session_abstract); final TextView categoryView = (TextView) view .findViewById(com.saarang.samples.apps.iosched.R.id.session_category); final View sessionTargetView = view.findViewById(com.saarang.samples.apps.iosched.R.id.session_target); if (sessionColor == 0) { // use default sessionColor = mDefaultSessionColor; } if (mNoTrackBranding) { sessionColor = getResources() .getColor(com.saarang.samples.apps.iosched.R.color.no_track_branding_session_color); } darkSessionColor = UIUtils.scaleSessionColorToDefaultBG(sessionColor); ImageView photoView = (ImageView) view .findViewById(com.saarang.samples.apps.iosched.R.id.session_photo_colored); if (photoView != null) { if (!mPreloader.isDimensSet()) { final ImageView finalPhotoView = photoView; photoView.post(new Runnable() { @Override public void run() { mPreloader.setDimens(finalPhotoView.getWidth(), finalPhotoView.getHeight()); } }); } // colored photoView.setColorFilter(mNoTrackBranding ? new PorterDuffColorFilter( getResources().getColor( com.saarang.samples.apps.iosched.R.color.no_track_branding_session_tile_overlay), PorterDuff.Mode.SRC_ATOP) : UIUtils.makeSessionImageScrimColorFilter(darkSessionColor)); } else { photoView = (ImageView) view.findViewById(com.saarang.samples.apps.iosched.R.id.session_photo); } ViewCompat.setTransitionName(photoView, "photo_" + sessionId); // when we load a photo, it will fade in from transparent so the // background of the container must be the session color to avoid a white flash ViewParent parent = photoView.getParent(); if (parent != null && parent instanceof View) { ((View) parent).setBackgroundColor(darkSessionColor); } else { photoView.setBackgroundColor(darkSessionColor); } String photo = mCursor.getString(SessionsQuery.PHOTO_URL); if (!TextUtils.isEmpty(photo)) { mImageLoader.loadImage(photo, photoView, true /*crop*/); } else { // cleaning the (potentially) recycled photoView, in case this session has no photo: photoView.setImageDrawable(null); } // render title titleView.setText(sessionTitle == null ? "?" : sessionTitle); // render subtitle into either the subtitle view, or the short subtitle view, as available if (subtitleView != null) { subtitleView.setText(UIUtils.formatSessionSubtitle(sessionStart, sessionEnd, roomName, mBuffer, context) + liveNowText); } else if (shortSubtitleView != null) { shortSubtitleView.setText( UIUtils.formatSessionSubtitle(sessionStart, sessionEnd, roomName, mBuffer, context, true) + liveNowText); } // render category if (categoryView != null) { TagMetadata.Tag groupTag = mTagMetadata.getSessionGroupTag(tags); if (groupTag != null && !Config.Tags.SESSIONS.equals(groupTag.getId())) { categoryView.setText(groupTag.getName()); categoryView.setVisibility(View.VISIBLE); } else { categoryView.setVisibility(View.GONE); } } // if a snippet view is available, render the session snippet there. if (snippetView != null) { if (mIsSearchCursor) { // render the search snippet into the snippet view snippetView.setText(" "); } else { // render speaker names and abstracts into the snippet view mBuffer.setLength(0); if (!TextUtils.isEmpty(speakerNames)) { mBuffer.append(speakerNames).append(". "); } if (!TextUtils.isEmpty(sessionAbstract)) { mBuffer.append(sessionAbstract); } snippetView.setText(""); } } if (abstractView != null && !mIsSearchCursor) { // render speaker names and abstracts into the abstract view mBuffer.setLength(0); if (!TextUtils.isEmpty(speakerNames)) { mBuffer.append(speakerNames).append("\n\n"); } if (!TextUtils.isEmpty(sessionAbstract)) { mBuffer.append(sessionAbstract); } abstractView.setText(""); } // show or hide the "in my schedule" indicator view.findViewById(com.saarang.samples.apps.iosched.R.id.indicator_in_schedule) .setVisibility(starred ? View.VISIBLE : View.INVISIBLE); // if we are in condensed mode and this card is the hero card (big card at the top // of the screen), set up the message card if necessary. if (!useExpandedMode() && groupId == HERO_GROUP_ID) { // this is the hero view, so we might want to show a message card final boolean cardShown = setupMessageCard(view); // if this is the wide hero layout, show or hide the card or the session abstract // view, as appropriate (they are mutually exclusive). final View cardContainer = view .findViewById(com.saarang.samples.apps.iosched.R.id.message_card_container_wide); final View abstractContainer = view .findViewById(com.saarang.samples.apps.iosched.R.id.session_abstract); if (cardContainer != null && abstractContainer != null) { cardContainer.setVisibility(cardShown ? View.VISIBLE : View.GONE); abstractContainer.setVisibility(cardShown ? View.GONE : View.VISIBLE); abstractContainer.setBackgroundColor(darkSessionColor); } } // if this session is live right now, display the "LIVE NOW" icon on top of it View liveNowBadge = view.findViewById(com.saarang.samples.apps.iosched.R.id.live_now_badge); if (liveNowBadge != null) { liveNowBadge.setVisibility(happeningNow && hasLivestream ? View.VISIBLE : View.GONE); } // if this view is clicked, open the session details view final View finalPhotoView = photoView; sessionTargetView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mCallbacks.onSessionSelected(sessionId, finalPhotoView); } }); // animate this card if (dataIndex > mMaxDataIndexAnimated) { mMaxDataIndexAnimated = dataIndex; } }
From source file:baizhuan.hangzhou.com.gankcopy.view.customview.photoview.PhotoViewAttacher.java
@Override public void setScale(float scale, float focalX, float focalY, boolean animate) { ImageView imageView = getImageView(); if (null != imageView) { // Check to see if the scale is within bounds if (scale < mMinScale || scale > mMaxScale) { LogManager.getLogger().i(LOG_TAG, "Scale must be within the range of minScale and maxScale"); return; }/*from w ww . j a v a2 s .c om*/ if (animate) { imageView.post(new AnimatedZoomRunnable(getScale(), scale, focalX, focalY)); } else { mSuppMatrix.setScale(scale, scale, focalX, focalY); checkAndDisplayMatrix(); } } }
From source file:com.cylan.jiafeigou.support.photoview.PhotoViewAttacher.java
@Override public void setScale(float scale, float focalX, float focalY, boolean animate) { ImageView imageView = getImageView(); if (null != imageView) { // Check to see if the scale is within bounds if (scale < mMinScale || scale > mMaxScale) { // LogManager // .getLogger() // .i(LOG_TAG, // "Scale must be within the range of minScale and maxScale"); return; }// ww w . j av a 2 s. c o m if (animate) { imageView.post(new AnimatedZoomRunnable(getScale(), scale, focalX, focalY)); } else { mSuppMatrix.setScale(scale, scale, focalX, focalY); checkAndDisplayMatrix(); } } }
From source file:im.vector.adapters.VectorMediasViewerAdapter.java
/** * Download the video file/* w w w. ja v a 2 s .com*/ * @param view the slider page view * @param position the item position * @param force true to do not check the auto playmode */ public void downloadVideo(final View view, final int position, boolean force) { final VideoView videoView = (VideoView) view.findViewById(R.id.media_slider_videoview); final ImageView thumbView = (ImageView) view.findViewById(R.id.media_slider_video_thumbnail); final PieFractionView pieFractionView = (PieFractionView) view.findViewById(R.id.media_slider_piechart); final SlidableMediaInfo mediaInfo = mMediasMessagesList.get(position); final String loadingUri = mediaInfo.mMediaUrl; final String thumbnailUrl = mediaInfo.mThumbnailUrl; // check if the media has been downloaded File file = mMediasCache.mediaCacheFile(loadingUri, mediaInfo.mMimeType); if (null != file) { mHighResMediaIndex.add(position); loadVideo(position, view, thumbnailUrl, Uri.fromFile(file).toString(), mediaInfo.mMimeType); if (position == mAutoPlayItemAt) { playVideo(view, videoView, mediaInfo.mMediaUrl, mediaInfo.mMimeType); } mAutoPlayItemAt = -1; return; } // the video download starts only when the user taps on click // let assumes it might configurable if (!force && (mAutoPlayItemAt != position)) { return; } // else download it String downloadId = mMediasCache.downloadMedia(mContext, mSession.getHomeserverConfig(), loadingUri, mediaInfo.mMimeType); if (null != downloadId) { pieFractionView.setVisibility(View.VISIBLE); pieFractionView.setFraction(mMediasCache.getProgressValueForDownloadId(downloadId)); pieFractionView.setTag(downloadId); mMediasCache.addDownloadListener(downloadId, new MXMediaDownloadListener() { @Override public void onDownloadError(String downloadId, JsonElement jsonElement) { MatrixError error = JsonUtils.toMatrixError(jsonElement); if ((null != error) && error.isSupportedErrorCode()) { Toast.makeText(VectorMediasViewerAdapter.this.mContext, error.getLocalizedMessage(), Toast.LENGTH_LONG).show(); } } @Override public void onDownloadProgress(String aDownloadId, DownloadStats stats) { if (aDownloadId.equals(pieFractionView.getTag())) { pieFractionView.setFraction(stats.mProgress); } } @Override public void onDownloadComplete(String aDownloadId) { if (aDownloadId.equals(pieFractionView.getTag())) { pieFractionView.setVisibility(View.GONE); final File mediaFile = mMediasCache.mediaCacheFile(loadingUri, mediaInfo.mMimeType); if (null != mediaFile) { mHighResMediaIndex.add(position); Uri uri = Uri.fromFile(mediaFile); final String newHighResUri = uri.toString(); thumbView.post(new Runnable() { @Override public void run() { loadVideo(position, view, thumbnailUrl, newHighResUri, mediaInfo.mMimeType); if (position == mAutoPlayItemAt) { playVideo(view, videoView, mediaInfo.mMediaUrl, mediaInfo.mMimeType); mAutoPlayItemAt = -1; } } }); } } } }); } }