• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >Android > Android5.0开发范例大全 读书笔记(三),android5.0范例

Android5.0开发范例大全 读书笔记(三),android5.0范例

作者:网友 字体:[增加 减小] 来源:互联网 时间:2017-05-26

网友通过本文主要向大家介绍了android5.0,android5.0新特性,android5.0系统下载,android5.0模拟器,android5.0系统手机等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

Android5.0开发范例大全 读书笔记(三),android5.0范例


(二)用户交互

2.14转发触摸事件

1.TouchDelegate很适合简单的触摸转发,它指定任意的矩形区域来向小视图转发触摸事件,其缺点是每个被转发的事件都会转发到代理视图的中间位置

public class TouchDelegateLayout extends FrameLayout {
    public TouchDelegateLayout(Context context) {
        this(context, null);
    }

    public TouchDelegateLayout(Context context, AttributeSet attrs) {
        this(context, attrs, 0);
    }

    public TouchDelegateLayout(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        init(context);
    }

    private CheckBox mCheckBox;

    private void init(Context context) {
        mCheckBox = new CheckBox(context);
        mCheckBox.setText("tap anywhere");
        addView(mCheckBox, new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT, Gravity.CENTER));
    }

    @Override
    protected void onSizeChanged(int w, int h, int oldw, int oldh) {
        if (w != oldw || h != oldh) {
            Rect rect = new Rect(0, 0, w, h);
            TouchDelegate touchDelegate = new TouchDelegate(rect, mCheckBox);
            setTouchDelegate(touchDelegate);
        }
    }
}

 2.自定义触摸转发

  在onTouch中改变event事件信息

 @Override
    public boolean onTouch(View v, MotionEvent event) {
        event.setLocation(event.getX(),event.getY()/2);
        scrollView.dispatchTouchEvent(event);
        return true;

    }

2.15阻止触摸窃贼

1. 调用requestDisallowTouchIntercept()方法,请求父控件不要截获当前的触摸事件

2.16创建拖放视图

拖1.使用DragShadowBuilder构造被拖动视图的外观

2.调用View.startDrag()开启拖动

 @Override
    public boolean onLongClick(View v) {
        View.DragShadowBuilder shadowBuilder=new View.DragShadowBuilder(v);
        v.startDrag(null, shadowBuilder, ((ImageView) v).getDrawable(),0);
        return true;
    }

放

3.通过OnDragListener.onDrag()监听拖动的事件,可以自定义一个视图实现listener接口,以下为核心代码

 @Override
    public boolean onDrag(View v, DragEvent event) {
        PropertyValuesHolder pvhX, pvhY;
        switch (event.getAction()) {
            case DragEvent.ACTION_DRAG_STARTED:
                pvhX = PropertyValuesHolder.ofFloat("scaleX", 0.5f);
                pvhY = PropertyValuesHolder.ofFloat("scaleY", 0.5f);
                ObjectAnimator.ofPropertyValuesHolder(this, pvhX, pvhY).start();
                setImageDrawable(null);
                mDropped = false;
                break;
            case DragEvent.ACTION_DRAG_ENDED:
                if (!mDropped) {
                    pvhX = PropertyValuesHolder.ofFloat("scaleX", 1f);
                    pvhY = PropertyValuesHolder.ofFloat("scaleY", 1f);
                    ObjectAnimator.ofPropertyValuesHolder(this, pvhX, pvhY).start();
                    mDropped = false;
                }
                break;
            case DragEvent.ACTION_DRAG_ENTERED:
                pvhX = PropertyValuesHolder.ofFloat("scaleX", 0.75f);
                pvhY = PropertyValuesHolder.ofFloat("scaleY", 0.75f);
                ObjectAnimator.ofPropertyValuesHolder(this, pvhX, pvhY).start();
                break;
            case DragEvent.ACTION_DRAG_EXITED:
                pvhX = PropertyValuesHolder.ofFloat("scaleX", 0.5f);
                pvhY = PropertyValuesHolder.ofFloat("scaleY", 0.5f);
                ObjectAnimator.ofPropertyValuesHolder(this, pvhX, pvhY).start();
                break;
            case DragEvent.ACTION_DROP:
                Keyframe frame0=Keyframe.ofFloat(0f,0.75f);
                Keyframe frame1=Keyframe.ofFloat(0.5f,0f);
                Keyframe frame2=Keyframe.ofFloat(1f,0.75f);
                pvhX = PropertyValuesHolder.ofKeyframe("scaleX", frame0,frame1,frame2);
                pvhY = PropertyValuesHolder.ofKeyframe("scaleY", frame0, frame1, frame2);
                ObjectAnimator.ofPropertyValuesHolder(this, pvhX, pvhY).start();
                setImageDrawable((Drawable) event.getLocalState());
                mDropped=true;
                break;
            default:
                return false;

        }
        return true;
    }

2.17构建导航Drawer

1.DrawerLayout只在Android支持库中提供,关键点在于设置gravity的属性

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <FrameLayout
        android:id="@+id/middle"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>
    <ListView
        android:id="@+id/left"
        android:layout_width="240dp"
        android:layout_height="match_parent"
        android:layout_gravity="left"
        android:background="#555"/>
    <LinearLayout
        android:id="@+id/right"
        android:layout_width="240dp"
        android:layout_height="match_parent"
        android:layout_gravity="right"
        android:orientation="vertical"
        android:background="#ccc">
        <TextView
            android:layout_width="wrap_content"
            android:



 
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Android 5.0(包含5.0以下版本) 获取栈顶应用程序包名,android包名
  • Android5.0开发范例大全 读书笔记(五),android5.0范例
  • Android5.0开发范例大全 读书笔记(六),android5.0范例
  • Android5.0开发范例大全 读书笔记(三),android5.0范例
  • Android5.0开发范例大全 读书笔记(四),android5.0范例
  • android 5.0后对于apk 跑32 64 的逻辑
  • Android 5.0 Settings源码简要分析
  • Android5.0新特性-Material Design
  • Android5.0之Toobar的使用
  • Android 6.0 系统棉花糖新的特性和功能

相关文章

  • 2017-05-26仿拉手团购App4--我的模块,拉手团购app4--
  • 2017-05-26Android 数据库SQLite 写入SD卡,androidsqlite
  • 2017-05-26Android开发学习——搭建开发环境,android搭建
  • 2017-05-26AndroidStudio项目打包成jar,androidstudiojar
  • 2017-05-26Android种使用Notification实现通知管理以及自定义通知栏(Notification示例四),自定义notification
  • 2017-05-26Android开发日常-listVIiew嵌套webView回显阅读位置,-listviiewwebview
  • 2017-05-26flexboxlayout,flexbox
  • 2017-05-26Android中AlarmManager使用示例(持续更新,已经更改),alarmmanager
  • 2017-05-26追踪表满导致keepalived vip 不通!
  • 2017-05-26androd 获得wifi列表,androdwifi列表

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 7.4 Android 调用 WebService
    • android am命令以及hotkey文件的编写,
    • 如何让光标处于EditText的末尾,光标edittext末尾
    • Android开发学习——android存储,android开发存储
    • Android中通过访问本地相册或者相机设置用户头像,android用户头像
    • Android6.0系统增加那些新特性
    • Mac搭建Android开发环境,mac搭建android
    • 认识Activity,创建第一个android应用,activityandroid
    • Charles Proxy 4.1.2 破解版,charles4.1.2
    • 浅谈Android编码规范及命名规范,浅谈android编码规范

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有