FloatActivityButton,CardView
来源:互联网 发布:mysql 年月日时分秒 编辑:程序博客网 时间:2024/06/07 10:18
layout.xml:
<?xml version="1.0" encoding="utf-8"?><android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginBottom="5dp" android:layout_marginLeft="5dp" android:layout_marginRight="5dp" android:clickable="true" app:cardCornerRadius="10dp" app:cardElevation="10dp"> <TextView android:id="@+id/tv" android:layout_width="match_parent" android:layout_height="50dp" android:gravity="center" android:text="123" /></android.support.v7.widget.CardView>
main_activity.xml
<?xml version="1.0" encoding="utf-8"?><android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <android.support.v7.widget.RecyclerView android:id="@+id/recyclerview" android:layout_width="match_parent" android:layout_height="match_parent"> </android.support.v7.widget.RecyclerView> <android.support.design.widget.FloatingActionButton android:id="@+id/fab" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="bottom|end" android:layout_marginBottom="@dimen/fab_margin" android:layout_marginRight="16dp" android:backgroundTint="@color/cardview_dark_background"//设置背景颜色 android:src="@android:drawable/ic_dialog_email" app:layout_behavior="com.baozilichao.myapplication.MyBehavior" /></android.support.design.widget.CoordinatorLayout>
MyBeHavior.class
package com.baozilichao.myapplication;import android.content.Context;import android.support.design.widget.CoordinatorLayout;import android.support.design.widget.FloatingActionButton;import android.support.v4.view.ViewCompat;import android.support.v4.view.ViewPropertyAnimatorListenerAdapter;import android.support.v4.view.animation.FastOutLinearInInterpolator;import android.util.AttributeSet;import android.view.View;import android.view.ViewGroup;public class MyBehavior extends FloatingActionButton.Behavior { //我们还可以加一个加速器实现弹射效果 private FastOutLinearInInterpolator folistener=new FastOutLinearInInterpolator(); public MyBehavior(Context context, AttributeSet attr){ super(); } @Override public boolean onStartNestedScroll(CoordinatorLayout coordinatorLayout, FloatingActionButton child, View directTargetChild, View target, int nestedScrollAxes) { //开始滑监听---当观察recyclerview开始发生滑动的时候回调 //nestedScrollAxes滑动关联的方向 return nestedScrollAxes==ViewGroup.SCROLL_AXIS_VERTICAL||super.onStartNestedScroll(coordinatorLayout, child, directTargetChild, target, nestedScrollAxes); } //正在滑出来 boolean isAnimatingOut=false; @Override public void onNestedScroll(CoordinatorLayout coordinatorLayout, FloatingActionButton child, View target, int dxConsumed, int dyConsumed, int dxUnconsumed, int dyUnconsumed) { //不断的调用 //判断滑动的方向 dyConsumed 某个方向的增量 if(dyConsumed>0&&!isAnimatingOut&&child.getVisibility()==View.VISIBLE){ //fab划出去 animateOut(child); }else if(dyConsumed<0&&child.getVisibility()!=View.VISIBLE){ //fab划进来 animateIn(child); } super.onNestedScroll(coordinatorLayout, child, target, dxConsumed, dyConsumed, dxUnconsumed, dyUnconsumed); } //滑进来 private void animateIn(FloatingActionButton child) { child.setVisibility(View.VISIBLE); //属性动画 ViewCompat.animate(child).translationY(0).setInterpolator(folistener).setListener(null).start(); } //滑出去 private void animateOut(FloatingActionButton child) { //属性动画 //设置监听判断状态 ViewCompat.animate(child).translationY(child.getWidth()).setInterpolator(folistener).setListener(new ViewPropertyAnimatorListenerAdapter(){ @Override public void onAnimationStart(View view) { isAnimatingOut=true; super.onAnimationStart(view); } @Override public void onAnimationCancel(View view) { isAnimatingOut=false; super.onAnimationCancel(view); } @Override public void onAnimationEnd(View view) { view.setVisibility(View.GONE); isAnimatingOut=false; super.onAnimationEnd(view); } }).start(); } @Override public void onStopNestedScroll(CoordinatorLayout coordinatorLayout, FloatingActionButton child, View target) { super.onStopNestedScroll(coordinatorLayout, child, target); }}
MyAdapter.class
package com.baozilichao.myapplication;import android.content.Context;import android.support.v7.widget.RecyclerView;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.TextView;import java.util.List;public class MyAdapter extends RecyclerView.Adapter<MyAdapter.myViewholder>{ public Context context; public List<String> list; public MyAdapter(Context context,List<String> list){ this.context=context; this.list=list; } @Override public myViewholder onCreateViewHolder(ViewGroup parent, int viewType) { View view= LayoutInflater.from(context).inflate(R.layout.layout_item,parent,false); myViewholder holder=new myViewholder(view); return holder; } @Override public void onBindViewHolder(myViewholder holder, int position) { holder.tv.setText(list.get(position)); } @Override public int getItemCount() { return list.size(); } class myViewholder extends RecyclerView.ViewHolder{ TextView tv; public myViewholder(View itemView) { super(itemView); tv=(TextView)itemView.findViewById(R.id.tv); } }}
Main_activity.class
package com.baozilichao.myapplication;import android.app.Activity;import android.os.Bundle;import android.support.design.widget.FloatingActionButton;import android.support.design.widget.Snackbar;import android.support.v7.widget.LinearLayoutManager;import android.support.v7.widget.RecyclerView;import android.view.View;import android.view.Window;import java.util.ArrayList;import java.util.List;public class MainActivity extends Activity { private RecyclerView recycleview; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_main); initView(); FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); fab.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) .setAction("Action", null).show(); } }); } private void initView() { List<String> list = new ArrayList<String>(); int i = 0; while (i < 30) { list.add("第" + i + "项"); System.out.print("" + i); i++; } recycleview = (RecyclerView) findViewById(R.id.recyclerview); recycleview.setLayoutManager(new LinearLayoutManager(MainActivity.this)); recycleview.setAdapter(new MyAdapter(MainActivity.this, list)); }}
支持包:
compile 'com.android.support:recyclerview-v7:24.2.0' compile 'com.android.support:cardview-v7:24.2.0'
demo:
0 0
- FloatActivityButton,CardView
- CardView
- CardView
- CardView
- CardView
- cardview
- CardView
- CardView
- CardView
- CardView
- cardview
- cardview
- CardView
- CardView
- CardView
- CardView
- CardView
- CardView
- 在Linux桌面条件下打开Terminal的快捷键
- CentOS7安装iptables防火墙
- linux 下 c++ 连接mysql
- Linux进程实时IO监控iotop命令详解
- Stock Value 2
- FloatActivityButton,CardView
- 进程和线程概述、区别及联系
- Android Studio 使用艺术 - 快捷键完整版
- nachos各包
- HTML+CSS基础 form-input-radio创建多组并且每组有多个的单选按钮(不漂亮的)
- Address already in use ADB server didn't ACK
- Day9:JOB
- 在maven项目中如何引入另外一个项目
- C++primer(第五版) 第一章 学习笔记