justdoit --ViewPager_Annotation

今天晚上电脑的转接口又出了问题,电脑一直联不了网;刚好手头的工作也告一段落了。好吧,择日不如撞日,今天就来写博客总结一下最近的学习经历吧。有些东西经常用却从未总结过,而有些东西是第一次接触,就通过一些列博客来做备忘吧!

一.android ViewPager滑动效果

首先,翻看developer文档,会发现常用的滑动效果有三种,分别是:default(默认效果),ZoomOut,以及Depth。而之所以要将这些呢,是因为LZ个人认为,对用户提供可选择的空间,让他选择一种自己喜欢的切换方式,会比较好。或者说,一种动效用太久了,来换另一种尝试一下,总比一成不变要来的好很多。而至于ViewPager切换动效使用也很简单。只需要在你的ViewPager实例调用setPageTransformer(true,DepthPageTransformer.getInstance())即可,第二个参数为你传入的工具类的静态工厂产生的实例,而默认效果即使第二个参数值为null。因为这个比较简单,所以直接贴上代码。

package wenyue.justdoit.util;

import android.support.v4.view.ViewPager;
import android.view.View;

public class DepthPageTransformer implements ViewPager.PageTransformer {
private static float MIN_SCALE = 0.75f;

private static DepthPageTransformer depthPageTransformer = new DepthPageTransformer();

private DepthPageTransformer() {

}

public  static DepthPageTransformer getInstance() {

    return depthPageTransformer;

}

public void transformPage(View view, float position) {
    int pageWidth = view.getWidth();

    if (position < -1) { // [-Infinity,-1)
        // This page is way off-screen to the left.
        view.setAlpha(0);

    } else if (position <= 0) { // [-1,0]
        // Use the default slide transition when moving to the left page
        view.setAlpha(1);
        view.setTranslationX(0);
        view.setScaleX(1);
        view.setScaleY(1);

    } else if (position <= 1) { // (0,1]
        // Fade the page out.
        view.setAlpha(1 - position);

        // Counteract the default slide transition
        view.setTranslationX(pageWidth * -position);

        // Scale the page down (between MIN_SCALE and 1)
        float scaleFactor = MIN_SCALE
                + (1 - MIN_SCALE) * (1 - Math.abs(position));
        view.setScaleX(scaleFactor);
        view.setScaleY(scaleFactor);

    } else { // (1,+Infinity]
        // This page is way off-screen to the right.
        view.setAlpha(0);
    }
}
}

接下来是ZoomOut效果的实现

package wenyue.justdoit.util;

import android.support.v4.view.ViewPager;
import android.view.View;

public class ZoomOutPageTransformer implements ViewPager.PageTransformer {
private static final float MIN_SCALE = 0.85f;
private static final float MIN_ALPHA = 0.5f;

  private static ZoomOutPageTransformer zoomOutPageTransformer = new     ZoomOutPageTransformer();

private ZoomOutPageTransformer() {

}

public  static ZoomOutPageTransformer getInstance() {

    return zoomOutPageTransformer;

}

public void transformPage(View view, float position) {
    int pageWidth = view.getWidth();
    int pageHeight = view.getHeight();

    if (position < -1) { // [-Infinity,-1)
        // This page is way off-screen to the left.
        view.setAlpha(0);

    } else if (position <= 1) { // [-1,1]
        // Modify the default slide transition to shrink the page as well
        float scaleFactor = Math.max(MIN_SCALE, 1 - Math.abs(position));
        float vertMargin = pageHeight * (1 - scaleFactor) / 2;
        float horzMargin = pageWidth * (1 - scaleFactor) / 2;
        if (position < 0) {
            view.setTranslationX(horzMargin - vertMargin / 2);
        } else {
            view.setTranslationX(-horzMargin + vertMargin / 2);
        }

        // Scale the page down (between MIN_SCALE and 1)
        view.setScaleX(scaleFactor);
        view.setScaleY(scaleFactor);

        // Fade the page relative to its size.
        view.setAlpha(MIN_ALPHA +
                (scaleFactor - MIN_SCALE) /
                (1 - MIN_SCALE) * (1 - MIN_ALPHA));

    } else { // (1,+Infinity]
        // This page is way off-screen to the right.
        view.setAlpha(0);
    }
}
}

而一些具体的动效就可以通过在工具类里面设置相应的参数来实现。这里就不详细列举了。接下来,就来写一下关于自定义控件的一些事吧。好吧,我也是醉了,为了限制篇幅,重写一篇博客吧!

时间: 2024-11-26 05:24:18

justdoit --ViewPager_Annotation的相关文章

我的app——JustDoIt

好吧,现在来介绍一下我的一个app吧,名字叫JustDoIt.是一款番茄时钟类型的app.我想很快就要把它发布了.说不上开心或者不开心.首先它并非我的第一个app,之所以拿出来介绍,可能是想以后做得更好吧,相比于以前至少我的能力和美感都有了一定的提升. 图标可能有些呆萌(丑),还请见谅,因为所有都是LZ自己一个人做的,可能能力有限吧,不过我会努力的. 首先,这个是app的图标,红底白钩,象征待办事项与番茄. 接下来介绍一下JustDoIt的基本功能.首先进入的是任务列表模块,用户可以在此添加,删

我的app JustDoIt 番茄时钟

好吧,现在来介绍一下我的一个app吧,名字叫JustDoIt.是一款番茄时钟类型的app.我想很快就要把它发布了.说不上开心或者不开心.首先它并非我的第一个app,之所以拿出来介绍,可能是想以后做得更好吧,相比于以前至少我的能力和美感都有了一定的提升. 图标可能有些呆萌(丑),还请见谅,因为所有都是LZ自己一个人做的,可能能力有限吧,不过我会努力的. 首先,这个是app的图标,红底白钩,象征待办事项与番茄. 接下来介绍一下JustDoIt的基本功能.首先进入的是任务列表模块,用户可以在此添加,删

一步一步理解线段树——转载自JustDoIT

一步一步理解线段树 目录 一.概述 二.从一个例子理解线段树 创建线段树 线段树区间查询 单节点更新 区间更新 三.线段树实战 -------------------------- 一 概述 线段树,类似区间树,它在各个节点保存一条线段(数组中的一段子数组),主要用于高效解决连续区间的动态查询问题,由于二叉结构的特性,它基本能保持每个操作的复杂度为O(logn). 线段树的每个节点表示一个区间,子节点则分别表示父节点的左右半区间,例如父亲的区间是[a,b],那么(c=(a+b)/2)左儿子的区间

leetcode LRU Cache

题目链接.实现一个数据结构用于LRU,最近最少使用,O(1)插入和删除.关于LRU的基本知识可参考here. 先推荐JustDoIT的. 下面是我自己实现的. class LRUCache{ public: //146LRU Least Recently Used int LRUsize; struct LRUNode { int key; int value; LRUNode *pre, *next; LRUNode(int x, int y): key(x), value(y), pre(N

Spring 事务管理

<?xml version="1.0" encoding="UTF-8"?> <beans  xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema

android sqlite database

好吧,现在来看一下在android里面使用sqlite数据库的一些基本操作吧. 对于大多数app而言对数据库的要求很简单,无非CURD,仅此而已.而我个人比较喜欢将所要使用的相应数据 表封装成javabean再进行操作,这样会显得逻辑比较清晰. 首先,我们写一个Entity: package wenyue.justdoit.entity; public class todoData { private String todotadkname; private int id; public int

自定义圆形进度条

关于控件呢,我想大家应该都很熟悉了吧,android应用开发MVC架构中,控件担任着至关重要的作用,感觉可以说是基于控件的事件模型人机交互的基础吧.这种特性感觉在wpf开发中体现得更为直接,感兴趣的同学可以去了解一下.而android框架自身就已经给我们提供了很多控件.那么问题来了?为什么有那么多控件可以用,你还要去屑自定义控件呢?是因为大家闲的蛋疼吗?显然不是.个人认为只要有两方面吧,要么是觉得有些原生控件是在是丑得难以忍受(即使是在你已经自定义了他的shape,圆角,selector等一系列

预编译命令简单解释(转载)

我的blog是用开源的BlogEngine来架设的,有的时候为了满足自己的需求及要对源代码做一些修改.在我调试客户端代码的时候,不管是使用Firebug或者是Vs 2008来调试,看到的Javascript代码都是经过动态压缩过了的,这个系统有一个HttpHanddle是专门用来处理js文件请求的,在第一次请求的时候会对js代码进行压缩,去掉了注释换行符等不必要的字符,这样可以提高访问的速度,但是对调试非常的不利,相信我们谁都不愿意对着一堆压缩过了的JS代码做调试.于是我想到了C#的预编译指令,

[Leetcode] word search 单词查询

Given a 2D board and a word, find if the word exists in the grid. The word can be constructed from letters of sequentially adjacent cell, where "adjacent" cells are those horizontally or vertically neighboring. The same letter cell may not be us