recyclerview

Android初学第20天

北慕城南 提交于 2020-03-20 07:40:41
Android初学第20天 09_LayoutsAndWidgets 代码 CrimeListFragment.java package com.bignerdranch.android.criminalintent; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; import java.util.List; public class CrimeListFragment extends Fragment { private RecyclerView mCrimeRecyclerView; private CrimeAdapter

RecyclerView中的LayoutManager

╄→尐↘猪︶ㄣ 提交于 2020-03-16 18:04:35
LinearLayoutManager 可以实现垂直或水平的线性布局 默认的垂直方向的线性布局 LinearLayoutManager layoutManager = new LinearLayoutManager ( this ) ; recyclerView . setLayoutManager ( layoutManager ) ; 水平方向的现行布局 // 第三个参数用于指定是否从右到左布局,基本都是false LinearLayoutManager layoutManager = new LinearLayoutManager ( this , LinearLayoutManager . HORIZONTAL , false ) ; recyclerView . setLayoutManager ( layoutManager ) ; GridLayoutManager 网格样式的布局,GridLayoutManager继承自LinearLayoutManager int spanCount = 3 ; // 指定每行/列内的item个数 GridLayoutManager layoutManager = new GridLayoutManager ( this , spanCount ) ; recyclerView . setLayoutManager (

Material Design & Android 5

ⅰ亾dé卋堺 提交于 2020-03-14 12:17:31
最近研究了一下Material Design和Android 5的新特性,这里做下总结归纳。 Material Design 在我认为就是类似于卡片一样的设计,当然并不只是卡片,material design可以把一个布局或者控件当做实际生活中得一个卡片来对待。 那么具有以下几个方面的属性(具体参照 http://www.google.com/design/spec/material-design/introduction.html 上面某些效果看起来还是挺炫的): 物理属性——卡片是三维的,在z坐标上只有1dp厚;具有投影,不同高度的投影效果不一样;任何颜色、形状和内容都可以在material上显示且不增加厚度;卡片之间不能相互重叠,相互穿过,阻塞点击触摸事件。 变换属性——可以改变形状、合并、拆分然后合并,但不可以弯曲和折叠。 运动属性——可以自然的被创建或者销毁,可以任意移动,用户与material的交互一般通过z轴变化和波纹动画展示 同时material design定义了许多了规范,是经过google产品设计工程师用心总结起来,总体看起来体验蛮炫。具体效果可以参照chrome的新书签,感觉比以前高大上许多。在手机设备上也定义了一些规范,这里只总结个人较为关注和在手机上比较好实现的一些规范。   布局: layout一般内容距离边界边距为16dp    可触摸控件

RecycleView 上拉刷新,到底部自动加载

筅森魡賤 提交于 2020-03-13 09:07:28
Recycle请求到数据后(还没有请求数据的话看上一篇); 首先是下拉: <android.support.v4.widget.SwipeRefreshLayout android:id="@+id/swiperefreshlayout" android:layout_width="match_parent" android:layout_below="@id/title2" android:layout_height="wrap_content"> <android.support.v7.widget.RecyclerView android:id="@+id/id_recyclerview" android:divider="#ffff0000" android:dividerHeight="10dp" android:layout_width="match_parent" android:layout_height="match_parent" /> </android.support.v4.widget.SwipeRefreshLayout> 这是下拉的样式 然后是下拉的方法 mSwipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { @Override

仿抖音上下滑动播放视频

怎甘沉沦 提交于 2020-03-10 22:14:17
不少朋友对短视频,上下滑动播放视频效果比较比较感兴趣,今天看看这个案例。 1、效果图: 讲下大概思路,使用Recycleview配合自定义LinearLayoutManager来实现这个功能,这里着重说下自定义LinearLayoutManager的实现可以看到每当下一个item滑入屏幕时,上面的item会继续播放视频,而滑入的item只有当全部进入屏幕才会播放,而且当手指抬起时,当前item会根据滑动的距离相应的自动滑入滑出,针对这种情形,就会想到使用SnapHelper RecyclerView在24.2.0版本中新增了SnapHelper这个辅助类,用于辅助RecyclerView在滚动结束时将Item对齐到某个位置。特别是列表横向滑动时,很多时候不会让列表滑到任意位置,而是会有一定的规则限制,这时候就可以通过SnapHelper来定义对齐规则了。 SnapHelper是一个抽象类,官方提供了一个LinearSnapHelper的子类,可以让RecyclerView滚动停止时相应的Item停留中间位置。25.1.0版本中官方又提供了一个PagerSnapHelper的子类,可以使RecyclerView像ViewPager一样的效果,一次只能滑一页,而且居中显示,也就是说使用SnapHelper可以帮助RecyclerView滑动完成后进行对齐操作

FloatingActionButton的简单使用

倾然丶 夕夏残阳落幕 提交于 2020-03-10 07:37:13
首先是FloatingActionButton的简单使用 首先在xml里声明 <com.google.android.material.floatingactionbutton.FloatingActionButton android:id="@+id/addButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginEnd="8dp" android:layout_marginBottom="8dp" android:backgroundTint="#FFC107" android:clickable="true" android:src="@drawable/ic_add_white_24dp" app:layout_constraintBottom_toBottomOf="@+id/viewPager2_home" app:layout_constraintEnd_toEndOf="parent" app:pressedTranslationZ="@dimen/press_button_shadow" /> 这里是recyclerView滑动的时候不显示悬浮按钮 : 这里是recyclerView滑动的属性 SCROLL_STATE

尝试用kotlin做一个app(十二)

匆匆过客 提交于 2020-03-09 08:57:00
新闻列表页下拉刷新 1.使用谷歌官方的SwipeFreshLayout控件 简单使用 用<androidx.swiperefreshlayout.widget.SwipeRefreshLayout></androidx.swiperefreshlayout.widget.SwipeRefreshLayout>包裹RecyvlerView 设置颜色 swipeRefreshLayout.setColorSchemeColors(Color.GRAY)可以添加多种颜色 设置监听 swipeRefreshLayout.setOnRefreshListener { var pos:Int=this.intent.getStringExtra("posi").toInt() swipeRefreshLayout.isRefreshing=false } 新闻列表页上拉加载更多 思路是,在RecyclerView中新增一个item,判断如果Recycler滚动到最后一个item。从数据库读取更多数据,添加到原来的新闻列表的末尾。 创建一个布局的类LoadMoreView class LoadMoreView:RelativeLayout{ constructor(context: Context):super(context) constructor(context: Context

Recycleview 简单判断是否下滑到底部

对着背影说爱祢 提交于 2020-03-08 18:01:22
recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener(){ @Override public void onScrollStateChanged(RecyclerView recyclerView, int newState) { super.onScrollStateChanged(recyclerView, newState); }); recyclerView.canScrollVertically(1)的值表示是否能向上滚动,false表示已经滚动到底部 recyclerView.canScrollVertically(-1)的值表示是否能向下滚动,false表示已经滚动到顶部 来源: oschina 链接: https://my.oschina.net/hongjiang/blog/3190034

尝试用kotlin做一个app(十)

我与影子孤独终老i 提交于 2020-03-06 03:50:48
写到越后面,渐渐失控 添加子类导航的点击事件 这是在pagerview中嵌套了layout布局。三个子控件属于layout布局,给它们添加点击事件,直接用它们的控件id就好 但是如果在homepagefragment类中直接id.setOnClickListener{}就会报 Unable to start activity ComponentInfo{com.vocus.justtest/com.vocus.justtest.ui.activity.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void com.vocus.justtest.view.ImageTextView 估计是上下文的问题吧 那就在adapter中去设置吧 when (position%3) { 0 -> { var navView = LayoutInflater.from(container.context) .inflate(R.layout.fragment_home_nav_program, container, false) container.addView(navView) // var javaView=navView.findViewById<ImageTextView>

RecyclerView item按下变色效果+水波纹效果

混江龙づ霸主 提交于 2020-03-01 16:18:42
相信大家肯定有过这样的需求,给recyclerview的条目设置按下变色或者水波纹效果 1. 水波纹效果实现 1)系统效果 系统有界效果 在API 21以上使用,才有波纹效果;API 21以下使用只有变色效果,没有波纹效果 android:background="?android:attr/selectableItemBackground" 系统无界效果 在API 21以上才能使用,API 21以下会报错无法编译,最小版本要设置为minSdkVersion 21 android:background="?android:attr/selectableItemBackgroundBorderless" 2)自定义效果 在drawable文件夹下新建 bg_change.xml 文件用于实现波纹效果。(仅限Android 5.0以上机型) 自定义有界效果 <?xml version="1.0" encoding="utf-8"?> <ripple xmlns:android="http://schemas.android.com/apk/res/android" android:color="@color/gray"> <!--波纹颜色--> <item> <shape android:shape="rectangle"> <!-- 填充背景色--> <solid android