这可能与潜行峰值有关吗?

时间:2014-03-03 20:36:37

标签: android google-glass google-gdk

我已经有可能拿到一副Google眼镜了。现在我正在尝试使用GDK构建一个简单的应用程序,它执行以下操作:

  • 通过语音命令启动应用程序(WORKS)
  • 在API中搜索问题(WORKS)
  • 在静态卡片(WORKS)中显示结果
  • 从网上加载图片(不要工作)

什么行不通,我试图弄清楚今天是否可能显示结果点击我从互联网上加载的图像。好像现在无法完成?

是否有可能在每张静态卡上添加菜单?有可能例如导航到结果中的位置。

从我所看到的,可以从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);

}

1 个答案:

答案 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;
}

我希望它对您有所帮助,并且请发布您可能有的任何建议