@Override protected void onFinishInflate() { mTextPreview = (TextView) findViewById(R.id.text_preview); mTextPreview.setTransformationMethod(HideReturnsTransformationMethod.getInstance()); mImagePreview = (ImageView) findViewById(R.id.image_preview); mAttachmentName = (TextView) findViewById(R.id.attachment_name); mAttachmentIcon = (ImageView) findViewById(R.id.attachment_icon); }
private void showPassword() { if (isShown) { passwordEdit.setTransformationMethod(PasswordTransformationMethod.getInstance()); } else { passwordEdit.setTransformationMethod(HideReturnsTransformationMethod.getInstance()); } isShown = !isShown; if (isShown) { showPassword.setImageResource(R.drawable.ic_hide); } else { showPassword.setImageResource(R.drawable.ic_show); } }
public void showHidePassword(View view) { switch (view.getId()) { case R.id.login_show_button: showPasswordImgButton.setVisibility(View.GONE); hidePasswordImgButton.setVisibility(View.VISIBLE); passwordLogin.setTransformationMethod(HideReturnsTransformationMethod.getInstance()); break; case R.id.login_hide_button: hidePasswordImgButton.setVisibility(View.GONE); showPasswordImgButton.setVisibility(View.VISIBLE); passwordLogin.setTransformationMethod(PasswordTransformationMethod.getInstance()); break; } }
public void setText(String name, String text) { if (!mConformanceMode) { if (null == mScrollText) { mScrollText = new ScrollView(mContext); mScrollText.setScrollBarStyle(SCROLLBARS_OUTSIDE_INSET); addView( mScrollText, new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, 0, 0)); if (DEBUG) { mScrollText.setBackgroundColor(0xFF00FF00); } } if (null == mTextView) { mTextView = new TextView(mContext); mTextView.setTransformationMethod(HideReturnsTransformationMethod.getInstance()); mScrollText.addView(mTextView); } mScrollText.requestFocus(); } mTextView.setVisibility(View.VISIBLE); mTextView.setText(text); }
/** * Makes the SlideView working on MMSConformance Mode. The view will be re-layout to the linear * view. * * <p>This is Chinese requirement about mms conformance. The most popular Mms service in China is * newspaper which is MMS conformance, normally it mixes the image and text and has a number of * slides. The AbsoluteLayout doesn't have good user experience for this kind of message, for * example, * * <p>1. AbsoluteLayout exactly follows the smil's layout which is not optimized, and actually, no * other MMS applications follow the smil's layout, they adjust the layout according their screen * size. MMS conformance doc also allows the implementation to adjust the layout. * * <p>2. The TextView is fixed in the small area of screen, and other part of screen is empty once * there is no image in the current slide. * * <p>3. The TextView is scrollable in a small area of screen and the font size is small which * make the user experience bad. * * <p>The better UI for the MMS conformance message could be putting the image/video and text in a * linear layout view and making them scrollable together. * * <p>Another reason for only applying the LinearLayout to the MMS conformance message is that the * AbsoluteLayout has ability to play image and video in a same screen. which shouldn't be broken. */ public void enableMMSConformanceMode(int textLeft, int textTop, int imageLeft, int imageTop) { mConformanceMode = true; if (mScrollViewPort == null) { mScrollViewPort = new ScrollView(mContext) { private int mBottomY; @Override protected void onLayout(boolean changed, int left, int top, int right, int bottom) { super.onLayout(changed, left, top, right, bottom); if (getChildCount() > 0) { int childHeight = getChildAt(0).getHeight(); int height = getHeight(); mBottomY = height < childHeight ? childHeight - height : 0; } } @Override protected void onScrollChanged(int l, int t, int oldl, int oldt) { // Shows MediaController when the view is scrolled to the top/bottom of itself. if (t == 0 || t >= mBottomY) { if (mMediaController != null) { mMediaController.show(); } } } }; mScrollViewPort.setScrollBarStyle(SCROLLBARS_OUTSIDE_INSET); mViewPort = new LinearLayout(mContext); mViewPort.setOrientation(LinearLayout.VERTICAL); mViewPort.setGravity(Gravity.CENTER); mViewPort.setOnClickListener( new OnClickListener() { public void onClick(View v) { if (mMediaController != null) { mMediaController.show(); } } }); mScrollViewPort.addView( mViewPort, new FrameLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT)); addView(mScrollViewPort); } // Layout views to fit the LinearLayout from left to right, then top to // bottom. TreeMap<Position, View> viewsByPosition = new TreeMap<Position, View>( new Comparator<Position>() { public int compare(Position p1, Position p2) { int l1 = p1.mLeft; int t1 = p1.mTop; int l2 = p2.mLeft; int t2 = p2.mTop; int res = t1 - t2; if (res == 0) { res = l1 - l2; } if (res == 0) { // A view will be lost if return 0. return -1; } return res; } }); if (textLeft >= 0 && textTop >= 0) { mTextView = new TextView(mContext); mTextView.setTransformationMethod(HideReturnsTransformationMethod.getInstance()); mTextView.setTextSize(18); mTextView.setPadding(5, 5, 5, 5); viewsByPosition.put(new Position(textLeft, textTop), mTextView); } if (imageLeft >= 0 && imageTop >= 0) { mImageView = new ImageView(mContext); mImageView.setPadding(0, 5, 0, 5); viewsByPosition.put(new Position(imageLeft, imageTop), mImageView); // According MMS Conformance Document, the image and video should use the same // region. So, put the VideoView below the ImageView. mVideoView = new VideoView(mContext); viewsByPosition.put(new Position(imageLeft + 1, imageTop), mVideoView); } for (View view : viewsByPosition.values()) { if (view instanceof VideoView) { mViewPort.addView( view, new LinearLayout.LayoutParams( LayoutParams.MATCH_PARENT, LayoutManager.getInstance().getLayoutParameters().getHeight())); } else { mViewPort.addView( view, new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT)); } view.setVisibility(View.GONE); } }
private void bindCommonMessage() { if (mDownloadButton != null) { mDownloadButton.setVisibility(View.GONE); mDownloadingLabel.setVisibility(View.GONE); } // Since the message text should be concatenated with the sender's // address(or name), I have to display it here instead of // displaying it by the Presenter. mBodyTextView.setTransformationMethod(HideReturnsTransformationMethod.getInstance()); boolean isSelf = Sms.isOutgoingFolder(mMessageItem.mBoxId); String addr = isSelf ? null : mMessageItem.mAddress; updateAvatarView(addr, isSelf); // Get and/or lazily set the formatted message from/on the // MessageItem. Because the MessageItem instances come from a // cache (currently of size ~50), the hit rate on avoiding the // expensive formatMessage() call is very high. CharSequence formattedMessage = mMessageItem.getCachedFormattedMessage(); if (formattedMessage == null) { formattedMessage = formatMessage( mMessageItem, mMessageItem.mContact, mMessageItem.mBody, mMessageItem.mSubject, mMessageItem.mHighlight, mMessageItem.mTextContentType); mMessageItem.setCachedFormattedMessage(formattedMessage); } mBodyTextView.setText(formattedMessage); // Debugging code to put the URI of the image attachment in the body of the list item. if (DEBUG) { String debugText = null; if (mMessageItem.mSlideshow == null) { debugText = "NULL slideshow"; } else { SlideModel slide = ((SlideshowModel) mMessageItem.mSlideshow).get(0); if (slide == null) { debugText = "NULL first slide"; } else if (!slide.hasImage()) { debugText = "Not an image"; } else { debugText = slide.getImage().getUri().toString(); } } mBodyTextView.setText(mPosition + ": " + debugText); } // If we're in the process of sending a message (i.e. pending), then we show a "SENDING..." // string in place of the timestamp. mDateView.setText( mMessageItem.isSending() ? mContext.getResources().getString(R.string.sending_message) : mMessageItem.mTimestamp); if (mMessageItem.isSms()) { showMmsView(false); mMessageItem.setOnPduLoaded(null); } else { if (DEBUG) { Log.v( TAG, "bindCommonMessage for item: " + mPosition + " " + mMessageItem.toString() + " mMessageItem.mAttachmentType: " + mMessageItem.mAttachmentType); } if (mMessageItem.mAttachmentType != WorkingMessage.TEXT) { setImage(null, null); setOnClickListener(mMessageItem); drawPlaybackButton(mMessageItem); } else { showMmsView(false); } if (mMessageItem.mSlideshow == null) { mMessageItem.setOnPduLoaded( new MessageItem.PduLoadedCallback() { public void onPduLoaded(MessageItem messageItem) { if (DEBUG) { Log.v( TAG, "PduLoadedCallback in MessageListItem for item: " + mPosition + " " + (mMessageItem == null ? "NULL" : mMessageItem.toString()) + " passed in item: " + (messageItem == null ? "NULL" : messageItem.toString())); } if (messageItem != null && mMessageItem != null && messageItem.getMessageId() == mMessageItem.getMessageId()) { mMessageItem.setCachedFormattedMessage(null); bindCommonMessage(); } } }); } else { if (mPresenter == null) { mPresenter = PresenterFactory.getPresenter( "MmsThumbnailPresenter", mContext, this, mMessageItem.mSlideshow); } else { mPresenter.setModel(mMessageItem.mSlideshow); mPresenter.setView(this); } if (mImageLoadedCallback == null) { mImageLoadedCallback = new ImageLoadedCallback(this); } else { mImageLoadedCallback.reset(this); } mPresenter.present(mImageLoadedCallback); } } drawRightStatusIndicator(mMessageItem); requestLayout(); }