当前位置:首页 > 代码 > 正文

android瀑布流布局代码(css瀑布流布局代码)

admin 发布:2022-12-19 19:05 138


本篇文章给大家谈谈android瀑布流布局代码,以及css瀑布流布局代码对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

Android Studio也可在Activity中编写布局代码,这些代码放在哪个位置?

功能

可以让你在Activity/Fragment中自动生成findViewById等布局相关初始化代码

或者在Adapter中自动生成ViewHolder代码

安装

方式一. 下载项目中的jar包,通过本地disk方式导入

方式二. 在Android Studio的插件中心搜索LayoutCreator下载安装

用法

新建好Activity后自行编写onCreate并setContentView设置对应布局

选中layout布局,快捷键alt+Insert,然后选择LayoutCreator或者选中布局后在菜单栏中的Code中选择LayoutCreator

插件会自动遍历布局列出所有带id的控件,你可以在弹出的对话框中选择需要自动生成的控件

弹出的对话框中还可以勾选是否生成ViewHolder

选择好后Confirm确认即可

android listview 每行中 有两列。 第二列有两行的效果是怎么做的? 下图给图~

可以用“瀑布流”实现。

github上有很多:;q=android+waterfalltype=Repositoriesref=searchresults

用css3的 clomus 布局 怎么写瀑布流

首先,css3的布局主要用到下面三个属性

column-count

column-gap

column-rule

其次,在兼容column的浏览器中可以实现瀑布流,代码如下

.demo{

    width: 500px;

    height: auto;

    -webkit-column-count:3;

    -moz-column-count:3;

    column-count:3;

    -webkit-column-gap:10px;

    -moz-column-gap:10px;

    column-gap:10px;

    column-rule:3px outset #ff0000;

    border: 1px solid #ddd;

}

.demo div{

    background: #336699;

    margin-bottom: 4px;

    color: #eee;

    padding: 10px;

}

div class="demo"

        div1这是测试用的文字,测试能不能实现瀑布流。/div

        div2这是测试用的文字,测试能不能实现瀑布流。/div

        div3这是测试用的文字,测试能不能实现瀑布流。/div

        div4这是测试用的文字,测试能不能实现瀑布流。/div

        div5这是测试用的文字,测试能不能实现瀑布流。/div

        div6这是测试用的文字,测试能不能实现瀑布流。/div

        div7这是测试用的文字,测试能不能实现瀑布流。/div

        div8这是测试用的文字,测试能不能实现瀑布流。/div

        div9这是测试用的文字,测试能不能实现瀑布流。/div

        div11这是测试用的文字,测试能不能实现瀑布流。/div

        div12这是测试用的文字,测试能不能实现瀑布流。/div

        div13这是测试用的文字,测试能不能实现瀑布流。/div

        div14这是测试用的文字,测试能不能实现瀑布流。/div

        div15这是测试用的文字,测试能不能实现瀑布流。/div

        div16这是测试用的文字,测试能不能实现瀑布流。/div

        div17这是测试用的文字,测试能不能实现瀑布流。/div

        div18这是测试用的文字,测试能不能实现瀑布流。/div

        div19这是测试用的文字,测试能不能实现瀑布流。/div

    /div

/div

android瀑布流怎么显示

今天介绍一个瀑布流控件:PinterestLikeAdapterVie

使用方法类似于ListView,下面是我使用该控件实现一个显示系统图片的简单应用:

xml中:

android:layout_width="match_parent"

android:layout_height="match_parent"

android:background="#000000"

com.huewu.pla.lib.multicolumnlistview p=""

xmlns:pla=""

android:background="#000000"

android:id="@+id/list"

android:layout_width="match_parent"

android:layout_height="match_parent"

pla:plaColumnNumber="3"

pla:plaLandscapeColumnNumber="3"

plaColumnNumber表示显示多少列,plaLandscapeColumnNumber表示横屏下显示多少列。

但与StaggeredGridView 不同的是他没有提供设置item之间间隙大小的属性,这个可以通过在item的xml中设置一个padding来解决。

Android控件RecyclerView和ListView的异同

Android是一个不断进化的平台,Android

5.0的v7版本支持包中引入了新的RecyclerView控件,正如官方文档所言,RecyclerView是ListView的豪华增强版。它主要

包含以下几处新的特性,如ViewHolder,ItemDecorator,LayoutManager,SmothScroller以及增加或删除

item时item动画等。官方推荐我们采用RecyclerView来取代ListView。

ViewHolder

ViewHolder是用来保存视图引用的类,无论是ListView亦或是RecyclerView。只不过在ListView

中,ViewHolder需要自己来定义,且这只是一种推荐的使用方式,不使用当然也可以,这不是必须的。只不过不使用ViewHolder的

话,ListView每次getView的时候都会调用findViewById(int),这将导致ListView性能展示迟缓。而在

RecyclerView中使用 RecyclerView.ViewHolder 则变成了必须,尽管实现起来稍显复杂,但它却解决了ListView面临的上述不使用自定义ViewHolder时所面临的问题。 RecyclerView.ViewHolder 被BaseAdapter使用,以将posiiton绑定到上面(可以通过API查看 RecyclerView.ViewHolder#getPosition() 方法)。

LayoutManager

我们知道ListView只能在垂直方向上滚动,Android

API没有提供ListView在水平方向上面滚动的支持。或许有多种方式实现水平滑动,但是请想念我,ListView并不是设计来做这件事情的。但是

RecyclerView相较于ListView,在滚动上面的功能扩展了许多。它可以支持多种类型列表的展示要求,主要如下:

LinearLayoutManager ,可以支持水平和竖直方向上滚动的列表。

StaggeredGridLayoutManager ,可以支持交叉网格风格的列表,类似于瀑布流或者Pinterest。

GridLayoutManager ,支持网格展示,可以水平或者竖直滚动,如展示图片的画廊。

ItemAnimator

列表动画是一个全新的、拥有无限可能的维度。起初的Android API中,删除或添加item时,item是无法产生动画效果的。后面随着Android的进化,Google的Chat Hasse推荐使用 ViewPropertyAnimator 属性动画来实现上述需求。

相比较于ListView, RecyclerView.ItemAnimator 则被提供用于在RecyclerView添加、删除或移动item时处理动画效果。同时,如果你比较懒,不想自定义ItemAnimator,你还可以使用 DefaultItemAnimator 。

Adapter

ListView的Adapter中,getView是最重要的方法,它将视图跟position绑定起来,是所有神奇的事情发生的地方。同时我们也能够

通过registerDataObserver在Adapter中注册一个观察者。RecyclerView也有这个特性, RecyclerView.AdapterDataObserver

就是这个观察者。ListView有三个Adapter的默认实现,分别是ArrayAdapter、CursorAdapter和

SimpleCursorAdapter。然而,RecyclerView的Adapter则拥有除了内置的内DB游标和ArrayList的支持之外的

所有功能。 RecyclerView.Adapter 的实现的,我们必须采取措施将数据提供给Adapter,正如BaseAdapter对ListView所做的那样。

ItemDecoration

在ListView中如果我们想要在item之间添加间隔符,我们只需要在布局文件中对ListView添加如下属性即可:

1 android:divider="@android:color/transparent"

2 android:dividerHeight="5dp"

View Code

有趣的是,RecyclerView在默认情况下并不在item之间展示间隔符。尽管Google的家伙有意地将这个问题遗留给我们去自定义间隔符,但这

的确增加了开发人员的负担。如果你想要添加间隔符,你必须使用RecyclerView.ItemDecoration类来实现。或者,你可以应用官方示

例中的 DividerItemDecoration.java 文件。

OnItemTouchListener

ListView通过AdapterView.OnItemClickListener接口来探测点击事件。而RecyclerView则通过

RecyclerView.OnItemTouchListener接口来探测触摸事件。它虽然增加了实现的难度,但是却给予开发人员拦截触摸事件更多的

控制权限。

Others

ListView可以设置选择模式,并添加MultiChoiceModeListener,如下所示:

1 listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);

2 listView.setMultiChoiceModeListener(new MultiChoiceModeListener() {

3 public boolean onCreateActionMode(ActionMode mode, Menu menu) { ... }

4 public void onItemCheckedStateChanged(ActionMode mode, int position,

5 long id, boolean checked) { ... }

6 public boolean onActionItemClicked(ActionMode mode, MenuItem item) {

7 switch (item.getItemId()) {

8 case R.id.menu_item_delete_crime:

9 CrimeAdapter adapter = (CrimeAdapter)getListAdapter();

10 CrimeLab crimeLab = CrimeLab.get(getActivity());

11 for (int i = adapter.getCount() - 1; i = 0; i--) {

12 if (getListView().isItemChecked(i)) {

13 crimeLab.deleteCrime(adapter.getItem(i));

14 }

15 }

16 mode.finish();

17 adapter.notifyDataSetChanged();

18 return true;

19 default:

20 return false;

21 }

22 public boolean onPrepareActionMode(ActionMode mode, Menu menu) { ... }

23 public void onDestroyActionMode(ActionMode mode) { ... }

24 });

View Code

而RecyclerView则没有此功能。

总之,通过比较我们可以发现,RecyclerView充满了大量的自定义功能,它可以用于实现复杂的列表或网格,但实现起来稍显得复杂。

RecyclerView

RecyclerView 是Android一个更强大的控件,其不仅可以实现和ListView同样的效果,还有优化了ListView中的各种不足。其可以实现数据纵向滚动,也可以实现横向滚动(ListView做不到横向滚动)。接下来讲解RecyclerView的用法。

因为 RecyclerView 属于新增的控件,Android将RecyclerView定义在support库里。若要使用RecyclerView,第一步是要在 build.gradle 中添加对应的依赖库。

在 app/build.gradle 中的 dependencies闭包 添加以下内容:

然后点击顶部的Sync Now进行同步

由于 RecyclerView 不是内置在系统SDK中,需要把其完整的包名路径写出来

创建ImageView来显示水果图片,TextView来显示水果名字。

为 RecyclerView 新增适配器 FruitAdapter ,并让其继承于 RecyclerView.Adapter ,把泛型指定为 FruitAdapter.ViewHolder 。

LayoutManager 用于指定RecyclerView的布局方式。 LinearLayoutManager 指的是线性布局。

运行效果:

把LinearLayout改成垂直排列,因为水果名字长度不一样,把宽度改为100dp。

ImageView和TextView都改为水平居中

通过调用 setOrientation() 把布局的排列方向改为水平排列。

得益于RecyclerView的设计,我们可以通过LayoutManager实现各种不同的排列方式的布局。

运行结果:

除了 LinearLayoutManager , RecyclerView 还提供了 GridLayoutManager(网格布局) 和 StaggeredGridLayoutManager(瀑布流布局)

GridLayoutManager(网格布局)

修改 MainActivity.java ,把

换成

GridLayoutManager (Context context, int spanCount)

运行结果:

StaggeredGridLayoutManager(瀑布流布局)

把LinearLayout的宽度设为 match_parent 是因为瀑布流的宽度是 根据布局的列数来自动适配的,而不是固定值 。(GridLayoutManager也是 根据布局的列数来自动适配的 )

StaggeredGridLayoutManager layoutManager = new StaggeredGridLayoutManager(3,StaggeredGridLayoutManager.VERTICAL);

StaggeredGridLayoutManager传入2个参数,第一个是布局的列数,第二个是布局的排列方向。

random.nextInt(20)+1 产生1-20的随机数

运行效果:

上图是GridLayoutManager,下图是StaggeredGridLayout。

当从显示效果来看,已经一目了然。

GridLayoutManager是会固定高度的,所以会留下很多空白区域。

相反,StaggeredGridLayout并不会固定高度,以至于就算子项的高度不一致,下一行的会自动靠拢上一行。

修改ViewHolder,添加fruitView变量来保存子项最外层布局的实例。

运行效果:

关于android瀑布流布局代码和css瀑布流布局代码的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

版权说明:如非注明,本站文章均为 AH站长 原创,转载请注明出处和附带本文链接;

本文地址:http://ahzz.com.cn/post/19324.html


取消回复欢迎 发表评论:

分享到

温馨提示

下载成功了么?或者链接失效了?

联系我们反馈

立即下载