我已经有可能拿到一副Google眼镜了。现在我正在尝试使用GDK构建一个简单的应用程序,它执行以下操作:
什么行不通,我试图弄清楚今天是否可能显示结果点击我从互联网上加载的图像。好像现在无法完成?
是否有可能在每张静态卡上添加菜单?有可能例如导航到结果中的位置。
从我所看到的,可以从Mirror API加载图像,但这是推送到Google眼镜的数据吗?或者我可以从GDK内部向Mirror API请求数据吗?
提前感谢您的帮助。
我希望加载图片的代码:
for (int i = 0; i < 10; i++) {
JSONObject advert = adverts.getJSONObject(i);
JSONObject address = advert.getJSONObject("address");
JSONObject companyInfo = advert.getJSONObject("companyInfo");
JSONObject coordinates =
advert.getJSONObject("location").getJSONArray("coordinates").getJSONObject(0);
String companyName = companyInfo.getString("companyName");
String road = address.getString("streetName");
Card card;
card = new Card(activity);
// Here I would like to have images from internet.
card.setText(i+1+". "+companyName);
card.setFootnote("Test");
mCards.add(card);
}
答案 0 :(得分:1)
您可以使用xml复制卡片ui,然后使用LazyList异步加载它们。我试过了,效果很好!
我正在使用的xml如下。它可能会改进,但它的工作原理。您可能还需要为页脚添加TextView,因为我没有使用它。您可以在https://mirror-api-playground.appspot.com/assets/css/base_style.css找到所有内容的指标,或者使用firebug或类似的https://developers.google.com/glass/tools-downloads/playground
检查游乐场<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<LinearLayout
android:id="@+id/llImages"
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="360px"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:visibility="gone">
<ImageView
android:id="@+id/ivImage1"
android:layout_width="240px"
android:layout_height="0dp"
android:layout_weight="1"
android:adjustViewBounds="true"
android:scaleType="centerCrop"
android:visibility="gone"/>
<LinearLayout
android:id="@+id/llSecondaryImages"
android:orientation="horizontal"
android:layout_width="240px"
android:layout_height="0dp"
android:layout_weight="1"
android:visibility="gone">
<ImageView
android:id="@+id/ivImage2"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:adjustViewBounds="true"
android:scaleType="centerCrop"
android:visibility="gone"/>
<ImageView
android:id="@+id/ivImage3"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:adjustViewBounds="true"
android:scaleType="centerCrop"
android:visibility="gone"/>
</LinearLayout>
</LinearLayout>
<TextView
android:id="@+id/tvMainText"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:textSize="34sp"
android:layout_toRightOf="@+id/llImages"
android:layout_alignParentTop="true"
android:layout_alignParentRight="true"
android:layout_alignWithParentIfMissing="true"
android:layout_marginRight="40px"
android:layout_marginTop="10px"
android:layout_marginBottom="40px"
android:layout_marginLeft="30px"
android:maxLines="5"
android:singleLine="false"
android:ellipsize="end"/>
</RelativeLayout>
唯一的区别是主文本不会根据其长度调整大小。我已尝试使用3个不同的库,但它们没有按预期工作,但如果您愿意,可以随意改进。您还会注意到主文本margin-top设置为10px而不是40px作为playground css。那是因为我在佩戴Glass时看到了一些额外的余量。
从适配器使用它如下所示。我知道它可以改进,但它只是让你知道如何做到这一点;)
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
View rowView = convertView;
if(rowView == null)
{
LayoutInflater inflater = context.getLayoutInflater();
rowView = inflater.inflate(R.layout.custom_card, null);
CustomRowViewHolder viewHolder = new CustomRowViewHolder();
viewHolder.tvMainText = (TextView) rowView.findViewById(R.id.tvMainText);
viewHolder.ivImage1 = (ImageView) rowView.findViewById(R.id.ivImage1);
viewHolder.ivImage2 = (ImageView) rowView.findViewById(R.id.ivImage2);
viewHolder.ivImage3 = (ImageView) rowView.findViewById(R.id.ivImage3);
viewHolder.llImages = (LinearLayout) rowView.findViewById(R.id.llImages);
viewHolder.llSecondaryImages = (LinearLayout) rowView.findViewById(R.id.llSecondaryImages);
rowView.setTag(viewHolder);
}
CustomClass cc = values.get(position);
CustomRowViewHolder holder = (CustomRowViewHolder) rowView.getTag();
holder.tvMainText.setText(cc.getDescription());
if(!cc.getFiveLastPhotos().isEmpty())
{
holder.llImages.setVisibility(ImageView.VISIBLE);
holder.ivImage1.setVisibility(ImageView.VISIBLE);
ImageLoader.getInstance(context.getApplicationContext()).DisplayImage(cc.getFiveLastPhotos().get(0).getSrcPhoto(), holder.ivImage1, null, ImageLoader.NO_ANIMATION);
if(cc.getFiveLastPhotos().size()>1)
{
holder.llSecondaryImages.setVisibility(ImageView.VISIBLE);
holder.ivImage2.setVisibility(ImageView.VISIBLE);
ImageLoader.getInstance(context.getApplicationContext()).DisplayImage(cc.getFiveLastPhotos().get(1).getSrcPhoto(), holder.ivImage2, null, ImageLoader.NO_ANIMATION);
if(cc.getFiveLastPhotos().size()>2)
{
holder.ivImage3.setVisibility(ImageView.VISIBLE);
ImageLoader.getInstance(context.getApplicationContext()).DisplayImage(cc.getFiveLastPhotos().get(2).getSrcPhoto(), holder.ivImage3, null, ImageLoader.NO_ANIMATION);
}
else
{
holder.ivImage3.setVisibility(ImageView.GONE);
}
}
else
{
holder.ivImage2.setVisibility(ImageView.GONE);
holder.ivImage3.setVisibility(ImageView.GONE);
holder.llSecondaryImages.setVisibility(ImageView.GONE);
}
}
else
{
holder.llImages.setVisibility(ImageView.GONE);
holder.ivImage1.setVisibility(ImageView.GONE);
holder.ivImage2.setVisibility(ImageView.GONE);
holder.ivImage3.setVisibility(ImageView.GONE);
holder.llSecondaryImages.setVisibility(ImageView.GONE);
}
return rowView;
}
我希望它对您有所帮助,并且请发布您可能有的任何建议