安卓2.3.1版本中如何找到ripple文件夹详细信息版本号

T-Ripple智能手表表达 2.6.0(三代表专用Android版)软件如何使用?有人用过吗?_百度知道
T-Ripple智能手表表达 2.6.0(三代表专用Android版)软件如何使用?有人用过吗?
我有更好的答案
下载注册表达APP之后,首屏是设备页面,一些入手必读的教程和动态都在这一页显示,右上角是链接智能设备的选项,点击进去然后点击相对应的色彩模块进行绑定就行,对话页面显示的是和表达上好友的对话,发现页面是表盘商店等一些特色小功能,可以自己点点看,其中纸飞机和寻宝还挺好玩的。
采纳率:66%
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。没有更多推荐了,
不良信息举报
举报内容:
[Android L]Android L RippleView 效果 低版本实现
举报原因:
原文地址:
原因补充:
最多只允许输入30个字
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!Android Ripple 按钮水波纹效果(二)优化
上一篇中我们讲了自定义ripple 水波纹效果,先来回顾一下效果吧!
看了以后感觉没甚么问题,我一开始也觉得很满意了,那好,我们拿Android 5.0自带的效果来对比一下
发现了不同之处没?点击中间的时候是看不出什么区别,但是点击两边的时候,就很明显了,我们自定义的效果,波纹向两边同速度的扩散,所以就会出现,如果点击点不在中心的时候,距离短的一边波纹先到达,而距离长的一边后到达,不能同时到达边缘!而系统自带的则不存在这种情况,所以这是一个优化点;另一个优化点是:我们自定义的效果,在波纹全部覆盖以后,按钮的选中效果没了。
有两处需要优化的
1、实现不管是否点击中间点都能实现波纹同步到达边缘
2、当手指未松开时,选中效果不消失
第二点好实现,我们主要讲一下第一点,
第一点我们观察系统的效果,看似两边速度不一致导致的,其实我们知道实现原理的话,很容易想到,它是不断改变圆的圆心来实现,我们上一篇中的实现方法是圆形固定,就是在我们手指按下的位置,而不断改变半径来实现,
很明显,这里也需要改变半径来实现,我记得我们上一篇中半径的最大值是需要计算,而这种效果是不需要计算的,因为其最大值是固定的,就是按钮对角线的一半!
确定了半径的最大值,我们还需要确定圆心X、Y的偏移量,相当于步长吧,其圆心从按下的点到按钮正中间的时间因该是和半径从0到最大值的时间保持一致,所以我们可以通过一下代码来获取圆心的偏移量和最大半径。
mRadius = (float) Math.sqrt(mRect.width() / 2 * mRect.width() / 2 + mRect.height() / 2 * mRect.height() / 2)
mStepRadius = mRadius / mCycle
mStepOriginX = (mRect.width() / 2 - mInitX) / mCycle
mStepOriginY = (mRect.height() / 2 - mInitY) / mCycle
全部实现代码
package eyeclip.
import android.content.C
import android.graphics.C
import android.graphics.P
import android.graphics.R
import android.support.v4.view.MotionEventC
import android.support.v4.view.ViewC
import android.util.AttributeS
import android.view.MotionE
import android.widget.LinearL
* Created by moon.zhong on .
public class RippleLinearLayout extends LinearLayout {
private int mInitX;
private int mInitY;
private float mCurrentX;
private float mCurrentY;
private int mW
private int mH
private float mR
private float mStepR
private float mStepOriginX;
private float mStepOriginY;
private float mDrawR
private boolean mDrawF
private final int DURATION = 150;
private final int FREQUENCY = 10;
private float mC
private final Rect mRect = new Rect();
private boolean mPressUp = false;
private Paint mRevealPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
public RippleLinearLayout(Context context) {
super(context);
initView(context);
public RippleLinearLayout(Context context, AttributeSet attrs) {
super(context, attrs);
initView(context);
public RippleLinearLayout(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
initView(context);
private void initView(Context context) {
mRevealPaint.setColor(0x);
mCycle = DURATION / FREQUENCY;
final float density = getResources().getDisplayMetrics().
mCycle = (density*mCycle);
mDrawFinish = true;
protected void onDraw(Canvas canvas) {
if (mDrawFinish) {
super.onDraw(canvas);
canvas.drawColor(0x);
super.onDraw(canvas);
if (mStepRadius == 0) {
mDrawRadius = mDrawRadius + mStepR
mCurrentX = mCurrentX + mStepOriginX;
mCurrentY = mCurrentY + mStepOriginY;
if (mDrawRadius & mRadius) {
mDrawRadius = 0;
canvas.drawCircle(mRect.width() / 2, mRect.height() / 2, mRadius, mRevealPaint);
mDrawFinish = true;
if (mPressUp)
invalidate();
canvas.drawCircle(mCurrentX, mCurrentY, mDrawRadius, mRevealPaint);
ViewCompat.postInvalidateOnAnimation(this);
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
mRect.set(0, 0, getMeasuredWidth(), getMeasuredHeight());
private void updateDrawData() {
mRadius = (float) Math.sqrt(mRect.width() / 2 * mRect.width() / 2 + mRect.height() / 2 * mRect.height() / 2);
mStepRadius = mRadius / mC
mStepOriginX = (mRect.width() / 2 - mInitX) / mC
mStepOriginY = (mRect.height() / 2 - mInitY) / mC
mCurrentX = mInitX;
mCurrentY = mInitY;
public boolean onTouchEvent(MotionEvent event) {
final int action = MotionEventCompat.getActionMasked(event);
switch (action) {
case MotionEvent.ACTION_DOWN: {
mPressUp = false;
mDrawFinish = false;
int index = MotionEventCompat.getActionIndex(event);
int eventId = MotionEventCompat.getPointerId(event, index);
if (eventId != -1) {
mInitX = (int) MotionEventCompat.getX(event, index);
mInitY = (int) MotionEventCompat.getY(event, index);
updateDrawData();
invalidate();
case MotionEvent.ACTION_CANCEL:
case MotionEvent.ACTION_UP:
mStepRadius = (int) (5 * mStepRadius);
mStepOriginX = (int) (5 * mStepOriginX);
mStepOriginY = (int) (5 * mStepOriginY);
mPressUp = true;
invalidate();
return super.onTouchEvent(event);
private int getMax(int... radius) {
if (radius.length == 0) {
int max = radius[0];
for (int m : radius) {
if (m & max) {
public boolean performClick() {
postDelayed(new Runnable() {
public void run() {
RippleLinearLayout.super.performClick();
return true;
效果图对比
这篇主要是对上一篇的内容进行优化,当然你觉得不优化也行!
没有更多推荐了,
不良信息举报
举报内容:
Android Ripple 按钮水波纹效果(二)优化
举报原因:
原文地址:
原因补充:
最多只允许输入30个字
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!Ripple 入门
我的图书馆
Ripple 入门
一、什么是 Ripple?Ripple 是一种用以进行金融交易的互联网协议,该协议可以用来即时免费地以任何币种向世界的任何角落转账。二、什么是互联网协议?互联网协议是互联网上的计算机为了协助互相通讯所遵守的一套规则。三、互联网协议的例子HTTP 协议(超文本传输协议)是建立和共享网站的协议。HTTP 协议的出现催生了互联网。SMTP 协议(简单邮件传输协议)是一套在互联网上发送邮件的规则。SMTP 协议的发明使得人们可以发送电子邮件。RTXP 协议(Ripple 交易协议)是一套在互联网上进行交易的协议。RTXP 协议的发明使得人们可以在分布式网络中转移价值。就像可以发送钱的邮件!四、互联网协议属于谁?互联网协议没有归属者。发明互联网协议的目的是设置一种标准。任何人在编制软件或商业决策时都可以选择任意一种协议。Ripple 和电子邮件一样,免费、开源,不属于任何人,也没有中心管理者。五、使用 Ripple 进行金融交易有哪些优势?使用Ripple 这样开源共享的互联网协议进行金融交易有以下一些优势:1)支付费用更低。因为 Ripple 不属于任何人,所以进行支付的成本就更低。通过 Ripple接收款项的商家就可以节省几十亿美元的费用。2)支付更迅速。 因为 Ripple 交易是自动进行的,所以可以在几秒内就完成支付。Ripple 让资金到账更迅速,因此也就加速了经济活动。&3)外汇兑换更简单。Ripple 协议让外汇兑换无需支付额外费用。这也使得国际商贸活动更简单,利润更高。4)金融服务可用性更高。只要有互联网连接就可以使用 Ripple,所以使用 Ripple 而提供的金融服务可以覆盖银行数量不足地区的数十亿人口。5)金融服务互联性更强。Ripple 通过创造一个共享的货币协议来让独立的公司之间进行交易更加简单。这减少了金融系统中的阻力,也增强了系统的效率。六、Ripple: &入门支付技术比通讯技术落后好几十年在互联网早期,人们只能在有限的、封闭的网络中发送信息。如果你在1989年之前使用CompuServe,那么你只能向其他 CompuServe 用户发送邮件。如果使用 Genie,那就只能向其他Genie 用户发送信息。在那个时代,电子邮件还没有诞生,也没有标准化的协议来将每个互联网运营商的邮件系统连接起来。早期的电子邮件运营商仿佛以有围墙的方式运作当被普通人称作“电子邮件”的 SMTP (简单邮件传输协议)诞生的时候,它就可以把许多不同的邮件系统连接成一个单一而又相互连接的系统。SMTP 协议的作用在于将独立的系统连接起来——而这正是设计互联网的目的。互相连接起来的邮件系统的优势明显、势头强劲,因此SMTP 便迅速成为了邮件的标准协议。今天,不互联的邮件系统已经成了无稽之谈。SMTP &使得
发送邮件但是今天的支付系统还和上个世纪八十年代的邮件系统一样——依然封闭而没有互联。如果你是富国银行的客户,那么你只能够轻易、免费地向其它富国银行的客户转账。如果你有一张美国运通卡,那么你也只能在接受运通卡的商家购买商品。为了把这些孤立的支付系统连接起来,我们就需要增设许多结算中心。你怎样才能把钱从富国银行的网络转账到大通银行或是贝宝的网络呢?你可以使用SWIFT (即电汇的方式)。这种方式不但需要第三方支持,而且还需要为这笔交易支付费用。现在的金融系统类似于早期的邮件系统当大部分的信息传输已经免费了的时候,金钱的转账依然有不少阻碍。电汇一次的手续费要15美金,而汇款的费用则大约是7%。信用卡公司也对每一笔网上交易收取2%的费用。亚马逊每年都需要支付数十亿美元的交易费用。互联网已经有了四十年的历史,而在互联网通讯和互联网金融之间已经有了巨大的差距:互联网通讯已经通过点对点的分布式网络被扁平化了。但是交易结算与交割在本质上需要集中化,这就使得金融交易仍然运行在上个世纪五十到七十年代(前互联网时代)的基础之上。在电子时代,金钱实际上只是另一种信息:存储在电子总账中的借贷信息。那么为什么在计算机转账和传递信息的方式之间会有如此大的差距呢?但支付仍主要处在集中化的网络中金钱转账缓慢、昂贵、复杂。原因是运行集中化专有软件的独立网络和独立支付系统过多。集中化的网络都很昂贵——他们不但需要钱来雇佣员工,购买服务器,而且还需要盈利。七、Ripple:分布式结算与交割Ripple 是一种关于金钱的通用协议,它可以让独立系统像邮件系统那行互联起来。 正如同 SMTP &为电子邮件创造了一个共享的标准环境一样,Ripple &也为支付创造了共享的标准。Ripple 和电子邮件一样,是无主的,没有中心管理者。Ripple 是一个可以让全世界的服务器互相进行点对点金融交易的开源软件。如果 Ripple 协议成为了金融交易的标准协议,支付就会变得如同收发电子邮件一样快捷、便宜而简单。没有入网费用,而且收付都即时进行。八、Ripple 是一个互联的支付系统1)Ripple :工作原理&Ripple 网络作为 Ripple 的核心,是一个共享的公开数据库。数据库中有记录着账号和结余的总账。任何人都可以阅读这些总账,也可以读取 Ripple 网络中的所有交易活动记录总账网络中的计算机通过一个各方都遵守的,名为“共识”(consensus)的机制修改总账。Ripple 网络可以在几秒中之内达到共识。这种达成共识的机制是一项技术突破,它可以在Ripple 网络内进行迅速、安全而分布化的交易结算。网络中的计算机对总账的修改达成共识分布式网络比集中化网络在很多方面效率更高。因为这个网络可以“自我结算”,所以也就不再需要中央网络管理者(以及相应的费用)了。而且因为分布式网络没有单点故障,所以也就更加可靠。另外因为网络完全开源,所以也会更加安全。2)通用货币兑换:世界上首个分布式货币兑换机构& & & &&Ripple 支持任何货币。而且不仅如此,它还能让用户随意选择货币:用户可以选择持有一种货币,但使用另一种货币支付。在Ripple 之中你可以持有美金,同时以日元、欧元、比特币、黄金以及其他任何货币向商家进行支付。 Ripple 网络通过在大量争相赚取差价的做市商之间传递兑换单的方法来进行货币“兑换”。& & & &&如下图所示,一位持有美元的用户向一位只接受日元的商家进行支付。一家做市商会通过买入美元、卖出日元来促成这笔交易。Ripple 的分布式外汇交易可以让用户无需中间人,也无需其它兑换所就完成交易。任何人都可以在全球的订单池中输入买单或卖单,而 Ripple network 会找到最有效的途径来撮合交易。无需网络费用,也没有最低数额限制。& & & &经济学家们几十年以来都在辩论着一种全球化货币的价值。诺贝尔奖得主哈耶克曾经憧憬着会出现一种能够让多元货币模型更加有效的技术,他写道:“一种电子计算器,可以在几秒钟之内就给出以当前汇率计算的任何等价外币的数量,很快就会得到广泛应用。”& & & &Ripple 的分布式外汇交易就是这种哈耶克梦寐以求的“电子计算器”,但是规模比他所想象的要大得多。Ripple 是世界上第一家通用货币兑换商。现在,每一种货币都可以作为一种自由交易的全球货币。你可以持有黄金或是比特币,然后以美元或欧元支付。 Ripple 可以让每个人都收到其想要的货币。3)电子货币、对手风险和 Ripple 网关& & & &传统的法定货币电子化了之后,会出现相关联的交易对手风险。这乍看起来似乎不明显,不过想象一下:如果你需要将一百元法定货币转换成电子货币,传统的方法是你将其交给电子银行或者贝宝这种网络运营商,而他们会给你的账户中添加余额。& & & &这个时候,你已经没有了法定货币,而将其交易成了一种电子美元余额,而这种余额实际上不过是一种支付承诺而已——银行承诺你可以在需要的时候取出法定货币。而过去几年发生的事情已经表明:在花期银行中存放的美元和在塞浦路斯银行或者冰岛银行中存放的美元并不等价。因此电子法定货币就存在交易对手风险。在Ripple 网络中这一点也同样成立。Ripple network 中的美元余额只能通过某些特定的“网关”来提取。“网关”是法定货币进出 Ripple 网络的关口。法定货币通过“网关”来进出 &Ripple 网络实际上,网关会和传统的银行非常相似;但不同的是,任何可以访问Ripple 网络的商家都可以成为网关。网关可以是银行、货币兑换商、市场或是任何金融机构。成为网关的商家为其客户创造了高级的金融功能,并能从中赚取收入。与其它电子法定货币一样,关键的问题是你也要能够信任网关有能力支付你在 Ripple 网络中的余额。4)基于数学的货币基于数学的货币(又称加密货币)是指具有某些可以验证的数学特征的电子资产,而验证这种特征就如同验证金原子核中有79个质子一样。基于数学的货币自身就是一种电子资产,并且和法定货币一样,可以不经过中央管理者就在用户之间转账。& & & &&基于数学的货币的供给量是由数学定理决定的。在协议规则之外没有人为操作的空间——这和许多可以由公司或个人毫无限制地增发的“虚拟货币”(例如航空公司的里程、消费返点、脸谱网站信用点等)截然相反。& & & &&比特币是第一个出现的基于数学的货币。比特币是一种原生的数字资产,并不能在其它什么地方提取现金,同时也不存在和上面所描述的那些“数字法定货币”一样的交易对手风险。你可以把一个装有比特币的优盘交给别人,这样就和把钱交给别人一样完成了资产的转移,并不存在债务的转移或者某种支付承诺,而且也不需要任何可信的第三方参与。& & & &网络中也有一种原生的基于数学的货币XRP (读作“ripples”)。XRP 和比特币之于Blockchain 一样,是一种 Ripple 网络中的原生货币,也无需任何交易对手。因为 XRP是一种资产,而不是可以兑换的余额,所以持有Ripple 的用户在交易或换汇时就无需信任任何金融机构。5)没有对手风险的交易& & & &&Ripple 网络的用户并不需要使用 XRP 作为交易或者储存媒介。Ripple 网络并不依赖于某种特殊的货币,用户可以选择自己喜欢的货币,无论美元、比特币、XRP 或是某种完全不同的货币都是可以的。& & & &&XRP 存在的目的是为了满足两个主要的网络功能——安全以及媒介货币,这两点将在以下详述。6)XRP:保护网络不被滥用& & &因为 Ripple 网络是基于共享账户总账的,所以一个恶意的攻击者就有可能制造大量的“垃圾账目”(也就是假账目),并试图造成网络瘫痪。这种行为会让账目的规模超过网络的管理能力,也会影响网络迅速结算合法交易的能力。为了保护网络不受滥用型的巨量账目条目攻击,每个Ripple 账户都需要有少量的 XRP 储备才能制造新的总账条目。目前这一储备要求是 50 XRP(在这篇文章写作的当时大约等于0.50 美元)。这一要求对普通用于来说可以忽略不计,但却可以防止攻击者制造海量的虚假账户来在网络中制造垃圾。& & &&每进行一次交易,就会销毁0.00001 XRP (大约等于十万分之一美分)。这并不是支付给任何人的费用,而是销毁XRP(这些 XRP 将不复存在)。这一交易费用的设计也是让普通用户可以忽略不计,但如果有诸如试图攻击网络等原因造成网络载荷很大,这就会产生巨量的费用。& & & &&这一设计的目的是让攻击者迅速“破产”并保持网络的正常运作。攻击 Ripple 网络可能在段时间内产生大量的费用,但对于普通用户来说,成本则几乎就是“免费”的。7)XRP:一种媒介货币& & & &&XRP 也可以被用作媒介货币:如果两个交易对手没有公用的货币及其相应的网关的组合,那么就可以使用XRP 作为一种没有对手风险的媒介货币。比如艾利斯喜欢美元,鲍伯喜欢欧元,如果他们无法找到一家合适的欧元—美元做市商来完成交易,他们就可以选择先将自己的喜欢的货币兑换为 XRP,然后就可以互相交易了。& & & &&&在下图中画出了在某些情况下,兑换和兑换为 XRP 可以减少交易障碍。XRP 并不是必须采用的媒介货币,只是非常有用而已。8)作为媒介货币有三个原因让XRP 成为了 Ripple 中理想的媒介货币:· XRP 的障碍较少。它可以无需费用直接转账到任何账户。· XRP 没有交易对手风险。它是 Ripple 网络中的唯一一种原生货币,无需信任任何网关或其它第三方机构。· XRP 不会贬值——它的总量是有限的。在协议创造伊始,就有一千亿 XRP 被“制造”了出来。而且根据XRP 的定义,不可能再造出任何多余的 XRP。Ripple 用户除了可以忽略不计的准备额度之外,并不需要持有或兑换 XRP。Ripple 网络并不依赖于某种货币, 接入Ripple 的商家也并不需要接受 XRP。买卖双方都可以继续使用自己喜爱的货币。9)关于 Ripple Labs Inc.&& & & &Ripple Labs 是 Ripple 的缔造者。我们是这一协议及其分布式支付网络的开发者,而目前我们正在对其进行支持并推动其成长。因为Ripple 是免费、开源的,所以我们并不对这一网络收费。& & & &Ripple Labs 所希望的是:如果 Ripple 网络在世界范围内被证实有效而且广为采用,那么就可以通过XRP 赚取收益。& & & &Ripple 协议产生了一千亿 XRP。Ripple Labs 计划逐步将其中的五百五十亿 XRP 捐赠给这一系统中的慈善机构、用户以及战略伙伴。公司也将保留其中一部分,以期望将来在建立了稳固而具有流动性的市场之后,能够将其转化为现金。& & & & 当Ripple 网络成长为一个活跃的分布式支付网络的时候,Ripple Labs 就完成了自己的使命,而Ripple 协议成了就属于整个社会的免费且开源的资源。与 Ripple 成为伙伴Ripple 协议尚处于襁褓期。这份入门资料只是对其强大潜力的一点管窥。Ripple Labs 正致力于开发全新的令人振奋的应用,而Ripple 网络的应用也将会继续增长。& & & &我们坚信:分布式金融网络和基于数学的货币将会在不久的将来,为我们的金融系统的基础带来一场革命。我们邀请每一位有相同观点的人联系我们,以便共同发展。& & &&&Ripple 生态系统需要网关、做市商、开发人员以及商家来将其潜能转化为现实。
TA的最新馆藏
喜欢该文的人也喜欢没有更多推荐了,
不良信息举报
举报内容:
在5.0以上手机上用系统原生方式实现波纹涟漪效果
举报原因:
原文地址:
原因补充:
最多只允许输入30个字
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!}

我要回帖

更多关于 文件夹还原以前的版本 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信