iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >如何在Android应用中实现一个侧滑功能
  • 418
分享到

如何在Android应用中实现一个侧滑功能

androidroi 2023-05-31 07:05:44 418人浏览 泡泡鱼
摘要

本篇文章给大家分享的是有关如何在Android应用中实现一个侧滑功能,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。实现说明:通过自定义布局实现:SlidingLayout继承于

本篇文章给大家分享的是有关如何在Android应用中实现一个侧滑功能,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

实现说明:

通过自定义布局实现:

SlidingLayout继承于 HorizontalScrollView

public class SlidingLayout extends HorizontalScrollView{private float rightPadding;private int leftWidth;private ViewGroup leftView;private ViewGroup contentView;private final Context context;private boolean isOpenMeun = true;private ImageView shadowView;public SlidingLayout(Context context) {this(context,null);}public SlidingLayout(Context context, AttributeSet attrs) {this(context, attrs,0);}public SlidingLayout(Context context, AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);this.context = context;//获取自定义的属性TypedArray typedArray=context.obtainStyledAttributes(attrs,R.styleable.SlidingLayout);rightPadding=typedArray.getDimension(R.styleable.SlidingLayout_rightPadding,80);//计算左侧菜单的宽度leftWidth = (int) (getScreenWidth() - rightPadding + 0.5f);}//获取屏幕的宽度private float getScreenWidth() {return getResources().getDisplayMetrics().widthPixels;}@Override protected void onFinishInflate() {super.onFinishInflate();ViewGroup container= (ViewGroup) getChildAt(0);if(container.getChildCount() > 2){throw new IllegalStateException("SlidingLayout中只能放两个子View");}//获取左侧菜单viewleftView = (ViewGroup) container.getChildAt(0);//获取主布局的ViwecontentView = (ViewGroup) container.getChildAt(1);//设置子view 的宽度leftView.getLayoutParams().width = leftWidth;contentView.getLayoutParams().width = (int) getScreenWidth();//移除父布局container.removeView(contentView);FrameLayout frameLayout=new FrameLayout(context);frameLayout.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.MATCH_PARENT));frameLayout.addView(contentView);//添加阴影shadowView = new ImageView(context);shadowView.setBackgroundColor(Color.parseColor("#99000000"));frameLayout.addView(shadowView);container.addView(frameLayout);}@Overrideprotected void onScrollChanged(int l, int t, int oldl, int oldt) {super.onScrollChanged(l, t, oldl, oldt);float x=l*0.8f;//偏移量leftView.setTranslationX(x);//平移float color = 1 - l * 1.0f / leftWidth;shadowView.setAlpha(color);}@Overridepublic boolean onTouchEvent(MotionEvent ev) {switch (ev.getAction()) {case MotionEvent.ACTION_UP://手指抬起的时候判断是否关闭int currentX = getScrollX();if (isOpenMeun) {if (currentX >= leftWidth / 2) {closeMeun();} else {openMeun();}//点击关闭float x = ev.getX();if (x > leftWidth) {closeMeun();}return true;} else {//关闭状态if (currentX < leftWidth / 2) {openMeun();} else {closeMeun();}return true;}}return super.onTouchEvent(ev);}public void closeMeun(){isOpenMeun = false;smoothScrollTo(leftWidth,0);// 250ms}public void openMeun(){isOpenMeun = true;smoothScrollTo(0,0);}}

attrs属性文件

<?xml version="1.0" encoding="utf-8"?><resources><declare-styleable name="SlidingLayout"> <attr name="rightPadding" fORMat="dimension"/></declare-styleable></resources>

布局方面

<?xml version="1.0" encoding="utf-8"?><com.example.myqq.SlidingLayout  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" app:rightPadding="65dp" tools:context="com.example.myqq.MainActivity"> <LinearLayout  android:layout_width="match_parent"  android:layout_height="match_parent"  android:orientation="horizontal">  <include layout="@layout/left_main" />  <include layout="@layout/right_main" /> </LinearLayout></com.example.myqq.SlidingLayout>

activity

package com.example.myqq;import android.animation.ObjectAnimator;import android.annotation.Targetapi;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.WindowManager;import android.widget.ArrayAdapter;import android.widget.ImageView;import android.widget.ListView;public class MainActivity extends AppCompatActivity { private String strings[] = {"开通会员", "QQ钱包", "个性装扮", "我的收藏", "我的相册", "我的文件", "我的日程", "我的名片夹"}; @Override protected void onCreate(Bundle savedInstanceState) {  super.onCreate(savedInstanceState);  setState();  setContentView(R.layout.activity_main);  ListView listView= (ListView) findViewById(R.id.list_left);  listView.setDividerHeight(0);  listView.setAdapter(new ArrayAdapter<>(this,android.R.layout.simple_list_item_1,strings));  ImageView bgimg1= (ImageView) findViewById(R.id.bgimg);  float currentY=bgimg1.getTranslationY();  ObjectAnimator animator = ObjectAnimator.ofFloat(bgimg1, "translationY", currentY, -100, -40, currentY);  animator.setDuration(5000);  animator.setRepeatCount(ObjectAnimator.INFINITE);  animator.start(); } @TargetApi(20) private void setState() {  WindowManager.LayoutParams params=new WindowManager.LayoutParams();  params.flags=WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS;  getWindow().setAttributes(params); }}

以上就是如何在Android应用中实现一个侧滑功能,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注编程网精选频道。

--结束END--

本文标题: 如何在Android应用中实现一个侧滑功能

本文链接: https://www.lsjlt.com/news/224269.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何在Android应用中实现一个侧滑功能
    本篇文章给大家分享的是有关如何在Android应用中实现一个侧滑功能,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。实现说明:通过自定义布局实现:SlidingLayout继承于...
    99+
    2023-05-31
    android roi
  • 怎么在Android中利用ListView实现一个侧滑删除功能
    本篇文章给大家分享的是有关怎么在Android中利用ListView实现一个侧滑删除功能,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。需求:listView可以侧滑item,展...
    99+
    2023-05-31
    android listview roi
  • 如何在Android应用中利用DrawerLayout实现一个侧拉菜单栏功能
    如何在Android应用中利用DrawerLayout实现一个侧拉菜单栏功能?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。activity_main.xml<&#...
    99+
    2023-05-31
    android drawerlayout roi
  • Android仿iOS如何实现侧滑返回功能
    这篇文章将为大家详细讲解有关Android仿iOS如何实现侧滑返回功能,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。先上个效果再说:原理Activity 本身是不可以滑动的,但是我们可以制造一个正在滑动 ...
    99+
    2023-05-30
  • 在Android项目中使用View实现一个侧滑菜单
    在Android项目中使用View实现一个侧滑菜单?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。一、概述  在App中,经常会出现侧滑菜单,侧滑滑出View等效果,虽然说And...
    99+
    2023-05-31
    android view roi
  • 如何在Android中利用View实现一个等级滑动条功能
    这篇文章将为大家详细讲解有关如何在Android中利用View实现一个等级滑动条功能,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。思路: 首先绘制直线,然后等分直线绘制点; 绘制点...
    99+
    2023-05-31
    android view roi
  • 如何在Android应用中实现一个返回键功能
    今天就跟大家聊聊有关如何在Android应用中实现一个返回键功能,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。记录用户点击的操作历史,使用栈数据结构,频繁的操作栈顶(添加,获取,删除...
    99+
    2023-05-31
    android roi
  • 如何在Android中实现一个滑块拼图验证码功能
    本篇文章给大家分享的是有关如何在Android中实现一个滑块拼图验证码功能,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。一、实现步骤:定义自定义属性; 2、确认目标位置,这里使...
    99+
    2023-06-06
  • 如何在Android应用中实现一个记住密码功能
    本篇文章给大家分享的是有关如何在Android应用中实现一个记住密码功能,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。一、打开之前完成的Case_login进行修改再编辑二、将...
    99+
    2023-05-31
    android roi
  • 如何在Android应用中实现一个手势密码功能
    如何在Android应用中实现一个手势密码功能?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。实现思路: 正上方的提示区域,用一个类(LockIndicator....
    99+
    2023-05-31
    android roi
  • 如何在Android应用中实现一个图片添加功能
    如何在Android应用中实现一个图片添加功能?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1、首先这是用GridView实现的<&#63;xml...
    99+
    2023-05-31
    android roi
  • Android开发中如何实现一个滑动删除功能
    这篇文章将为大家详细讲解有关Android开发中如何实现一个滑动删除功能,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。先看一下效果activity_lookstaff.xml<Rela...
    99+
    2023-05-31
    android 滑动删除 roi
  • 如何在Android应用中利用SDK实现一个地图功能
    这期内容当中小编将会给大家带来有关如何在Android应用中利用SDK实现一个地图功能,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。找到控制台创建一个应用添加key名称,注意命名规范,还有就是下面的SHA...
    99+
    2023-05-31
    android sdk roi
  • 如何在Android应用中利用ListView实现一个分页功能
    今天就跟大家聊聊有关如何在Android应用中利用ListView实现一个分页功能,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Android ListView分页简单实现分页,开发...
    99+
    2023-05-31
    android listview roi
  • Android应用中怎么实现一个滑动切换页面功能
    Android应用中怎么实现一个滑动切换页面功能?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。 TabLayou 主要实现的是标题头的 滑动 这个 控件 类似于 Sc...
    99+
    2023-05-31
    android roi
  • 怎么在Android中实现一个滑动退出Activity功能
    怎么在Android中实现一个滑动退出Activity功能?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。实现Android 滑动退出Activity的功能and...
    99+
    2023-05-30
    android activity roi
  • 怎么在Android中利用DrawerLayout实现一个双向侧滑菜单
    这篇文章将为大家详细讲解有关怎么在Android中利用DrawerLayout实现一个双向侧滑菜单,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。布局文件的代码:<LinearLayou...
    99+
    2023-05-30
  • 如何在Android应用中实现一个图库辅助器功能
    如何在Android应用中实现一个图库辅助器功能?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。实现步骤第一步,创建辅助类,使用弱引用持有Activity,防止内存溢出。 ...
    99+
    2023-05-31
    android roi
  • 如何在Android应用中实现一个二维码生成功能
    本篇文章为大家展示了如何在Android应用中实现一个二维码生成功能,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Android 有自带的jar包可以生成二维码core-3.0.0.jar,其中的c...
    99+
    2023-05-31
    android roi
  • 怎么在Android应用中利用RecycleView 实现一个左滑上下分层功能
    怎么在Android应用中利用RecycleView 实现一个左滑上下分层功能?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。独立Adapter的操作方式思路: ...
    99+
    2023-05-31
    android recycleview recycle
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作