移动开发作业博客

本文介绍了一个简单的侧滑菜单实现方案,利用Android的HorizontalScrollView特性,通过自定义SlidingMenu类来实现滑动显示隐藏菜单的功能,并附上了具体的代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这里做的是一个侧滑菜单~~

1、原理分析

需要滑动可以出现另一个,既然这样,大家为啥不考虑使用Android提供的HorizontalScrollView呢~

如果使用HorizontalScrollView,还需要在ACTION_DOWN , ACTION_MOVE里面去监听,判断,不断改变控件位置了么? NO!!!HorizontalScrollView本身就带了滑动的功能~~

还需要自己的手动处理各种冲突么?NO!!!当然了,还是需要了解下事件分发机制的~~~

2、效果图
这里写图片描述

3.源码

<com.example.zhy_slidingmenu.SlidingMenu xmlns:android="http://schemas.android.com/apk/res/android"  
    xmlns:tools="http://schemas.android.com/tools"  
    android:layout_width="wrap_content"  
    android:layout_height="fill_parent"  
    android:scrollbars="none" >  

    <LinearLayout  
        android:layout_width="wrap_content"  
        android:layout_height="fill_parent"  
        android:orientation="horizontal" >  

        <include layout="@layout/layout_menu" />  

        <LinearLayout  
            android:layout_width="fill_parent"  
            android:layout_height="fill_parent"  
            android:background="@drawable/qq" >  
        </LinearLayout>  
    </LinearLayout>  

</com.example.zhy_slidingmenu.SlidingMenu>  

4、自定义SlidingMenu

package com.example.zhy_slidingmenu;  

import android.content.Context;  
import android.util.AttributeSet;  
import android.util.TypedValue;  
import android.view.MotionEvent;  
import android.view.ViewGroup;  
import android.widget.HorizontalScrollView;  
import android.widget.LinearLayout;  

import com.zhy.utils.ScreenUtils;  

public class SlidingMenu extends HorizontalScrollView  
{  
    /** 
     * 屏幕宽度 
     */  
    private int mScreenWidth;  
    /** 
     * dp 
     */  
    private int mMenuRightPadding = 50;  
    /** 
     * 菜单的宽度 
     */  
    private int mMenuWidth;  
    private int mHalfMenuWidth;  

    private boolean once;  

    public SlidingMenu(Context context, AttributeSet attrs)  
    {  
        super(context, attrs);  
        mScreenWidth = ScreenUtils.getScreenWidth(context);  
    }  

    @Override  
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec)  
    {  
        /** 
         * 显示的设置一个宽度 
         */  
        if (!once)  
        {  
            LinearLayout wrapper = (LinearLayout) getChildAt(0);  
            ViewGroup menu = (ViewGroup) wrapper.getChildAt(0);  
            ViewGroup content = (ViewGroup) wrapper.getChildAt(1);  
            // dp to px  
            mMenuRightPadding = (int) TypedValue.applyDimension(  
                    TypedValue.COMPLEX_UNIT_DIP, mMenuRightPadding, content  
                            .getResources().getDisplayMetrics());  

            mMenuWidth = mScreenWidth - mMenuRightPadding;  
            mHalfMenuWidth = mMenuWidth / 2;  
            menu.getLayoutParams().width = mMenuWidth;  
            content.getLayoutParams().width = mScreenWidth;  

        }  
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);  

    }  

    @Override  
    protected void onLayout(boolean changed, int l, int t, int r, int b)  
    {  
        super.onLayout(changed, l, t, r, b);  
        if (changed)  
        {  
            // 将菜单隐藏  
            this.scrollTo(mMenuWidth, 0);  
            once = true;  
        }  
    }  

    @Override  
    public boolean onTouchEvent(MotionEvent ev)  
    {  
        int action = ev.getAction();  
        switch (action)  
        {  
        // Up时,进行判断,如果显示区域大于菜单宽度一半则完全显示,否则隐藏  
        case MotionEvent.ACTION_UP:  
            int scrollX = getScrollX();  
            if (scrollX > mHalfMenuWidth)  
                this.smoothScrollTo(mMenuWidth, 0);  
            else  
                this.smoothScrollTo(0, 0);  
            return true;  
        }  
        return super.onTouchEvent(ev);  
    }  

}  

3、添加ListView测试
这里写图片描述

这样就结束啦~~~

android开发期末大作业(项目源码,任务书,实验大报告,apk文件) 大作业的要求和内容:(包括题目选择范围、技术要求、递交时间、考核方法等) 一、实验项目名称 Android手机应用开发课程大作业 二、实验目的 1.通过本课程设计的实践及其前后的准备与总结,复习、领会、巩固和运用课堂上所学的Android手机应用开发知识。 2.为学生综合应用本专业所学习的多门课程知识(例如,软件工程、数据库、Java语言、Java Web开发等)创造实践机会。为学生提供主动学习、积极探索与大胆创新的机会。 3.掌握Android手机应用设计的方法与技巧。 三、实验内容及要求 1、设计内容 题目、设计内容自拟,工作量适中,要求学生应用课程所学知识,采用JAVA语言和Android手机应用开发技术实现一个完整的系统。 ①完成大作业报告。 ②实现各系统功能,并完成调试运行。 2、主要技术 采用Java语言并不仅限于Java语言实现系统。 开发环境与工具:Android Studio 3.2以上版本; 操作系统:Win7/Win10或其他; 4、设计成果: 材料上交:电子文档(大作业任务书+大作业报告+源代码,电子稿请刻在光盘上)、打印稿(大作业任务书+大作业报告)。 四、成绩评定: 考核标准包括: 1、选题的工作量,难度和新颖程度 2、系统架构设计是否良好,运行过程是否报错 3、界面设计的合理性和美观程度 4、基本功能的实现 分值60 (包括布局、组件、Activity、Intent等使用) 数据存储的使用 分值10 网络功能 分值10 Service、ContentProvider或BroadCastReceiver等的使用 分值10 附加分: 图形图像处理、多媒体处理等 分值10 5、考核方式为面对面答辩,在课程的后两周内集中进行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值