Pinterest喜欢自定义GridView

时间:2012-03-13 06:08:05

标签: android

我是Android新手,我正在寻找网格视图的逻辑,例如针对i-phone构建的pinterest(主屏幕)应用程序。一个大的没有。图像来自服务器,我需要以下面的形式显示分页效果,即在滚动上加载图像。

image is here

如果可能的话,请回复。我将非常感激。

4 个答案:

答案 0 :(得分:3)

如果你想在滚动上执行图像加载,那么它将类似于List View。首先从WS URL保存所有数据然后按需加载现在

Commonsware Endless Adapter对于Listview,您也可以将它与GridView集成

EndLessAdapter

另一种方法是将网格视图放在ViewFlipper中,然后用动画翻转。

使用setInAnimation()和setOutAnimation()设置动画并使用showNext()和showPrevious()

翻转页面

答案 1 :(得分:3)

创建布局,如下所示

<ScrollView...>
<LinearLayout....
   android:id="@+id/linear1"
   orientation="horizontal">

   <LinearLayout....
     android:id="@+id/linear2"
     android:layout_weight="0.33"
     orientation="vertical">

   <LinearLayout....
     android:id="@+id/linear3"
     android:layout_weight="0.33"
     orientation="vertical">

   <LinearLayout....
     android:layout_weight="0.33"
     orientation="vertical">

</LinearLayout>
</ScrollView>

现在在布局中动态添加ImageView

linear1 = (LinearLayout) findViewById(R.id.linear1);
linear2 = (LinearLayout) findViewById(R.id.linear2);
linear3 = (LinearLayout) findViewById(R.id.linear3);

for(int i=0;i<n;i++)
{
   ImageView iv = new ImageView(this);
   iv.setImageResource(R.id.icon);

   int j = count % 3;  <---- 
   if(j==0)
       linear1.addView(iv);
   else if(j==1)
       linear2.addView(iv);
   else
       linear3.addView(iv); 
}

答案 2 :(得分:0)

检查:Staggered GridView

StaggeredGridView允许用户使用类似于Pinterest外观的不均匀行创建GridView。包括自己的OnItemClickListener和OnItemLongClickListener,选择器和固定位置恢复。

答案 3 :(得分:0)

这是一个老问题,但对于那些有类似问题的人:

完成此布局样式的最简单方法是使用带有StaggeredGridLayoutManager的RecyclerView,如下所示:

 protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.my_activity);

    View recyclerView = findViewById(R.id.recycle_view);
    assert recyclerView != null;
    StaggeredGridLayoutManager gaggeredGridLayoutManager = new      
    StaggeredGridLayoutManager(2, 1);
        recyclerView.setLayoutManager(gaggeredGridLayoutManager);
}

对于问题的其他部分(pagging),最好以块的形式接收图像(例如每个请求50个图像),当用户向下滚动(到最后)时加载更多。