自定义view

滑动返回库SwipeBackLayout解析

♀尐吖头ヾ 提交于 2019-12-02 12:57:21
这个库本身并没有很难, 但是它在交互方面的思想是超前的, 虽然现在我们对滑动返回已经习惯了, 但是在当时还是很新鲜的交互方式. 如果要我实现滑动返回, 我第一个看的一定是DrawerLayout的实现, 它用了ViewDragHelper. 接下来我们结合源码解析SwipeBackLayout是如何做到让我们能使用滑动返回的手势的. SwipeBackActivity 用过的都知道, 想让一个activity具有滑动返回的手势, 需要让它继承SwipeBackActivity. public class SwipeBackActivity extends FragmentActivity implements SwipeBackActivityBase SwipeBackActivity继承FragmentActivity, 其实就相当于在正常的继承关系之间插了它自己进去. 至于SwipeBackActivityBase则是一个定义好的接口, 在SwipeBackActivity中实现 public interface SwipeBackActivityBase { /** * @return the SwipeBackLayout associated with this activity. */ public abstract SwipeBackLayout

SwipeBackLayout 和SwipeBackActivity最完全解析

情到浓时终转凉″ 提交于 2019-12-02 12:54:45
大屏幕时代的到来,目前大部分的APP都支持侧滑关闭Activity及切换Activity的动画效果,这些效果极大的提高了用户体验。比如苹果的safari中的滑动返回操作。 我也参考了github上面的 ikew0ng/SwipeBackLayout 项目写了一个自己的swipebacklayout。在源码的基础上,添加了一些注释,并没有对源码做出太大改动。 项目github地址: https://github.com/CameloeAnthony/SwipeBackActivity 下面对源码进行学习和分析: (1)使用swipebackActivitity ,如图,只需要继承SwipeBackActivity, 并且注意在manifest文件中定义theme,添加如下属性: (2)来看看swipeBackActivity是怎么实现的: package nsu.edu.com.library; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; /** * all the subClass extends from this class to use swipe-back function */ public class

Android 打造完美的侧滑菜单/侧滑View控件

我的梦境 提交于 2019-12-02 12:43:10
概述 Android 打造完美的侧滑菜单/侧滑View控件,完全自定义实现,支持左右两个方向弹出,代码高度简洁流畅,兼容性高,控件实用方便. 详细 代码下载: http://www.demodashi.com/demo/12148.html 一.概述 在App中,经常会出现侧滑菜单,侧滑滑出View等效果,虽然说Android有很多第三方开源库,但是实际上 咱们可以自己也写一个自定义的侧滑View控件,其实不难,主要涉及到以下几个要点: 1.对Android中Window类中的DecorView有所了解 2.对Scroller类实现平滑移动效果 3.自定义ViewGroup的实现 下面现在就来说说这里咱们实现侧滑View的基本思路吧,这里我采用的是自定义一个继承于RelativeLayout的控件叫做XCSlideView类吧。 首先从布局文件中inflater出来一个menuView,然后通过addView的方法,将该侧滑View添加到自定义的控件View中 怎么让XCSlideView 这个侧滑View 隐藏到屏幕之外呢?很简单通过ScrollTo方法,移动一个屏幕宽度的距离即可,这里以 左侧滑出为例吧,只需要这样 XCSlideView.this.scrollTo(mScreenWidth, 0);mScreenWidth是屏幕宽度。下面还要处理的就是底下的

Android 详解实现全局右滑返回 仿IOS(带demo)

和自甴很熟 提交于 2019-12-02 12:39:07
Android 详解实现全局右滑返回 仿IOS(带demo) 前言 最终效果 实现过程 一、自定义控件 二、写一个BaseActivity 三、Activity继承 四、配置Style GitHub 前言 虽然现在好多手机都有了全面屏手势,但还有很大一部分用户的Android设备没有全面屏手势的,而IOS的端一直以来都有一个备受好评的功能 全局右滑返回 。而且很多时候开一个项目,会有Android和IOS版本的同时进行,而设计师一般的原型都会根据IOS设备来做,而这个时候,这种IOS固有的操作逻辑,会使得用户在Android端产生不适应感。 所以,这里有一份帮助你所有项目直接改造成全局右滑返回的Demo,你受的了吗 最终效果 用到的控件是我上一个博客内容里用到的自定义控件: android 右滑缩小页面(带阴影背景)侧边栏逐渐变大 是这个控件做的延伸,所以也能刚好适合一些需要在首页做划动侧边栏的项目; 实现过程 一、自定义控件 国际惯例,把这个自定义控件拉出来走一遍: PageEnabledSlidingPaneLayout 由于在侧划的主页经常还需要放置其他一些需要滚动的控件或者翻页的viewpage,所以需要这个侧划布局还可以避免划动冲突。 import android . content . Context ; import android . support . v4 .

[android]手把手通过一个类实现侧滑退出activity功能

元气小坏坏 提交于 2019-12-02 12:35:36
1、概述 *本文代码 非原创 来自于 一个 叫做NBAPlus的开源代码中. https://github.com/SilenceDut/NBAPlus 有兴趣的小伙伴们可以好好去了解下,推荐下,真™可以的~ 2、简单描述下,所谓侧滑退出功能便是手指在界面左边或者右边滑动可以执行关闭界面的方法。换咱程序员的说话就是特么的:滑动 activity 执行 finish 方法。 效果图: 2、主要实现方法 通过 ViewDragHelper 来检测到屏幕侧滑,然后通过内置接口传递给 acitivity 触发了侧滑事件,通知其关闭。 额,就是这么简单明了的一句概况了。 来来来代码代码看代码~喵了个巴拉的,具体细节看代码。因为感觉写太多细节的话,我自己都懒得去看。(咳咳……不是我懒不是我懒……嗯的,就是这样。) 3、代码 1、实现侧滑删除,这里的方法是先要创建一个监听侧滑的自定义布局. public class SwipeBackLayout extends FrameLayout { //自定义控件 必备俩个构造函数 public SwipeBackLayout (Context context) { this (context, null ); //引用俩个参数的构造方法,目的是将三个构造方法连接起来. } public SwipeBackLayout (Context context,

仿微信的侧滑退出Activity

北慕城南 提交于 2019-12-02 12:20:24
用苹果的小伙伴们都会知道,ios系统退出当前的页面只需要向右边侧滑,这是一个非常好的用户体验,但是Android官方并没有出具有这有性质的Activity,所以我们只能辛苦辛苦,自己动手写一个具有这种性质的Activity。 其实写这个自定义的Activity还是非常简单的。我们主要用到一个这个控件SlidingPaneLayout,使用这个控件来模拟我们的这种效果的好处是我们基本不用去管一些手势事件冲突问题,SlidingPaneLayout已经帮我们做好了; public abstract class BaseActivity extends AppCompatActivity implements SlidingPaneLayout . PanelSlideListener { @Override protected void onCreate (Bundle savedInstanceState) { initSwipeBackFinish(); super .onCreate(savedInstanceState); } /** * 初始化滑动返回 */ private void initSwipeBackFinish () { if (isSupportSwipeBack()) { SlidingPaneLayout slidingPaneLayout = new

【Android】Activity右滑返回的实现

孤者浪人 提交于 2019-12-02 12:15:52
Activity右滑返回的实现 转载请注明出处: http://blog.csdn.net/h28496/article/details/49227419 1. 滑动返回的效果 效果描述: 从左侧向右滑动将当前Activity向右移动,并显示出下方的Activity。 在移动的过程中,透明部分有透明度的变化。 2. 如何使得Activity滑动? 1. 要滑动的是什么? 我们要滑动的是整个Activity的视图。不太清楚Activity视图结构的可以看一下下面这张图: 一般在代码中通过setContentView(View view)把view放到了android.R.id.content对应的FrameLayout中。 与该FrameLayout平级的还有它下面那些View,比如ActionBar等。 如果我们要使得整个Activity的界面滑动,就需要使得根布局decorView滑动。 通过在Activity中用如下代码可以获得decorView: View decorView = getWindow().getDecorView(); 2. 具体怎么滑动? 当手指按下时,获得按下时的坐标(xDown, yDown) 手指移动时,获得当前手指坐标(xCurrent, yCurrent),可以得到水平移动距离 distanceX = xCurrent - xDown

DRF之Jwt 实现自定义

泪湿孤枕 提交于 2019-12-02 07:07:20
""" 1、drf-jwt手动签发与校验 :只是做token的产生和提高效率 缓解服务器的压力 检验用户的的合法性(tokenbase64反解析) 2、drf小组件:过滤、筛选、排序、分页 => 针对与群查接口 """   一.drf-jwt手动签发与校验     事前准备工作     1.url 获取token 用户登录成功就可以获取token     model from django.db import models # Create your models here. # 重点: 如果我们自定义user表, 再另一个项目中采用原生的User表,完成数据库迁移时,可能会失败 #如何做*(1) 卸载Django 重新装 # (2) 将Djjango中的 contrib 下面的admin 下面的数据库迁移命令记录清空 from django.contrib.auth.models import AbstractUser class User(AbstractUser): #继承AbstractUuser) mobile = models.CharField(max_length=11,unique=True) # 自定义创建表名 class Meta: db_table = 'api_user' verbose_name = '用户表' verbose_name_plural =

自定义模态框

廉价感情. 提交于 2019-12-02 05:53:14
本文通过示例代码详细介绍了小程序自定义模态框,需要的朋友可以参考下 点击"模拟 Dialog"按钮,实现如图所示的样式 1.html部分代码如下: <button class="weui-btn" type="default" bindtap="openDialog">模拟 Dialog</button> <view class="weui-demo-dialog {{istrue ? 'weui-demo-dialog_show' : ''}}" catchtouchmove="true"> <view class="weui-mask" bindtap="closeDialog"></view> <view class="weui-dialog__wrp" bindtap="closeDialog"> <view class="dialog_box" catchtap="stopEvent"> <!-- 标题文字 --> <view class="model__title">注册成功</view> <!-- 提示icon --> <image class="model__img" src="../../../images/finish.png" mode="aspectFill" style="max-width:100%;"/> <!-- 按钮 --> <view class

Android 自定义View 使用ShapeDrawable加BitmapShader实现图片局部放大效果

旧城冷巷雨未停 提交于 2019-12-02 05:27:53
一些说明: > BitmapShader中放置的Bitmap是原图的缩放后的 > ShapeDrawable的setBounds() 仅仅是设置一块shape的外矩形区,如用英语表示:size-region > ShapeDrawable中图片默认draw的原点为:相对于图片自身的坐标(0,0) > ShapeDrawable如果要对图片进行矩阵变化,可以使用它的shader的setLocalMatrix() > ShapeDrawable如要显示成图片某一点为原点,需要设置它的shader的matrix,该matrix进行平移 > 因shader中的图片进行了缩放,所以平移时的坐标点也要乘以缩放值 关于上面的效果图说明: > 上面的不规则图片,是由canvas绘制三个图形而来的,paint设置了shader > 下方绘制了一张原图,放大镜效果:在指定下方的原图区内,有放大效果 > 其它黑色背景区内所看到的放大镜效果:只是因shader的TileMode为REPEAT package com.stone.shader.view; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics