gpt4 book ai didi

android - 带有文字说明的无限滚动画廊 View

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:07:18 24 4
gpt4 key购买 nike

我有基于这个例子的无限画廊:

http://blog.blundell-apps.com/infinite-scrolling-gallery/ ,

它运行良好,现在我想让图库仍然滚动浏览图像并且在每张图像下应该有一个文本标题

我在网上搜索没有结果,你能帮我编码吗,刚开始开发。

============================================= ===================================

新更新:

上传照片说明我到底需要什么,我用普通画廊得到它(将文本应用到每个图像,也能够自定义文本,如下图所示,并且每个图像的文本都比其他图像不同,但仍然没有成功用无限画廊来做:

enter image description here

请提供任何帮助和建议。

非常感谢。

最佳答案

我学习了 Blundell 的教程,多亏了他,我知道了如何制作一个 Infinitelyscrolling 画廊 :)

为了回答这个问题,关于如何在每张图片下方添加文字标题,我对 Blundell 的 nice tut 做了同样的小改动,并在上面的答案中使用了他的一些建议,我认为我找到了完成任务的好方法。

下面的代码根本不膨胀或使用 gallery_item.xml,因此与每次膨胀它的方式相比,它会显着提高性能。

删减了 Blundell 教程中的类代码(因为在问题中,您只使用资源而不使用 sdcard)。

public class InfiniteScrollingGalleryActivity extends Activity {

public class GalleryItem{
int imageId;
String caption;
public int getImageId() {
return imageId; }

public String getCaption() {
return caption;
}
public GalleryItem(int i,String s) {
imageId=i;
caption=s; }
}

int[] resourceImages = {R.drawable.ic_launcher,R.drawable.ic_launcher,R.drawable.ic_launcher,
R.drawable.ic_launcher,R.drawable.ic_launcher,R.drawable.ic_launcher};

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
GalleryItem[] item = new GalleryItem[6];
//initialising all items, change member variables according to needs
for(int i=0;i<6;i++){
item[i] = new GalleryItem(resourceImages[i], "pic no" +(i+1)); }
setContentView(R.layout.activity_main);
InfiniteGallery galleryOne = (InfiniteGallery) findViewById(R.id.galleryOne);
galleryOne.setResourceGallery(item);
} }

这里我添加了 GalleryItem 类数组并传递了它。

还在 InfiniteGalley 类中添加了以下代码。

public void setResourceGallery(GalleryItem[] item) {
setAdapter(new InfiniteGalleryResourceAdapter(getContext(), item));
setSelection((getCount() / 2));
}

下面代码的 getView() 是好的事情发生的地方:

 public class InfiniteGalleryResourceAdapter extends BaseAdapter {

/** The context your gallery is running in (usually the activity) */
private Context mContext;
GalleryItem[] myItems;

public InfiniteGalleryResourceAdapter(Context context, GalleryItem[] item) {
this.mContext = context;
myItems=item;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// convertView is always null in android.widget.Gallery
TextView t = new TextView(mContext);
try {
int itemPos = (position % myItems.length);
t.setText(myItems[itemPos].getCaption());
Drawable d = mContext.getResources().getDrawable(myItems[itemPos].getImageId());
((BitmapDrawable) d).setAntiAlias(true); // Make sure we set anti-aliasing otherwise we get jaggies (non-smooth lines)

//d.setBounds(0,0,60,60); //use this to change dimens of drawable,if needed
t.setCompoundDrawablesWithIntrinsicBounds(null, d, null, null);

} catch (OutOfMemoryError e) {
// a 'just in case' scenario
Log.e("InfiniteGalleryResourceAdapter", "Out of memory creating imageview. Using empty view.", e);
}

return t;
}

@Override
public int getCount() {
return Integer.MAX_VALUE;
}

@Override
public Object getItem(int position) {
return position;
}

@Override
public long getItemId(int position) {
return position;
}
/** The width of each child image */
private static final int G_ITEM_WIDTH = 120;
/** The height of each child image */
private static final int G_ITEM_HEIGHT = 80;
private int imageWidth;
private int imageHeight;
}

getView() 中,我只是创建一个 textView 并使用方便的 t.setCompoundDrawablesWithIntrinsicBounds(null, d, null, null); 将 drawable 分配给它; .所以它排除了膨胀布局的需要,这是一项繁重的操作。

下面是输出图片:

enter image description here

关于android - 带有文字说明的无限滚动画廊 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9801995/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com