diff --git a/samples/SupportLeanbackShowcase/app/src/main/AndroidManifest.xml b/samples/SupportLeanbackShowcase/app/src/main/AndroidManifest.xml
index 71f1b7d28..c15f13513 100644
--- a/samples/SupportLeanbackShowcase/app/src/main/AndroidManifest.xml
+++ b/samples/SupportLeanbackShowcase/app/src/main/AndroidManifest.xml
@@ -39,6 +39,9 @@
+
diff --git a/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/CardExampleFragment.java b/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/CardExampleFragment.java
index b47caf172..4ece60db1 100644
--- a/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/CardExampleFragment.java
+++ b/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/CardExampleFragment.java
@@ -70,7 +70,7 @@ public class CardExampleFragment extends BrowseFragment {
private void createRows() {
String json = Utils
- .inputStreamToString(getResources().openRawResource(R.raw.cards_card_example));
+ .inputStreamToString(getResources().openRawResource(R.raw.cards_example));
CardRow[] rows = new Gson().fromJson(json, CardRow[].class);
for (CardRow row : rows) {
mRowsAdapter.add(createCardRow(row));
diff --git a/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/DetailViewExampleActivity.java b/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/DetailViewExampleActivity.java
new file mode 100644
index 000000000..e301f58f5
--- /dev/null
+++ b/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/DetailViewExampleActivity.java
@@ -0,0 +1,54 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
+package android.support.v17.leanback.supportleanbackshowcase;
+
+import android.app.Activity;
+import android.graphics.Color;
+import android.graphics.drawable.ColorDrawable;
+import android.os.Bundle;
+import android.support.v17.leanback.app.DetailsFragment;
+import android.support.v17.leanback.app.GuidedStepFragment;
+import android.support.v17.leanback.supportleanbackshowcase.cards.models.Card;
+import android.support.v17.leanback.supportleanbackshowcase.cards.presenters.CardPresenterSelector;
+import android.support.v17.leanback.widget.Action;
+import android.support.v17.leanback.widget.ArrayObjectAdapter;
+import android.support.v17.leanback.widget.ClassPresenterSelector;
+import android.support.v17.leanback.widget.DetailsOverviewRow;
+import android.support.v17.leanback.widget.FullWidthDetailsOverviewRowPresenter;
+import android.support.v17.leanback.widget.HeaderItem;
+import android.support.v17.leanback.widget.ListRow;
+import android.support.v17.leanback.widget.ListRowPresenter;
+import android.support.v17.leanback.widget.OnItemViewClickedListener;
+import android.support.v17.leanback.widget.OnItemViewSelectedListener;
+import android.support.v17.leanback.widget.Presenter;
+import android.support.v17.leanback.widget.Row;
+import android.support.v17.leanback.widget.RowPresenter;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.Toast;
+
+import com.google.gson.Gson;
+
+/**
+ * Contains a {@link DetailsFragment} in order to display more details for a given card.
+ */
+public class DetailViewExampleActivity extends Activity {
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_detail_example);
+ }
+}
diff --git a/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/DetailViewExampleFragment.java b/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/DetailViewExampleFragment.java
index 10ceceb38..543358707 100644
--- a/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/DetailViewExampleFragment.java
+++ b/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/DetailViewExampleFragment.java
@@ -38,39 +38,46 @@ import android.widget.Toast;
import com.google.gson.Gson;
/**
- * Displays a card with more details.
+ * Displays a card with more details using a {@link DetailsFragment}.
*/
public class DetailViewExampleFragment extends DetailsFragment implements OnItemViewClickedListener,
OnItemViewSelectedListener {
- private static final String TAG = "DetailViewExampleFragment";
private ArrayObjectAdapter mRowsAdapter;
- @Override public void onActivityCreated(Bundle savedInstanceState) {
+ @Override
+ public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
setupUi();
setupEventListeners();
}
private void setupUi() {
+ // Load the card we want to display from a JSON resource. This JSON data could come from
+ // anywhere in a real world app, e.g. a server.
String json = Utils
.inputStreamToString(getResources().openRawResource(R.raw.detail_example));
DetailedCard data = new Gson().fromJson(json, DetailedCard.class);
+
+ // Setup fragment
setTitle(getString(R.string.detail_view_title));
FullWidthDetailsOverviewRowPresenter rowPresenter = new FullWidthDetailsOverviewRowPresenter(
new DetailsDescriptionPresenter(getActivity())) {
- @Override protected RowPresenter.ViewHolder createRowViewHolder(ViewGroup parent) {
+
+ @Override
+ protected RowPresenter.ViewHolder createRowViewHolder(ViewGroup parent) {
+ // Customize Actionbar and Content by using custom colors.
RowPresenter.ViewHolder viewHolder = super.createRowViewHolder(parent);
- // TODO: hahnr@ replace with API calls (they don't exist yet)
- View actionsView = viewHolder.view.findViewById(R.id.details_overview_actions);
- actionsView.setBackgroundColor(getActivity().getResources().getColor(
- R.color.detail_view_actionbar_background));
+ View actionsView = viewHolder.view.
+ findViewById(R.id.details_overview_actions_background);
+ actionsView.setBackgroundColor(getActivity().getResources().
+ getColor(R.color.detail_view_actionbar_background, null));
View detailsView = viewHolder.view.findViewById(R.id.details_frame);
detailsView.setBackgroundColor(
- getActivity().getResources().getColor(R.color.detail_view_background));
+ getResources().getColor(R.color.detail_view_background, null));
return viewHolder;
}
};
@@ -112,26 +119,30 @@ public class DetailViewExampleFragment extends DetailsFragment implements OnItem
}
private void setupEventListeners() {
- // FIXME: leanbackteam@ The item & itemViewHolder parameters in onItemSelected are null in the DetailsOverviewRow as long as the user navigates top or down. After navigating left or right it will be the actual item rather than null.
setOnItemViewSelectedListener(this);
setOnItemViewClickedListener(this);
}
- @Override public void onItemClicked(Presenter.ViewHolder itemViewHolder, Object item,
- RowPresenter.ViewHolder rowViewHolder, Row row) {
+ @Override
+ public void onItemClicked(Presenter.ViewHolder itemViewHolder, Object item,
+ RowPresenter.ViewHolder rowViewHolder, Row row) {
if (!(item instanceof Action)) return;
Action action = (Action) item;
if (action.getId() == 3) {
setSelectedPosition(1);
- } else Toast.makeText(getActivity(), getString(R.string.action_cicked), Toast.LENGTH_LONG)
+ } else {
+ Toast.makeText(getActivity(), getString(R.string.action_cicked), Toast.LENGTH_LONG)
.show();
+ }
}
- @Override public void onItemSelected(Presenter.ViewHolder itemViewHolder, Object item,
- RowPresenter.ViewHolder rowViewHolder, Row row) {
+ @Override
+ public void onItemSelected(Presenter.ViewHolder itemViewHolder, Object item,
+ RowPresenter.ViewHolder rowViewHolder, Row row) {
if (mRowsAdapter.indexOf(row) > 0) {
- getView().setBackgroundColor(
- getResources().getColor(R.color.detail_view_related_background));
+ int backgroundColor = getResources().getColor(R.color.detail_view_related_background,
+ null);
+ getView().setBackgroundColor(backgroundColor);
} else {
getView().setBackgroundResource(R.drawable.background_canyon);
}
diff --git a/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/DetailsDescriptionPresenter.java b/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/DetailsDescriptionPresenter.java
index 678b3d578..ebb5c53e6 100644
--- a/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/DetailsDescriptionPresenter.java
+++ b/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/DetailsDescriptionPresenter.java
@@ -36,7 +36,7 @@ public class DetailsDescriptionPresenter extends Presenter {
}
@Override public ViewHolder onCreateViewHolder(ViewGroup parent) {
- View view = LayoutInflater.from(mContext).inflate(R.layout.detail_view, null);
+ View view = LayoutInflater.from(mContext).inflate(R.layout.detail_view_content, null);
return new ViewHolder(view);
}
diff --git a/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/MainFragment.java b/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/MainFragment.java
index 3522d0b45..6486a10b6 100644
--- a/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/MainFragment.java
+++ b/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/MainFragment.java
@@ -178,12 +178,9 @@ public class MainFragment extends BrowseFragment {
break;
}
case 3: {
- updateBackgroundImage(
- getResources().getDrawable(R.drawable.background_canyon, null));
- Fragment fragment = new DetailViewExampleFragment();
- getFragmentManager().beginTransaction()
- .replace(R.id.fragmentContainer, fragment)
- .addToBackStack(null).commit();
+ Intent intent = new Intent(getActivity().getBaseContext(),
+ DetailViewExampleActivity.class);
+ startActivity(intent);
break;
}
case 4: {
diff --git a/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/Movie.java b/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/Movie.java
index 3fc9d6955..4d590aebd 100644
--- a/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/Movie.java
+++ b/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/Movie.java
@@ -1,3 +1,17 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
package android.support.v17.leanback.supportleanbackshowcase;
import com.google.gson.annotations.SerializedName;
diff --git a/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/ResourceCache.java b/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/ResourceCache.java
index bee5cbbec..c7c858939 100644
--- a/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/ResourceCache.java
+++ b/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/ResourceCache.java
@@ -1,3 +1,17 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
package android.support.v17.leanback.supportleanbackshowcase;
import android.util.SparseArray;
diff --git a/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/SettingsExampleFragment.java b/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/SettingsExampleFragment.java
index fef91b108..44930f2b4 100644
--- a/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/SettingsExampleFragment.java
+++ b/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/SettingsExampleFragment.java
@@ -1,3 +1,17 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
package android.support.v17.leanback.supportleanbackshowcase;
import android.app.Fragment;
diff --git a/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/VideoConsumptionExampleFragment.java b/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/VideoConsumptionExampleFragment.java
index 058f759fa..29e82a875 100644
--- a/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/VideoConsumptionExampleFragment.java
+++ b/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/VideoConsumptionExampleFragment.java
@@ -34,13 +34,11 @@ public class VideoConsumptionExampleFragment extends PlaybackOverlayFragment imp
OnItemViewClickedListener, MediaPlayerGlue.OnMediaFileFinishedPlayingListener {
private static final String URL = "http://techslides.com/demos/sample-videos/small.mp4";
- private static final String TAG = "VideoConsumptionExampleFragment";
private ArrayObjectAdapter mRowsAdapter;
private MediaPlayerGlue mGlue;
@Override public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- if (Constants.LOCAL_LOGD) Log.d(TAG, "onCreate");
mGlue = new VideoMediaPlayerGlue(getActivity(), this) {
@@ -61,7 +59,6 @@ public class VideoConsumptionExampleFragment extends PlaybackOverlayFragment imp
SurfaceView surface = (SurfaceView) videoSurfaceFragment.getView();
surface.getHolder().addCallback(new SurfaceHolder.Callback() {
@Override public void surfaceCreated(SurfaceHolder holder) {
- Log.d(TAG, "surfaceCreated(SurfaceHolder)");
mGlue.setDisplay(holder);
}
@@ -71,7 +68,6 @@ public class VideoConsumptionExampleFragment extends PlaybackOverlayFragment imp
}
@Override public void surfaceDestroyed(SurfaceHolder holder) {
- Log.d(TAG, "surfaceDestroyed(SurfaceHolder)");
}
});
diff --git a/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/WizardExample2ndStepFragment.java b/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/WizardExample2ndStepFragment.java
index 4d54a6a7e..ea532880b 100644
--- a/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/WizardExample2ndStepFragment.java
+++ b/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/WizardExample2ndStepFragment.java
@@ -1,3 +1,17 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
package android.support.v17.leanback.supportleanbackshowcase;
import android.graphics.Color;
diff --git a/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/WizardExample3rdStepFragment.java b/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/WizardExample3rdStepFragment.java
index 4838301fb..fccf7c9ee 100644
--- a/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/WizardExample3rdStepFragment.java
+++ b/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/WizardExample3rdStepFragment.java
@@ -1,7 +1,19 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
package android.support.v17.leanback.supportleanbackshowcase;
-import android.graphics.Color;
-import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.os.Handler;
import android.support.annotation.NonNull;
@@ -9,11 +21,8 @@ import android.support.v17.leanback.app.GuidedStepFragment;
import android.support.v17.leanback.widget.GuidanceStylist;
import android.support.v17.leanback.widget.GuidedAction;
import android.support.v17.leanback.widget.GuidedActionsStylist;
-import android.util.Log;
import java.util.List;
-import java.util.Timer;
-import java.util.TimerTask;
/**
* TODO: JavaDoc
diff --git a/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/WizardExample4thStepFragment.java b/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/WizardExample4thStepFragment.java
index 623de26ca..82a8a3d65 100644
--- a/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/WizardExample4thStepFragment.java
+++ b/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/WizardExample4thStepFragment.java
@@ -1,3 +1,17 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
package android.support.v17.leanback.supportleanbackshowcase;
import android.os.Bundle;
diff --git a/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/cards/CharacterCardView.java b/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/cards/CharacterCardView.java
new file mode 100644
index 000000000..311f88518
--- /dev/null
+++ b/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/cards/CharacterCardView.java
@@ -0,0 +1,70 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
+package android.support.v17.leanback.supportleanbackshowcase.cards;
+
+import android.content.Context;
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.support.v17.leanback.supportleanbackshowcase.R;
+import android.support.v17.leanback.supportleanbackshowcase.cards.models.Card;
+import android.support.v17.leanback.widget.BaseCardView;
+import android.support.v4.graphics.drawable.RoundedBitmapDrawable;
+import android.support.v4.graphics.drawable.RoundedBitmapDrawableFactory;
+import android.util.SparseArray;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+public class CharacterCardView extends BaseCardView {
+
+ public CharacterCardView(Context context) {
+ super(context);
+ LayoutInflater.from(getContext()).inflate(R.layout.character_card, this);
+ setOnFocusChangeListener(new View.OnFocusChangeListener() {
+ @Override
+ public void onFocusChange(View v, boolean hasFocus) {
+ ImageView mainImage = (ImageView) findViewById(R.id.main_image);
+ View container = findViewById(R.id.container);
+ if (hasFocus) {
+ container.setBackgroundResource(R.drawable.character_focused);
+ mainImage.setBackgroundResource(R.drawable.character_focused);
+ } else {
+ container.setBackgroundResource(R.drawable.character_not_focused_padding);
+ mainImage.setBackgroundResource(R.drawable.character_not_focused);
+ }
+ }
+ });
+ setFocusable(true);
+ }
+
+ public void updateUi(Card card) {
+ TextView primaryText = (TextView) findViewById(R.id.primary_text);
+ final ImageView imageView = (ImageView) findViewById(R.id.main_image);
+
+ primaryText.setText(card.getTitle());
+ if (card.getLocalImageResourceName() != null) {
+ int resourceId = card.getLocalImageResourceId(getContext());
+ Bitmap bitmap = BitmapFactory
+ .decodeResource(getContext().getResources(), resourceId);
+ RoundedBitmapDrawable drawable = RoundedBitmapDrawableFactory.create(getContext().getResources(), bitmap);
+ drawable.setAntiAlias(true);
+ drawable.setCornerRadius(Math.max(bitmap.getWidth(), bitmap.getHeight()) / 2.0f);
+ imageView.setImageDrawable(drawable);
+ }
+ }
+
+
+}
diff --git a/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/cards/TextCardView.java b/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/cards/TextCardView.java
new file mode 100644
index 000000000..4f661e098
--- /dev/null
+++ b/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/cards/TextCardView.java
@@ -0,0 +1,57 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
+ * in compliance with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under the License
+ * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
+ * or implied. See the License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
+package android.support.v17.leanback.supportleanbackshowcase.cards;
+
+import android.content.Context;
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.support.v17.leanback.supportleanbackshowcase.R;
+import android.support.v17.leanback.supportleanbackshowcase.cards.models.Card;
+import android.support.v17.leanback.widget.BaseCardView;
+import android.support.v4.graphics.drawable.RoundedBitmapDrawable;
+import android.support.v4.graphics.drawable.RoundedBitmapDrawableFactory;
+import android.view.LayoutInflater;
+import android.widget.FrameLayout;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+public class TextCardView extends BaseCardView {
+
+ public TextCardView(Context context) {
+ super(context);
+ LayoutInflater.from(getContext()).inflate(R.layout.text_icon_card, this);
+ setFocusable(true);
+ }
+
+ public void updateUi(Card card) {
+ TextView extraText = (TextView) findViewById(R.id.extra_text);
+ TextView primaryText = (TextView) findViewById(R.id.primary_text);
+ final ImageView imageView = (ImageView) findViewById(R.id.main_image);
+
+ extraText.setText(card.getExtraText());
+ primaryText.setText(card.getTitle());
+
+ // Create a rounded drawable.
+ int resourceId = card.getLocalImageResourceId(getContext());
+ Bitmap bitmap = BitmapFactory
+ .decodeResource(getContext().getResources(), resourceId);
+ RoundedBitmapDrawable drawable = RoundedBitmapDrawableFactory.create(getContext().getResources(), bitmap);
+ drawable.setAntiAlias(true);
+ drawable.setCornerRadius(
+ Math.max(bitmap.getWidth(), bitmap.getHeight()) / 2.0f);
+ imageView.setImageDrawable(drawable);
+ }
+
+}
diff --git a/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/cards/models/Card.java b/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/cards/models/Card.java
index c0b79c7e0..79f951938 100644
--- a/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/cards/models/Card.java
+++ b/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/cards/models/Card.java
@@ -109,12 +109,13 @@ public class Card {
public enum Type {
- THIN,
- THIN_RATING,
+ MOVIE_COMPLETE,
+ MOVIE,
+ MOVIE_BASE,
ICON,
SQUARE_BIG,
- SQUARE,
- WIDE_SHORT,
+ SINGLE_LINE,
+ GAME,
SQUARE_SMALL,
DEFAULT,
SIDE_INFO,
diff --git a/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/cards/presenters/AbstractCardPresenter.java b/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/cards/presenters/AbstractCardPresenter.java
index 574968c07..b81f119ed 100644
--- a/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/cards/presenters/AbstractCardPresenter.java
+++ b/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/cards/presenters/AbstractCardPresenter.java
@@ -15,7 +15,6 @@ package android.support.v17.leanback.supportleanbackshowcase.cards.presenters;
import android.content.Context;
import android.support.v17.leanback.supportleanbackshowcase.cards.models.Card;
-import android.support.v17.leanback.supportleanbackshowcase.cards.views.BaseCardViewEx;
import android.support.v17.leanback.widget.BaseCardView;
import android.support.v17.leanback.widget.Presenter;
import android.view.ViewGroup;
diff --git a/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/cards/presenters/AbstractFooterCardPresenter.java b/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/cards/presenters/AbstractFooterCardPresenter.java
deleted file mode 100644
index adfda2407..000000000
--- a/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/cards/presenters/AbstractFooterCardPresenter.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
- * in compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License
- * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
- * or implied. See the License for the specific language governing permissions and limitations under
- * the License.
- */
-
-package android.support.v17.leanback.supportleanbackshowcase.cards.presenters;
-
-import android.content.Context;
-import android.graphics.drawable.ColorDrawable;
-import android.graphics.drawable.Drawable;
-import android.support.v17.leanback.supportleanbackshowcase.R;
-import android.support.v17.leanback.supportleanbackshowcase.Utils;
-import android.support.v17.leanback.supportleanbackshowcase.cards.models.Card;
-import android.support.v17.leanback.supportleanbackshowcase.cards.views.FooterLayoutCardView;
-import android.support.v17.leanback.widget.Presenter;
-import android.view.ViewGroup;
-import android.widget.ImageView;
-
-import com.squareup.picasso.Picasso;
-
-/**
- * A custom and abstract card {@link Presenter} which allows to create a card consisting of an image
- * and a custom footer. The footer is passed as a layout and will be inflated automatically.
- */
-public abstract class AbstractFooterCardPresenter extends
- AbstractCardPresenter {
-
- private static final String TAG = "AbstractFooterCardPresenter";
- private final Drawable mLoadingErrorDrawable;
- private final int mFooterLayoutd;
- private final int mImageWidth;
- private final int mImageHeight;
-
- /**
- * @param context Used to retrieve default values such as error drawables.
- * @param footerLayoutId The layout which represents the footer.
- * @param imageWidth The width of the card's main image. This width defines the card's width
- * too.
- * @param imageHeight The height of the card's main image. The card's height will be
- * imageHeight + footerHeight
- */
- public AbstractFooterCardPresenter(Context context, int footerLayoutId, int imageWidth,
- int imageHeight) {
- super(context);
- mFooterLayoutd = footerLayoutId;
- mImageWidth = imageWidth;
- mImageHeight = imageHeight;
-
- // In case the image could not be fetched from the server we want to make sure something is show. In this case, a solid color.
- int color = context.getResources().getColor(R.color.loading_error_card_background);
- mLoadingErrorDrawable = new ColorDrawable(color);
- }
-
- @Override public final FooterLayoutCardView onCreateView() {
- FooterLayoutCardView cardView = new FooterLayoutCardView(getContext(), mFooterLayoutd,
- mImageWidth, mImageHeight);
- onViewCreated(cardView);
- return cardView;
- }
-
- @Override public void onBindViewHolder(Card card, FooterLayoutCardView cardView) {
- // Load the card's image. This can be either an image on a remote server or a local one stored in the resources.
- ImageView imageView = cardView.getImageView();
- if (card.getImageURI() != null) {
- Utils.loadImageFromUri(getContext(), card.getImageURI(), imageView, mImageWidth,
- mImageHeight, true, mLoadingErrorDrawable);
- } else if (card.getLocalImageResourceName() != null) {
- int resourceId = getContext().getResources()
- .getIdentifier(card.getLocalImageResourceName(),
- "drawable", getContext().getPackageName());
- Picasso.with(getContext()).load(resourceId).resize(mImageWidth, mImageHeight)
- .centerCrop().into(imageView);
- }
- }
-
- /**
- * Override this method to react to creations of new card views.
- *
- * @param cardView The view which has been created.
- * @see Presenter#onCreateViewHolder(ViewGroup)
- */
- public void onViewCreated(FooterLayoutCardView cardView) {
- // Nothing to clean up. Override if necessary.
- }
-
-}
diff --git a/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/cards/presenters/CardPresenterSelector.java b/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/cards/presenters/CardPresenterSelector.java
index 491fb2f72..53d462069 100644
--- a/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/cards/presenters/CardPresenterSelector.java
+++ b/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/cards/presenters/CardPresenterSelector.java
@@ -25,9 +25,6 @@ import java.util.HashMap;
/**
* This PresenterSelector will decide what Presenter to use depending on a given card's type.
- *
- * TODO: leanbackteam@ Discuss whether leanback's PresenterSelector should be renamed to
- * AbstractPresenterSelector.
*/
public class CardPresenterSelector extends PresenterSelector {
@@ -38,68 +35,55 @@ public class CardPresenterSelector extends PresenterSelector {
mContext = context;
}
- @Override public Presenter getPresenter(Object item) {
+ @Override
+ public Presenter getPresenter(Object item) {
if (!(item instanceof Card)) throw new RuntimeException(
String.format("The PresenterSelector only supports data items of type '%s'",
- Card.class.getName()));
+ Card.class.getName()));
Card card = (Card) item;
Presenter presenter = presenters.get(card.getType());
- if (presenter == null) switch (card.getType()) {
- case SQUARE:
- presenter = new SingleLineCardPresenter(mContext);
- break;
- case THIN_RATING:
- presenter = new MovieRatingCardPresenter(mContext);
- break;
- case SIDE_INFO:
- presenter = new SideInfoCardPresenter(mContext);
- break;
- case SIDE_INFO_TEST_1:
- presenter = new LauncherCardPresenter(mContext);
- break;
- case TEXT:
- presenter = new TextCardPresenter(mContext);
- break;
- case ICON:
- presenter = new IconCardPresenter(mContext);
- break;
- case CHARACTER:
- presenter = new CharacterCardPresenter(mContext);
- break;
- case THIN: {
- int width = (int) mContext.getResources()
- .getDimension(R.dimen.thin_image_card_width);
- int height = (int) mContext.getResources()
- .getDimension(R.dimen.thin_image_card_height);
- presenter = new ImageCardViewPresenter1(mContext, width, height);
+ if (presenter == null) {
+ switch (card.getType()) {
+ case SINGLE_LINE:
+ presenter = new SingleLineCardPresenter(mContext);
+ break;
+ case MOVIE:
+ case MOVIE_BASE:
+ case MOVIE_COMPLETE:
+ case SQUARE_BIG:
+ case GRID_SQUARE:
+ case GAME: {
+ int style = R.style.MovieCardSimpleStyle;
+ if (card.getType() == Card.Type.MOVIE_BASE) {
+ style = R.style.MovieCardBasicStyle;
+ } else if (card.getType() == Card.Type.MOVIE_COMPLETE) {
+ style = R.style.MovieCardCompleteStyle;
+ } else if (card.getType() == Card.Type.SQUARE_BIG) {
+ style = R.style.SquareBigCard;
+ } else if (card.getType() == Card.Type.GRID_SQUARE) {
+ style = R.style.GridCardStyle;
+ } else if (card.getType() == Card.Type.GAME) {
+ style = R.style.GameCardStyle;
+ }
+ presenter = new ImageCardViewPresenter(mContext, style);
+ break;
+ }
+ case SIDE_INFO:
+ presenter = new SideInfoCardPresenter(mContext);
+ break;
+ case TEXT:
+ presenter = new TextCardPresenter(mContext);
+ break;
+ case ICON:
+ presenter = new IconCardPresenter(mContext);
+ break;
+ case CHARACTER:
+ presenter = new CharacterCardPresenter(mContext);
+ break;
+ default:
+ presenter = new ImageCardViewPresenter(mContext);
+ break;
}
- break;
- case SQUARE_BIG: {
- int width = (int) mContext.getResources()
- .getDimension(R.dimen.big_square_image_card_width);
- int height = (int) mContext.getResources()
- .getDimension(R.dimen.big_square_image_card_height);
- presenter = new ImageCardViewPresenter(mContext, width, height);
- }
- break;
- case GRID_SQUARE: {
- int width = (int) mContext.getResources().getDimension(R.dimen.grid_card_width);
- int height = (int) mContext.getResources().getDimension(R.dimen.grid_card_height);
- presenter = new ImageCardViewPresenter(mContext, width, height);
- }
- break;
- case WIDE_SHORT: {
- presenter = new GameBannerCardPresenter(mContext);
- }
- break;
- default: {
- int width = (int) mContext.getResources()
- .getDimension(R.dimen.default_image_card_width);
- int height = (int) mContext.getResources()
- .getDimension(R.dimen.default_image_card_height);
- presenter = new ImageCardViewPresenter(mContext, width, height);
- }
- break;
}
presenters.put(card.getType(), presenter);
return presenter;
diff --git a/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/cards/presenters/CharacterCardPresenter.java b/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/cards/presenters/CharacterCardPresenter.java
index 5514674cb..60fa5b2aa 100644
--- a/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/cards/presenters/CharacterCardPresenter.java
+++ b/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/cards/presenters/CharacterCardPresenter.java
@@ -15,73 +15,26 @@
package android.support.v17.leanback.supportleanbackshowcase.cards.presenters;
import android.content.Context;
-import android.graphics.Bitmap;
-import android.graphics.BitmapFactory;
-import android.support.v17.leanback.supportleanbackshowcase.Constants;
-import android.support.v17.leanback.supportleanbackshowcase.R;
+import android.support.v17.leanback.supportleanbackshowcase.cards.CharacterCardView;
import android.support.v17.leanback.supportleanbackshowcase.cards.models.Card;
-import android.support.v17.leanback.supportleanbackshowcase.cards.views.BaseCardViewEx;
-import android.support.v4.graphics.drawable.RoundedBitmapDrawable;
-import android.support.v4.graphics.drawable.RoundedBitmapDrawableFactory;
-import android.util.Log;
-import android.util.SparseArray;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.widget.ImageView;
-import android.widget.TextView;
/**
* This Presenter is used to display the characters card row in the DetailView examples.
*/
-public class CharacterCardPresenter extends AbstractCardPresenter {
-
- private static final String TAG = "CharacterCardPresenter";
- private final SparseArray mImageCache = new SparseArray();
+public class CharacterCardPresenter extends AbstractCardPresenter {
public CharacterCardPresenter(Context context) {
super(context);
}
- @Override protected BaseCardViewEx onCreateView() {
- final BaseCardViewEx cardView = new BaseCardViewEx(getContext());
- LayoutInflater.from(getContext()).inflate(R.layout.character_card, cardView);
- cardView.setOnFocusChangeListener(new View.OnFocusChangeListener() {
- @Override public void onFocusChange(View v, boolean hasFocus) {
- if (Constants.LOCAL_LOGD) Log.d(TAG, "onFocusChanged(" + hasFocus + ")");
- ImageView mainImage = cardView.getViewById(R.id.main_image);
- View container = cardView.getViewById(R.id.container);
- if (hasFocus) {
- container.setBackgroundResource(R.drawable.character_focused);
- mainImage.setBackgroundResource(R.drawable.character_focused);
- } else {
- container.setBackgroundResource(R.drawable.character_not_focused_padding);
- mainImage.setBackgroundResource(R.drawable.character_not_focused);
- }
- }
- });
- return cardView;
+ @Override
+ protected CharacterCardView onCreateView() {
+ return new CharacterCardView(getContext());
}
- @Override public void onBindViewHolder(Card card, BaseCardViewEx cardView) {
- if (Constants.LOCAL_LOGD) Log.d(TAG, "onBindViewHolder");
- TextView primaryText = cardView.getViewById(R.id.primary_text);
- final ImageView imageView = cardView.getViewById(R.id.main_image);
-
- primaryText.setText(card.getTitle());
- if (card.getLocalImageResourceName() != null) {
- int resourceId = card.getLocalImageResourceId(getContext());
- RoundedBitmapDrawable drawable = mImageCache.get(resourceId, null);
- if (drawable == null) {
- Bitmap bitmap = BitmapFactory
- .decodeResource(getContext().getResources(), resourceId);
- drawable = RoundedBitmapDrawableFactory.create(getContext().getResources(), bitmap);
- drawable.setAntiAlias(true);
- drawable.setCornerRadius(Math.max(bitmap.getWidth(), bitmap.getHeight()) / 2.0f);
- mImageCache.put(resourceId, drawable);
- }
- imageView.setImageDrawable(drawable);
- if (Constants.LOCAL_LOGD) Log.d(TAG, "Round image created and set.");
- }
+ @Override
+ public void onBindViewHolder(Card card, CharacterCardView cardView) {
+ cardView.updateUi(card);
}
}
diff --git a/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/cards/presenters/GameBannerCardPresenter.java b/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/cards/presenters/GameBannerCardPresenter.java
deleted file mode 100644
index d6e3d0e26..000000000
--- a/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/cards/presenters/GameBannerCardPresenter.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
- * in compliance with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License
- * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
- * or implied. See the License for the specific language governing permissions and limitations under
- * the License.
- */
-
-package android.support.v17.leanback.supportleanbackshowcase.cards.presenters;
-
-import android.content.Context;
-import android.graphics.Color;
-import android.support.v17.leanback.supportleanbackshowcase.R;
-import android.support.v17.leanback.supportleanbackshowcase.cards.views.ImageCardViewReplacement;
-import android.widget.TextView;
-
-/**
- * This presenter will display the cards representing a gamer banners. It inherits from {@link
- * ImageCardViewPresenter} and will set a footer icon as well as a secondary text color.
- */
-public class GameBannerCardPresenter extends ImageCardViewPresenter {
-
- private static final String TAG = "GameBannerCardPresenter";
-
- public GameBannerCardPresenter(Context context) {
- super(context,
- (int) context.getResources().getDimension(R.dimen.wide_short_image_card_width),
- (int) context.getResources().getDimension(R.dimen.wide_short_image_card_height));
- }
-
- @Override protected ImageCardViewReplacement onCreateView() {
- ImageCardViewReplacement cardView = super.onCreateView();
- TextView secondaryText = cardView.getSecondaryTextView();
- secondaryText.setTextColor(Color.parseColor("#80c349"));
- return cardView;
- }
-
-}
diff --git a/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/cards/presenters/IconCardPresenter.java b/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/cards/presenters/IconCardPresenter.java
index 0154743db..bf5be70f4 100644
--- a/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/cards/presenters/IconCardPresenter.java
+++ b/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/cards/presenters/IconCardPresenter.java
@@ -16,51 +16,36 @@ package android.support.v17.leanback.supportleanbackshowcase.cards.presenters;
import android.content.Context;
import android.support.v17.leanback.supportleanbackshowcase.R;
-import android.support.v17.leanback.supportleanbackshowcase.cards.models.Card;
-import android.support.v17.leanback.supportleanbackshowcase.cards.views.BaseCardViewEx;
-import android.view.LayoutInflater;
+import android.support.v17.leanback.widget.ImageCardView;
import android.view.View;
import android.widget.ImageView;
-import android.widget.TextView;
-
-import com.squareup.picasso.Picasso;
/**
* This Presenter will display cards which consists of a single icon which will be highlighted by a
* surrounding circle when the card is focused. AndroidTV uses these cards for entering settings
* menu.
*/
-public class IconCardPresenter extends AbstractCardPresenter {
-
- private static final String TAG = "IconCardPresenter";
+public class IconCardPresenter extends ImageCardViewPresenter {
public IconCardPresenter(Context context) {
- super(context);
+ super(context, R.style.IconCardStyle);
}
- @Override protected BaseCardViewEx onCreateView() {
- final BaseCardViewEx cardView = new BaseCardViewEx(getContext());
- LayoutInflater.from(getContext()).inflate(R.layout.icon_card, cardView);
- LayoutInflater.from(getContext()).inflate(R.layout.icon_card_footer, cardView);
- cardView.setOnFocusChangeListener(new View.OnFocusChangeListener() {
- @Override public void onFocusChange(View v, boolean hasFocus) {
- if (hasFocus) cardView.getViewById(R.id.container)
- .setBackgroundResource(R.drawable.icon_focused);
- else cardView.getViewById(R.id.container).setBackground(null);
+ @Override
+ protected ImageCardView onCreateView() {
+ final ImageCardView imageCardView = super.onCreateView();
+ final ImageView image = imageCardView.getMainImageView();
+ imageCardView.setOnFocusChangeListener(new View.OnFocusChangeListener() {
+ @Override
+ public void onFocusChange(View v, boolean hasFocus) {
+ if (hasFocus) {
+ image.setBackgroundResource(R.drawable.icon_focused);
+ } else {
+ image.setBackground(null);
+ }
}
});
- return cardView;
- }
-
- @Override public void onBindViewHolder(Card card, BaseCardViewEx cardView) {
- TextView primaryText = cardView.getViewById(R.id.primary_text);
- ImageView imageView = cardView.getViewById(R.id.main_image);
-
- primaryText.setText(card.getTitle());
- if (card.getLocalImageResourceName() != null) {
- int resourceId = card.getLocalImageResourceId(getContext());
- Picasso.with(getContext()).load(resourceId).into(imageView);
- }
+ return imageCardView;
}
}
diff --git a/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/cards/presenters/ImageCardViewPresenter.java b/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/cards/presenters/ImageCardViewPresenter.java
index f467dad70..bf03753e8 100644
--- a/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/cards/presenters/ImageCardViewPresenter.java
+++ b/samples/SupportLeanbackShowcase/app/src/main/java/android/support/v17/leanback/supportleanbackshowcase/cards/presenters/ImageCardViewPresenter.java
@@ -15,127 +15,45 @@
package android.support.v17.leanback.supportleanbackshowcase.cards.presenters;
import android.content.Context;
-import android.graphics.drawable.ColorDrawable;
-import android.graphics.drawable.Drawable;
-import android.support.v17.leanback.supportleanbackshowcase.Constants;
import android.support.v17.leanback.supportleanbackshowcase.R;
-import android.support.v17.leanback.supportleanbackshowcase.Utils;
import android.support.v17.leanback.supportleanbackshowcase.cards.models.Card;
-import android.support.v17.leanback.supportleanbackshowcase.cards.views.ImageCardViewReplacement;
-import android.util.Log;
-import android.view.View;
-
-import com.squareup.picasso.Picasso;
-
-import java.util.HashMap;
+import android.support.v17.leanback.widget.ImageCardView;
/**
- * A ImageCardViewPresenter is used to generate Views and bind Objects to them on demand. It
- * contains an {@link ImageCardViewReplacement}.
+ * A very basic {@link ImageCardView} {@link android.support.v17.leanback.widget.Presenter}.You can
+ * pass a custom style for the ImageCardView in the constructor. Use the default constructor to
+ * create a Presenter with a default ImageCardView style.
*/
-public class ImageCardViewPresenter extends AbstractCardPresenter {
+public class ImageCardViewPresenter extends AbstractCardPresenter {
- private static final String TAG = "ImageCardViewPresenter";
- private final int mImageWidthInDp;
- private final int mImageHeightDp;
- private final Drawable mLoadingErrorDrawable;
- private final HashMap