2017-11-29 14:12:08 qq_24543821 阅读数 639
  • 19年录制HTML5/CSS3教程js视频教程电商项目综合实战

    * * 课程版本:这是一套综合html+css+html5+css3+js所有前端必备知识点的电商项目实战视频教程,本套课程分为6章26节。 * 核心内容 * * * * 深度讲解仿百度搜索下拉提示及防抖函数 * 深度讲解绝对定位布局实现商品二级分类 * 深度剖析轮播图实现原理 * 详解商品秒杀专区倒计时 * 本地json数据模拟前后端数据交互 * 深入了解悬浮菜单、滚动监听、返回顶部功能 * 完整学习路线推荐

    125 人正在学习 去看看 张颜源

本文根据别人代码改编,找不到原地址了,希望原主看到后可联系我重新声明。


import android.content.Context;
import android.graphics.PixelFormat;
import android.view.Gravity;
import android.view.MotionEvent;
import android.view.View;
import android.view.WindowManager;
import android.widget.ImageView;

/**
 * Created by Administrator on 2017/11/29 0029.
 */

public class SuspendDialog {
    private WindowManager wm = null;
    private WindowManager.LayoutParams wmParams = null;
    private ImageView leftbtn = null;
    boolean isMove = false;
    private float mStartX, mStartY;
    private Context context;
    private onClickSuspendListener onClickSuspendListener;
    public SuspendDialog(Context context) {
        this.context = context;
        wm = (WindowManager) context.getApplicationContext().getSystemService(Context.WINDOW_SERVICE);
        wmParams = new WindowManager.LayoutParams(
                WindowManager.LayoutParams.WRAP_CONTENT,
                WindowManager.LayoutParams.WRAP_CONTENT,
                WindowManager.LayoutParams.TYPE_TOAST,
                WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL,
                PixelFormat.TRANSLUCENT);
    }

    public void show(){
        initFloatView();
    }

    public void destory(){
        wm.removeView(leftbtn);
        wm = null;
    }
    public void dismiss(){
        wm.removeView(leftbtn);
    }
    private void initFloatView() {
        //设置LayoutParams(全局变量)相关参数
        wmParams.gravity = Gravity.RIGHT | Gravity.BOTTOM;
        //水平、垂直的距离百分比
        wmParams.verticalMargin = 0.1f;
        wmParams.horizontalMargin = 0.1f;
        //以屏幕左上角为原点,设置xy初始值
        wmParams.x = 0;
        wmParams.y = 0;
        //设置悬浮窗口长宽数据
        wmParams.width = 200;
        wmParams.height = 200;
        createLeftFloatView();
        leftbtn.invalidate();
    }

    private void createLeftFloatView() {
        leftbtn = new ImageView(context);
        leftbtn.setImageResource(R.mipmap.ic_launcher);
        //调整悬浮窗口
        //显示myFloatView图像
        wm.addView(leftbtn, wmParams);
        leftbtn.setOnTouchListener(new View.OnTouchListener() {

            @Override
            public boolean onTouch(View v, MotionEvent event) {

                // 当前值以屏幕左上角为原点

                switch (event.getAction()) {
                    case MotionEvent.ACTION_DOWN:
                        mStartX = event.getRawX();
                        mStartY = event.getRawY();
                        break;

                    case MotionEvent.ACTION_MOVE:
                        isMove = true;
                        wmParams.x -= event.getRawX() - mStartX;
                        wmParams.y -= event.getRawY() - mStartY;
                        wm.updateViewLayout(leftbtn, wmParams);
                        mStartX = event.getRawX();
                        mStartY = event.getRawY();
                        break;
                    case MotionEvent.ACTION_UP:
                        if(!isMove ){
                            
                             if (onClickSuspendListener != null)onClickSuspendListener.onClick(leftbtn);
} isMove = false; break; } // 消耗触摸事件 return true; } }); } public void setOnClickListener(onClickSuspendListener onClickSuspendListener){ this.onClickSuspendListener = onClickSuspendListener; } public interface onClickSuspendListener{ void onClick(View view); }}

原文中写的view的点击事件是没用的,已经被ontouch事件消耗,所以需要重新设置点击监听。

另外原文中view放置在左边垂直居中,但是当把view放到右边底部的时候就无法拖拽,原因是要把触摸事件中把+=改为-=。

这是一个简单的悬浮按钮,简单的功能。

2018-06-01 12:47:49 lpCrazyBoy 阅读数 1761
  • 19年录制HTML5/CSS3教程js视频教程电商项目综合实战

    * * 课程版本:这是一套综合html+css+html5+css3+js所有前端必备知识点的电商项目实战视频教程,本套课程分为6章26节。 * 核心内容 * * * * 深度讲解仿百度搜索下拉提示及防抖函数 * 深度讲解绝对定位布局实现商品二级分类 * 深度剖析轮播图实现原理 * 详解商品秒杀专区倒计时 * 本地json数据模拟前后端数据交互 * 深入了解悬浮菜单、滚动监听、返回顶部功能 * 完整学习路线推荐

    125 人正在学习 去看看 张颜源

悬浮按钮效果如下图所示:


步骤1:引用

compile 'com.laocaixw.suspendbuttonlayout:suspendbuttonlayout:1.0.3'


步骤2:xml布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:layout_height="match_parent"
    android:layout_width="match_parent"
    android:orientation="vertical"
    xmlns:suspend="http://schemas.android.com/apk/res-auto"
    xmlns:android="http://schemas.android.com/apk/res/android">

    <com.laocaixw.layout.SuspendButtonLayout
        android:id="@+id/layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        suspend:distance="80dp"
        suspend:imageSize="50dp"
        suspend:marginY="100dp"
        suspend:number="6"
        suspend:imageMainOpen="@mipmap/suspend_main_open"
        suspend:imageMainClose="@mipmap/suspend_main_close"
        suspend:image1="@mipmap/suspend_1"
        suspend:image2="@mipmap/suspend_2"
        suspend:image3="@mipmap/suspend_3"
        suspend:image4="@mipmap/suspend_4"
        suspend:image5="@mipmap/suspend_5"
        suspend:image6="@mipmap/suspend_6">

    </com.laocaixw.layout.SuspendButtonLayout>

</LinearLayout>

以上各属性:

  • distance="80dp" // 按钮打开后,主按钮和子按钮的距离
  • imageSize="50dp" // 按钮大小,所占区域的边长
  • marginY="100dp" // 与上下边缘距离,下图中黄色部分的高度
  • number="6" // 展开的子按钮的数量,可以是3-6个
  • imageMainOpen="@mipmap/suspendMainOpen" // 中间按钮展开时的图片资源
  • imageMainClose="@mipmap/suspendMainClose" // 中间按钮关闭时的图片资源
  • image1="@mipmap/suspend_1" // 子按钮的图片资源,image1~image6


步骤3:Activity使用

public class MainActivity extends AppCompatActivity {

    public String[] suspendChildButtonInfo = {"相机", "音乐", "地图", "亮度", "联系人", "短信"};

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_suspendbutton);

        final SuspendButtonLayout suspendButtonLayout = (SuspendButtonLayout) findViewById(R.id.layout);
        suspendButtonLayout.setOnSuspendListener(new SuspendButtonLayout.OnSuspendListener() {
            @Override
            public void onButtonStatusChanged(int status) {

            }

            @Override
            public void onChildButtonClick(int index) {
                Toast.makeText(MainActivity.this, "您点击了【"
                        + suspendChildButtonInfo[index - 1] + "】按钮!", Toast.LENGTH_SHORT).show();
            }
        });

/*        suspendButtonLayout.hideSuspendButton(); // 隐藏按钮
        suspendButtonLayout.showSuspendButton(); // 显示按钮

        suspendButtonLayout.openSuspendButton(); // 展开按钮
        suspendButtonLayout.closeSuspendButton(); // 关闭按钮

        suspendButtonLayout.setMainCloseImageResource(R.mipmap.suspend_main_close); // 设置关闭时,主按钮的图片
        suspendButtonLayout.setMainOpenImageResource(R.mipmap.suspend_main_open); // 设置展开时,主按钮的图片

        // 设置按钮位置。isRight:true在右边,false在左边;stayPosY:在'按钮停留区域'从上往下,值为从0到100。
        suspendButtonLayout.setPosition(isRight, stayPosY); */


    }
}
2015-12-30 17:31:15 q4878802 阅读数 24324
  • 19年录制HTML5/CSS3教程js视频教程电商项目综合实战

    * * 课程版本:这是一套综合html+css+html5+css3+js所有前端必备知识点的电商项目实战视频教程,本套课程分为6章26节。 * 核心内容 * * * * 深度讲解仿百度搜索下拉提示及防抖函数 * 深度讲解绝对定位布局实现商品二级分类 * 深度剖析轮播图实现原理 * 详解商品秒杀专区倒计时 * 本地json数据模拟前后端数据交互 * 深入了解悬浮菜单、滚动监听、返回顶部功能 * 完整学习路线推荐

    125 人正在学习 去看看 张颜源

Android 5.0新控件——FloatingActionButton(悬浮按钮)

FloatingActionButton是5.0以后的新控件,一个悬浮按钮,之所以叫做悬浮按钮,主要是因为自带阴影属性,看上去像是悬浮的而已,其实就可以简单理解成一个带有阴影效果的Button。

效果图

P1

使用

使用方法和Button一样
有的文章说FloatingActionButton在5.x版本上有Bug,没有阴影效果,我个人理解是因为SDK版本不同,对应效果也有所不同,而不是Bug,如果非想要5.x的系统显示4.x效果,可以看下相关的文章。

导入SDK

用前先导入依赖

compile 'com.android.support:design:23.1.1'

布局

<android.support.design.widget.FloatingActionButton
    android:id="@+id/fab"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@android:drawable/ic_dialog_email" />
2017-08-06 17:34:13 u013284706 阅读数 415
  • 19年录制HTML5/CSS3教程js视频教程电商项目综合实战

    * * 课程版本:这是一套综合html+css+html5+css3+js所有前端必备知识点的电商项目实战视频教程,本套课程分为6章26节。 * 核心内容 * * * * 深度讲解仿百度搜索下拉提示及防抖函数 * 深度讲解绝对定位布局实现商品二级分类 * 深度剖析轮播图实现原理 * 详解商品秒杀专区倒计时 * 本地json数据模拟前后端数据交互 * 深入了解悬浮菜单、滚动监听、返回顶部功能 * 完整学习路线推荐

    125 人正在学习 去看看 张颜源

1.MD 库中的一个浮动按钮

浮动按钮

<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_margin="@dimen/fab_margin"
        android:onClick="fabClick"
        app:backgroundTint="@android:color/holo_blue_dark"
        app:srcCompat="@mipmap/icon_serch" />
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
2015-01-24 16:36:00 llp1992 阅读数 6944
  • 19年录制HTML5/CSS3教程js视频教程电商项目综合实战

    * * 课程版本:这是一套综合html+css+html5+css3+js所有前端必备知识点的电商项目实战视频教程,本套课程分为6章26节。 * 核心内容 * * * * 深度讲解仿百度搜索下拉提示及防抖函数 * 深度讲解绝对定位布局实现商品二级分类 * 深度剖析轮播图实现原理 * 详解商品秒杀专区倒计时 * 本地json数据模拟前后端数据交互 * 深入了解悬浮菜单、滚动监听、返回顶部功能 * 完整学习路线推荐

    125 人正在学习 去看看 张颜源

Android 悬浮按钮的简单实现


package com.example.doinbackground;

import android.app.Activity;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.Button;

public class MainActivity extends Activity {
	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		final Button bn = (Button) findViewById(R.id.bn);
		bn.setOnTouchListener(new OnTouchListener() {
			int[] temp = new int[] { 0, 0 };

			public boolean onTouch(View v, MotionEvent event) {
				int eventaction = event.getAction();

				int x = (int) event.getRawX();
				int y = (int) event.getRawY();

				switch (eventaction) {

				case MotionEvent.ACTION_DOWN: // touch down so check if the
					temp[0] = (int) event.getX();
					temp[1] = y - v.getTop();
					break;

				case MotionEvent.ACTION_MOVE: // touch drag with the ball
					v.layout(x - temp[0], y - temp[1], x + v.getWidth()
							- temp[0], y - temp[1] + v.getHeight());

					// v.postInvalidate();
					break;

				case MotionEvent.ACTION_UP:
					break;
				}

				return false;
			}

		});
	}
}


android 悬浮按钮

阅读数 10899

没有更多推荐了,返回首页