From 4f0d290c5d112ebac434bd8de4635f7d42ea2df0 Mon Sep 17 00:00:00 2001 From: Ken Wakasa Date: Sat, 25 Jun 2011 03:54:11 +0900 Subject: Avoid memory leak by by non-static Handler inner classes bug: 4901934 Change-Id: I870ab2e621ef3640a84468f09c074cdd726dc963 --- java/src/com/android/inputmethod/latin/CandidateView.java | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) (limited to 'java/src/com/android/inputmethod/latin/CandidateView.java') diff --git a/java/src/com/android/inputmethod/latin/CandidateView.java b/java/src/com/android/inputmethod/latin/CandidateView.java index 09fd3b473..bb1ccbfcd 100644 --- a/java/src/com/android/inputmethod/latin/CandidateView.java +++ b/java/src/com/android/inputmethod/latin/CandidateView.java @@ -21,7 +21,6 @@ import android.content.res.Resources; import android.content.res.TypedArray; import android.graphics.Color; import android.graphics.Typeface; -import android.os.Handler; import android.os.Message; import android.text.Spannable; import android.text.SpannableString; @@ -95,23 +94,28 @@ public class CandidateView extends LinearLayout implements OnClickListener, OnLo private boolean mShowingAutoCorrectionInverted; private boolean mShowingAddToDictionary; - private final UiHandler mHandler = new UiHandler(); + private final UiHandler mHandler = new UiHandler(this); - private class UiHandler extends Handler { + private static class UiHandler extends StaticInnerHandlerWrapper { private static final int MSG_HIDE_PREVIEW = 0; private static final int MSG_UPDATE_SUGGESTION = 1; private static final long DELAY_HIDE_PREVIEW = 1000; private static final long DELAY_UPDATE_SUGGESTION = 300; + public UiHandler(CandidateView outerInstance) { + super(outerInstance); + } + @Override public void dispatchMessage(Message msg) { + final CandidateView candidateView = getOuterInstance(); switch (msg.what) { case MSG_HIDE_PREVIEW: - hidePreview(); + candidateView.hidePreview(); break; case MSG_UPDATE_SUGGESTION: - updateSuggestions(); + candidateView.updateSuggestions(); break; } } -- cgit v1.2.3-83-g751a From 7fb04fe007a6d0489168e9c87771db554c873464 Mon Sep 17 00:00:00 2001 From: "Tadashi G. Takaoka" Date: Sun, 26 Jun 2011 02:07:07 +0900 Subject: Fix ragged suggestion strip baseline Change-Id: I5fa9e2ad0993602e24f436e1d8ad0999209e5180 --- java/res/layout/candidate_word.xml | 1 + java/res/layout/candidates_strip.xml | 2 +- java/src/com/android/inputmethod/latin/CandidateView.java | 6 ++---- 3 files changed, 4 insertions(+), 5 deletions(-) (limited to 'java/src/com/android/inputmethod/latin/CandidateView.java') diff --git a/java/res/layout/candidate_word.xml b/java/res/layout/candidate_word.xml index 94ae2b44e..3d2ad06e4 100644 --- a/java/res/layout/candidate_word.xml +++ b/java/res/layout/candidate_word.xml @@ -24,4 +24,5 @@ android:layout_height="wrap_content" android:minWidth="@dimen/candidate_min_width" android:textSize="@dimen/candidate_text_size" + android:padding="0dp" style="?attr/suggestionBackgroundStyle" /> diff --git a/java/res/layout/candidates_strip.xml b/java/res/layout/candidates_strip.xml index c23c29cbe..bb11e057c 100644 --- a/java/res/layout/candidates_strip.xml +++ b/java/res/layout/candidates_strip.xml @@ -56,7 +56,7 @@ android:orientation="horizontal" android:layout_weight="1.0" android:layout_width="0dp" - android:layout_height="wrap_content" + android:layout_height="match_parent" android:gravity="center_vertical" > mWords = new ArrayList(); private final ArrayList mInfos = new ArrayList(); private final ArrayList mDividers = new ArrayList(); - private final int mCandidatePadding; private final int mCandidateStripHeight; private final CharacterStyle mInvertedForegroundColorSpan; private final CharacterStyle mInvertedBackgroundColorSpan; @@ -179,14 +178,13 @@ public class CandidateView extends LinearLayout implements OnClickListener, OnLo mPreviewPopup.setContentView(mPreviewText); mPreviewPopup.setBackgroundDrawable(null); - mCandidatePadding = res.getDimensionPixelOffset(R.dimen.candidate_padding); mCandidateStripHeight = res.getDimensionPixelOffset(R.dimen.candidate_strip_height); for (int i = 0; i < MAX_SUGGESTIONS; i++) { final TextView word, info; switch (i) { case 0: word = (TextView)findViewById(R.id.word_left); - word.setPadding(mCandidatePadding, 0, 0, 0); + word.setPadding(res.getDimensionPixelOffset(R.dimen.candidate_padding), 0, 0, 0); info = (TextView)findViewById(R.id.info_left); break; case 1: @@ -355,7 +353,7 @@ public class CandidateView extends LinearLayout implements OnClickListener, OnLo if (info != null) { final int infoWidth = info.getMeasuredWidth(); FrameLayoutCompatUtils.placeViewAt( - info, x + width - infoWidth, y, infoWidth, info.getMeasuredHeight()); + info, width - infoWidth, 0, infoWidth, info.getMeasuredHeight()); } } else { // TODO: Handle overflow case. -- cgit v1.2.3-83-g751a From 717a8f50aec421f74e4d43432059c2fb41cb32c7 Mon Sep 17 00:00:00 2001 From: "Tadashi G. Takaoka" Date: Mon, 27 Jun 2011 16:57:18 +0900 Subject: Use dedicated layout for "touch to save word" feature Change-Id: Ie8c948476740a645d8b2d9a9d821236941d27adf --- java/res/layout/candidates_strip.xml | 131 +++++++++++++-------- .../android/inputmethod/latin/CandidateView.java | 33 ++++-- 2 files changed, 103 insertions(+), 61 deletions(-) (limited to 'java/src/com/android/inputmethod/latin/CandidateView.java') diff --git a/java/res/layout/candidates_strip.xml b/java/res/layout/candidates_strip.xml index bb11e057c..3509a4815 100644 --- a/java/res/layout/candidates_strip.xml +++ b/java/res/layout/candidates_strip.xml @@ -22,42 +22,10 @@ xmlns:android="http://schemas.android.com/apk/res/android" xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin" > - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + +