2011-09-28 50 views
0

所以,我一直在做一个项目的XML布局,涉及到在屏幕上获得一个水平滚动的图像行,并且只使用horizo​​ntalscrollview。和一堆imagebuttons。我使用include将其放在另一个xml布局页面上,另一位程序员将动态填充图像。关于Android画廊控制的一般问题

我的问题是,画廊控制如何使我们受益?我没有做太多的Java编程,我已经看到了一些关于如何实现这个控件的指令,但是为什么你不使用这个。它看起来像这个控件主要通过Java插入通过数组,但除此之外,我不知道从我的方式创建布局,让这个其他程序员手动插入他自己的图像的好处。

另一个相关的问题 - 做一个画廊的这些图像需要我的图像,或者他们可以imagemaps?目前他们是imagemaps,因为我们希望他们能够成为用户的个人资料等。

谢谢!

回答

2

画廊几乎完美。在我的项目之一,我确实有一个画廊在它的LinearLayout:

<Gallery 
android:id="@+id/gallery" 
android:layout_height="0dip" 
android:layout_weight="1" 
android:layout_width="fill_parent" 
android:spacing="2dip" />  

的活动实现OnItemClickListener:

public class MyActivity extends Activity implements OnItemClickListener { 

的数据结构中包含的所有项目,并发送到适配器:

private void processGallery() { 
adapter = new MyAdapter(this, containers, appName); 
if (adapter != null) { 
    gallery.setAdapter(adapter); 
} 
} 

@Override 
public void onItemClick(final AdapterView<?> adapterView, final View view, final int position, final long id) { 
if (containers != null) { 
    container = containers.get(position); 
    if (container != null) { 
    // Handle selected image 
    } 
} 
} 

适配器是通常BaseAdapter - 没有什么魔法:

public class MyAdapter extends BaseAdapter { 

    private ArrayList<Container> containers; 
    private Context    context; 

    public int getCount() { 
     return containers.size(); 
    } 

    public Object getItem(final int position) { 
     return containers.get(position); 
    } 

    public long getItemId(final int position) { 
     return position; 
    } 

    public View getView(final int position, final View contentView, final ViewGroup viewGroup) { 
     ImageView imageView = new ImageView(context); 
     Container container = containers.get(position); 
     if (container != null) { 
      // Do your image thing here 
     } 

     return imageView; 
    } 

    public MyAdapter(final Context context, final ArrayList<Container> containers, final String appName) { 
     this.context = context; 
     this.containers = containers; 
    } 
} 

这个简单的代码给出了一个带有可点击项目的水平滚动图库。点击被发送到活动 - 无需在适配器中做一些特殊的事情。我从这里显示的代码中删除了我使用的DrawableCache,因为我的项目确实来自网络。

+0

你能给一个完整的源代码版本吗? – Jaseem

+0

您需要的所有内容都显示在上面的代码中。你有什么具体的部分不清楚? –

+0

我只是想知道如果一个API可以比Android更混乱。你需要50多行代码和10个图像库导入吗? Android API在某处出现错误。难怪它来自谷歌,在dart lang的背后,你需要15K +的线路才能成为Hello World。这整件事对我来说似乎没有好处。 – Jaseem