自定义视图之----模仿酷狗音乐滑动关闭闭

package com.gxa.custom;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnTouchListener;

public class Customtoggle extends View implements OnClickListener,OnTouchListener
{
    private Paint paint;
    private Bitmap backBitmap,slideBitmap;
    private float slideLeft,slideMax;    //slideLeft:slideBitmap左侧的位置,slideMax:slideBitmap滑动的最大距离
    private boolean isOpen;//开关的状态
    private boolean isDrag;//是否滑动
    public Customtoggle(Context context, AttributeSet attrs) {
        this(context, attrs,0);
    }
    public Customtoggle(Context context) {
        this(context,null);
    }
    public Customtoggle(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        init();
    }
    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        setMeasuredDimension(backBitmap.getWidth(), backBitmap.getHeight());
    }
    private void init() {
        paint = new Paint();
        paint.setAntiAlias(true);
        backBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.togglebutton_background);
        slideBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.togglebutton_slide);
        slideMax = backBitmap.getWidth()-slideBitmap.getWidth();
        setOnClickListener(this);
        setOnTouchListener(this);
    }
    @Override
    protected void onDraw(Canvas canvas) {
        canvas.drawBitmap(backBitmap, 0, 0, paint);
        canvas.drawBitmap(slideBitmap, slideLeft, 0, paint);
    }
    
    /**
     * ontouch  返回值的问题
     * true  当前的触摸事件被消耗  
     * false  当前的触摸事件没有被消耗   分发出去了  activity  ontouchevent 
     */
    private float firstX;   //触摸的初始点
    private float preX;//上一次触摸的坐标
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        switch (event.getAction()) {
        case MotionEvent.ACTION_DOWN:
            isDrag = false;
            firstX = event.getX();
            preX = firstX;
            break;

        case MotionEvent.ACTION_MOVE:
            if (Math.abs(event.getX()-firstX)>5) {
                isDrag = true;
            }
            float distance = event.getX() - preX;  //滑动的距离
            slideLeft+=distance;
            preX = event.getX();
            flushView();
            break;
        case MotionEvent.ACTION_UP:
            if (isDrag) {
                if (slideLeft>slideMax/2) {
                    isOpen = true;
                }else{
                    isOpen = false;
                }
                flushStatus();
            }
            break;
        }
        return false;
    }
    private void flushStatus() {
        if (isOpen) {
            slideLeft = slideMax;
        }else{
            slideLeft = 0;
        }
        invalidate();
    }
    private void flushView() {
        slideLeft = (slideLeft>=0)?slideLeft:0;
        slideLeft = (slideLeft<=slideMax)?slideLeft:slideMax;
        invalidate();
    }
    @Override
    public void onClick(View v) {
        if (!isDrag) {
            isOpen = !isOpen;
            flushStatus();
        }
    }
}

时间: 2024-11-13 08:09:33

自定义视图之----模仿酷狗音乐滑动关闭闭的相关文章

Chisel辅助iOS 应用程序调试,MusicApp模仿酷狗4.0 UI框架

本文转载至 http://www.cocoachina.com/ios/20140825/9446.html Chisel Chisel集合了大量的LLDB 命令来辅助iOS 应用程序调试,并支持添加本地和自定义的命令.以下是其中所包含的一些命令,并对其适用于iOS还是OS X进行了区分: M13ProgressSuite 该项目包含了多种不同的风格的进程指示图,比如普通圆环形.分段圆形加载.圆形饼图加载以及条形加载等等,比如其中UINavigationBar的进程动画非常像苹果的Messag

QQ音乐/酷狗音乐锁屏控制实现原理

我实现的效果 混乱的锁屏控制 Android自4.0版本, 也就是API level 14开始, 加入了锁屏控制的功能, 相关的类是RemoteControlClient, 这个类在API level 21中被标记为deprecated, 被新的类MediaSession所替代. 我们的音乐App中最开始使用的是原生锁屏控制API, 说实话这个API不好用, 遇到了一些小坑, 最要命的是不同品牌的手机, 锁屏界面长的还不一样, 就连我自己都没见过原生4.0的锁屏控制界面是什么样的. 国内的手机厂

Qt实战之酷狗音乐

此项目仅仅实现实现基本功能: 界面的模仿. 歌词功能的实现.歌曲在线试听和下载. 专辑写真的播放. 在线歌词搜索.以及主要的button功能. 界面没有採用设计器. 所有手写规划.这里先放出效果图. 这段时间忙,等有空时,将又一次架构.一步一步带领新手写出简版酷狗音乐.实现MV等播放. 播放时的单词界面: 实现平滑滚动效果  当中背景写真来源于酷我音乐... 可点击进度条快进快退  .. 歌词会随之修改 . . 歌词支持拉动   鼠标在歌词部分按下后出现横线(可怜的鼠标没截图到. .. ) 然后

仿酷狗音乐播放器开发日志二十一 开发动态调色板控件(附源代码)

转载请说明原出处,谢谢~~ 上一篇仿酷狗日志结束后,整个换肤功能就仅仅剩下调色板功能没有做了.我本以为会非常easy.可是研究了酷狗的调色板功能后发现不是那么简单的事情.首先看一下酷狗的调色板的样子: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemh1aG9uZ3NodQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" > waterm

仿酷狗音乐播放器已开源!

转载请说明原出处,谢谢:http://blog.csdn.net/zhuhongshu/article/details/41037875 距离我发布测试版的Redrain音乐盒(仿酷狗播放器),现在正好刚2个月.博客留言和QQ群里也一直有网友关心这个小项目开源的问题.先感谢网友对这个小项目的支持.之前我一直担心版权问题而没有开源这个项目,因为我只是个在校大学生,不想惹麻烦,希望大家体谅! 关于这个Redrain音乐盒的发布程序的说明和使用方法,见<Redrain仿酷狗音乐播放器开发完毕,发布测试

关于仿酷狗音乐播放器开源:寻求一套音乐播放器素材,让仿酷狗开源

转载请说明原出处,谢谢~~ 距离公布測试版的仿酷狗音乐播放器.已经几个月过去了.期间非常多网友加我QQ来问我开源的问题,我也早有开源意向. 但我也一直没有得到可靠的信息,保证开源后没有不论什么问题. 所以我打算给这个软件全然换一套界面素材.放弃原来的酷狗素材. 这样开源也就没有不论什么问题了,问题是我个人PS水平太烂.仅仅会切切图.如今寻求一套完整的音乐播放器的素材,素材内容要全面,能够用来替代酷狗的素材. 假设有哪位朋友有这种素材,或者有时间能够做出一套素材让我使用,我将感激不尽.素材替换完成

酷狗音乐展示滚动歌词效果的控件实现

文章来自http://blog.csdn.net/zhaodecang 在音乐播放器项目中使用到酷狗音乐展示歌词的效果,需要支持修改字体.颜色.渐变色等功能 截图如下(效果不是很好,请下载Demo查看) 歌词绘制流程核心代码如下(具体实现过程请看Github源码) @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); // 中心Y坐标 float centerY = getHeight() / 2 + mTe

在线音乐播放器-----酷狗音乐api接口抓取

首先身为一个在线音乐播放器,需要前端和数据库的搭配使用. 在数据库方面,我们没有办法制作,首先是版权问题,再加上数据量.所以我们需要借用其他网络播放器的数据库. 但是这些在线播放器,如百度,酷狗,酷我等在线音乐播放器,是不会提供他们的数据库接口的,所以这个我们需要,在线抓取这些在线音乐播放器的接口,首先,这个事情,是属于违规的.是属于侵犯这些公司的版权的.所以,不能用于商业用途 我们以酷狗音乐为例子,抓取他的连接数据库的API接口 我是用的是谷歌,进入私密模式,因为在这种模式下,不会缓存歌曲 1

酷狗音乐7635 VIP去广告绿色清爽版

昨天,酷狗音乐官方又例行悄悄上架了最新包V7635,新版去掉了“附近”功能,这次又增加智能限速功能,同时优化加快了启动速度,每次总有新功能,推荐酷狗迷们下载更新! 酷狗音乐7.6新版特性:次世代音效:极智丽音.超重低音.纯净人声,混合电台.高品质电台.一键智能推荐.单曲智能推荐.观看真人演唱.传歌到手机.手机投放控制PC.音频输出支持ASIO等特性. 此VIP去广告绿色清爽版,由zd423专注持续修改,不带广告弹窗干扰 ,普通用户登陆为VIP会员,免费畅享VIP试听及下载加速.免登陆试听下载无损