文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Android侧滑按钮怎么实现

2023-06-29 22:19

关注

这篇文章主要介绍“Android侧滑按钮怎么实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Android侧滑按钮怎么实现”文章能帮助大家解决问题。

Android侧滑按钮效果如下所示:

Android侧滑按钮怎么实现

导入闭包

将以下语句倒入目录下build.gradle文件内

 implementation 'com.github.WangcWj:WeSwipe:1.0.2' implementation 'cn.wang.we:network:1.0.0'

将以下语句倒入项目build.gradle文件内

创建RecyclerView子项布局文件

效果描述

整体效果图,因为使用RelativeLayout布局的缘故,将侧滑按钮给覆盖了

Android侧滑按钮怎么实现

我们接下来选中侧滑按钮,由此我们可以看见按钮的位置

Android侧滑按钮怎么实现

将侧滑按钮释放出来,看一下效果

Android侧滑按钮怎么实现

布局代码

<?xml version="1.0" encoding="utf-8"?><RelativeLayout    android:layout_width="match_parent"    android:layout_height="wrap_content"    xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_marginTop="10dp">    <TextView        android:id="@+id/SideText"        android:layout_width="100dp"        android:layout_height="60dp"        android:text="选择车位"        android:textSize="15sp"        android:background="#DD2248"        android:gravity="center"        android:textColor="#ffffff"        android:layout_marginRight="10dp"        android:layout_centerInParent="true"        android:layout_alignParentRight="true"/>    <!--大-->    <LinearLayout        android:id="@+id/SideLayout"        android:layout_width="match_parent"        android:layout_height="70dp"        android:orientation="horizontal"        android:background="@drawable/btn_style"        android:gravity="center"        android:padding="10dp">        <!--小-->        <LinearLayout            android:layout_weight="1"            android:layout_width="0dp"            android:layout_height="wrap_content"            android:orientation="vertical"            android:layout_marginLeft="5dp">            <TextView                android:id="@+id/SimplePlace"                android:layout_width="wrap_content"                android:layout_height="wrap_content"                android:text="工人文化宫停车场"                android:textColor="#000000"                android:textSize="15sp"                android:singleLine="true"                android:ellipsize="end"                />            <TextView                android:id="@+id/detailPlace"                android:layout_width="wrap_content"                android:layout_height="wrap_content"                android:text="田心大道52号附件"                android:textSize="10sp"                android:layout_marginTop="10dp"                android:singleLine="true"                android:ellipsize="end"                />        </LinearLayout>        <!--小-->        <LinearLayout            android:layout_weight="1"            android:layout_width="0dp"            android:layout_height="wrap_content"            android:orientation="vertical"            android:layout_marginLeft="10dp"            android:layout_gravity="center"            android:gravity="center">            <ImageView                android:id="@+id/ParkingIcon"                android:layout_width="30dp"                android:layout_height="30dp"                android:src="@drawable/road_sign"                android:scaleType="fitCenter"/>            <TextView                android:id="@+id/ParkingDistance"                android:layout_width="wrap_content"                android:layout_height="wrap_content"                android:text="201m"                android:textSize="10sp" />        </LinearLayout>        <LinearLayout            android:layout_width="0dp"            android:layout_height="wrap_content"            android:layout_weight="1"            android:layout_gravity="center"            android:gravity="center">            <TextView                android:layout_width="wrap_content"                android:layout_height="wrap_content"                android:text="空余车位:"                android:textColor="#000000"                android:textSize="15sp"/>            <TextView                android:id="@+id/ParkingNumber"                android:layout_width="wrap_content"                android:layout_height="wrap_content"                android:text="10个"                android:textColor="#ff0000"                android:textSize="15sp"/>        </LinearLayout>    </LinearLayout></RelativeLayout>

创建RecyclerView适配器

描述

使用第三方API轮子时,不能像当初我们建立适配器一样继承一个RecyclerView.Adapter<VH>类,而要继承WeSwipeProxyAdapter<VH>抽象类
我们一般根据需求需要实现以下三个方法

 @Override            public float getSwipeWidth() {             //侧滑按钮的宽度            }            @Override            public View needSwipeLayout() {            //子项布局文件的最外层Layout            }            @Override            public View onScreenView() {             //子项布局文件的最外层Layout            }

子项点击事件

//创建点击事件接口函数public interface ParkingOnClick{            void OnClickListener(View view,int Position);        }//点击事件调用public void setOnclick(ParkingOnClick onclick) {            this.onClick = onclick;        }//引入布局View中return new ViewHolder(view,onClick);//内部类实现点击事件class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener//构造函数public ViewHolder(@NonNull View itemView,ParkingOnClick Listener)this.Listener = Listener;//点击事件外露@Override            public void onClick(View v) {                if (Listener != null) {                    Listener.OnClickListener(v, getPosition());                }            }

适配器代码

public class ParkingAdapter  extends WeSwipeProxyAdapter<ParkingAdapter.ViewHolder> {        List<ParkingData> data = new ArrayList<>(  );        private ParkingOnClick onClick;        public ParkingAdapter(List<ParkingData> data ){            this.data = data;        }        @NonNull        @Override        public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {            View view = LayoutInflater.from( parent.getContext() ).inflate( R.layout.parking_item,parent,false );            return new ViewHolder(view,onClick);        public void onBindViewHolder(@NonNull ViewHolder holder, int position) {            ParkingData bookingData = data.get(position);            holder.BigPlace.setText(bookingData.getBigPlace());            holder.SmallPlace.setText(bookingData.getSmallPlace());            holder.ParkingNumber.setText(bookingData.getParkingNumber() + "");            holder.Distance.setText(bookingData.getDistance());             holder.SideText.setOnClickListener( new View.OnClickListener() {                @Override                public void onClick(View v) {                    Log.d( "Da",1+"" );                    if (onClick != null){                        onClick.OnClickListener( v,position );                    }                }            } );        public int getItemCount() {            return data.size();        class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener,WeSwipeHelper.SwipeLayoutTypeCallBack        {            private TextView BigPlace,SmallPlace,Distance,ParkingNumber,SideText;            private LinearLayout SideLayout;            private ParkingOnClick Listener;            public ViewHolder(@NonNull View itemView,ParkingOnClick Listener) {                super( itemView );                this.Listener = Listener;                BigPlace = itemView.findViewById( R.id.SimplePlace );                SmallPlace = itemView.findViewById( R.id.detailPlace );                Distance = itemView.findViewById( R.id.ParkingDistance );                ParkingNumber = itemView.findViewById( R.id.ParkingNumber );                SideText = itemView.findViewById( R.id.SideText );                SideLayout = itemView.findViewById( R.id.SideLayout );            }            @Override            public float getSwipeWidth() {                return SideText.getWidth();            public View needSwipeLayout() {                return SideLayout;            public View onScreenView() {            public void onClick(View v) {                if (Listener != null) {                    Listener.OnClickListener(v, getPosition());        //回调接口        public interface ParkingOnClick{            void OnClickListener(View view,int Position);        //点击事件        public void setOnclick(ParkingOnClick onclick) {            this.onClick = onclick;}

应用

解析xml数据

private void InitData(){        String[] parkingArray = getResources().getStringArray(R.array.parking);        for (int i = 0; i <parkingArray.length ; i+=4) {            ParkingData data = new ParkingData(parkingArray[i],parkingArray[i+1],parkingArray[i+2],Integer.parseInt(parkingArray[i+3]));            dataList.add(data);        }    }

绑定

WeSwipe.attach(ParkingRecycler);private void InitRecycler(){        LinearLayoutManager manager = new LinearLayoutManager(this);        ParkingRecycler.setLayoutManager(manager);        adapter = new ParkingAdapter(dataList);        ParkingRecycler.setAdapter(adapter);        WeSwipe.attach(ParkingRecycler);    }

点击事件引用

adapter.setOnclick(new ParkingAdapter.ParkingOnClick() {            @Override            public void OnClickListener(View view, int Position) {               //do anything...            }        });

关于“Android侧滑按钮怎么实现”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网行业资讯频道,小编每天都会为大家更新不同的知识点。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯