微信小程序中页面之间传参实例详解
微信小程序 传参:
实现效果图:
微信小程序在两个之间传参类似js传递url拼接参数,举个例子来说吧
input自己设置参数
代码如下 | 复制代码 |
//index.wxml <form bindsubmit="formSubmit"bindreset="formReset"class="myform"> <text class="prompt">给自己起个名字吧</text> <input placeholder="给自己起个名字吧"name="uesrname"/> <!--<navigator url="../logs/logs?title=我是index">跳转到新页面</navigator> 之间传参--> <!--<navigator url="../logs/logs?title=我是index"redirect>在当前页打开</navigator> --> <button form-type="submit"type="primary"size="mini">确定</button> <button form-type="reset"type="warn"size="mini">重置</button> </form> formSubmit:function(e){ varda = e.detail.value; varqu = da.uesrname; this.setData({ username:qu }), wx.navigateTo({ url:'../logs/logs?uesrname='+qu//qu是上面input输入的值 }) }, |
logs.js
代码如下 | 复制代码 |
//logs.js
Page({ data: { motto:'Hello', userInfo: {}, answer: stringAns, uesrname:'' //设置一下接收的变量 }, onLoad:function(option) { this.setData({ uesrname:option.uesrname }) }, |
效果图
代码
代码如下 | 复制代码 |
/** * 根据手指拖动的当前位置,自动贴边的View */ publicclassDragViewextendsImageViewimplementsView.OnTouchListener{ privateintscreenWidth; privateintscreenHeight; privateContext mContext; privateintlastX, lastY; privateintleft ,top; privateViewGroup.MarginLayoutParams layoutParams; privateintstartX; privateintendX; privatebooleanisMoved =false; privateonDragViewClickListener mLister; publicinterfaceonDragViewClickListener{ voidonDragViewClick(); } publicvoidsetOnDragViewClickListener(onDragViewClickListener listener){ this.mLister = listener; } publicDragView(Context context) { this(context,null); } publicDragView(Context context, AttributeSet attrs) { super(context, attrs); mContext = context; DisplayMetrics displayMetrics = getResources().getDisplayMetrics(); screenWidth = displayMetrics.widthPixels; screenHeight = displayMetrics.heightPixels-getStatusBarHeight(); init(); } publicvoidinit(){ setOnTouchListener(this); post(newRunnable() { @Override publicvoidrun() { layoutParams = (ViewGroup.MarginLayoutParams)getLayoutParams(); layoutParams.topMargin = screenHeight - getHeight(); layoutParams.leftMargin = screenWidth - getWidth(); setLayoutParams(layoutParams); } }); } @Override publicbooleanonTouch(View v, MotionEvent event) { switch(event.getAction()) { caseMotionEvent.ACTION_DOWN: lastX = (int) event.getRawX(); lastY = (int) event.getRawY(); startX = lastX; break; caseMotionEvent.ACTION_MOVE: isMoved =true; intdx = (int) event.getRawX() - lastX; intdy = (int) event.getRawY() - lastY; left = v.getLeft() + dx; top = v.getTop() + dy; intright = v.getRight() + dx; intbottom = v.getBottom() + dy; // 设置不能出界 if(left <0) { left =0; right = left + v.getWidth(); } if(right > screenWidth) { right = screenWidth; left = right - v.getWidth(); } if(top <0) { top =0; bottom = top + v.getHeight(); } if(bottom > screenHeight) { bottom = screenHeight; top = bottom - v.getHeight(); } v.layout(left, top, right, bottom ); lastX = (int) event.getRawX(); lastY = (int) event.getRawY(); break; caseMotionEvent.ACTION_UP: //只有滑动改变上边距时,抬起才进行设置 if(isMoved) { layoutParams = (ViewGroup.MarginLayoutParams)getLayoutParams(); layoutParams.topMargin = top; setLayoutParams(layoutParams); } endX = (int) event.getRawX(); //滑动距离比较小,当作点击事件处理 if(Math.abs(startX - endX) <6) { returnfalse; } if(left +v.getWidth()/2< screenWidth/2) { startScroll(left,screenWidth/2,true); }else{ startScroll(left,screenWidth/2,false); } break; } returntrue; } //在此处理点击事件 @Override publicbooleanonTouchEvent(MotionEvent event) { mLister.onDragViewClick(); returnsuper.onTouchEvent(event); } publicvoidstartScroll(finalintstart,intend,finalbooleanisLeft){ ValueAnimator valueAnimator = ValueAnimator.ofFloat(start,end).setDuration(800); valueAnimator.addUpdateListener(newValueAnimator.AnimatorUpdateListener() { @Override publicvoidonAnimationUpdate(ValueAnimator animation) { if(isLeft) { layoutParams.leftMargin = (int) (start*(1-animation.getAnimatedFraction())); }else{ layoutParams.leftMargin = (int) (start + (screenWidth - start - getWidth())*(animation.getAnimatedFraction())); } setLayoutParams(layoutParams); } }); valueAnimator.start(); } /** * 获取状态栏的高度 * @return 状态栏高度 */ publicintgetStatusBarHeight() { intresult =0; intresourceId = getResources().getIdentifier("status_bar_height","dimen","android"); if(resourceId >0) { result = getResources().getDimensionPixelSize(resourceId); } returnresult; } } |
本篇文章介绍的是oppo r9s如何设置和取消图形解锁的方法,有需要的小伙伴快来看一看吧。
问:oppo r9s怎么设置和取消图形解锁?
答:很多朋友都喜欢设置图形解锁,但是不知道怎么设置也不知道怎么取消,简单来讲一下。请进入设置---锁屏密码---划开进入后---选择无。这样以后就不会出现图形解锁了,如果想再把图形解锁弄回来也是按照这个步骤。(oppo r9s手机专题)
Android党都应该玩过一个叫吹裙子的游戏,就是需要一直监听用户的语音输入。这篇文章介绍了Android使用AudioRecord判断是否有音频输入的教程,有需要的同学可以参考一下本文Android党都应该玩过一个叫吹裙子的游戏,这个游戏就是原理就是通过监听用户吹出的气的力度来决定如何把MM的裙子弄飞起来的,所以关键在于如何判断用户吹气的力度问题。现在公司刚好有这个需求要评估就是需要一直监听用户的语音输入,当在两秒内没有语音输入时候就暂停某项事情,有语音输入的时候就要继续做某件事。其实这两件事情的本质原理是一样的,就是通过这AudioRecord来处理用户输入的原始音频数据,从而计算出当前用户输入的音量大小来判断用户是否有语音输入。下面贴上一段代码用户可以自行研究。
代码如下 | 复制代码 |
publicstaticintcalculateVolume(byte[] var0,intvar1) { int[] var3 =null; intvar4 = var0.length; intvar2; if(var1 ==8) { var3 =newint[var4]; for(var2 =0; var2 < var4; ++var2) { var3[var2] = var0[var2]; } }elseif(var1 ==16) { var3 =newint[var4 /2]; for(var2 =0; var2 < var4 /2; ++var2) { bytevar5 = var0[var2 *2]; bytevar6 = var0[var2 *2+1]; intvar13; if(var5<0) { var13 = var5 +256; }else{ var13 = var5; } shortvar7 = (short)(var13 +0); if(var6<0) { var13 = var6 +256; }else{ var13 = var6; } var3[var2] = (short)(var7 + (var13 <<8)); } } int[] var8 = var3; if(var3 !=null&& var3.length !=0) { floatvar10 =0.0F; for(intvar11 =0; var11 < var8.length; ++var11) { var10 += (float)(var8[var11] * var8[var11]); } var10 /= (float)var8.length; floatvar12 =0.0F; for(var4 =0; var4 < var8.length; ++var4) { var12 += (float)var8[var4]; } var12 /= (float)var8.length; var4 = (int)(Math.pow(2.0D, (double)(var1 -1)) -1.0D); doublevar14 = Math.sqrt((double)(var10 - var12 * var12)); intvar9; if((var9 = (int)(10.0D * Math.log10(var14 *10.0D * Math.sqrt(2.0D) / (double)var4 +1.0D)))<0) { var9 =0; } if(var9 >10) { var9 =10; } returnvar9; }else{ return0; } } |
上述方法的形参中的一个字节数组便是当前捕捉到用户输入的原始音频数据,第二个形参则是音频数据格式位PCM,16位每个样本,比如如果音频数据格式设为AudioFormat.ENCODING_PCM_16BIT,则参数传16。最后实现的效果就是如下:
01-12 18:54:17.222 E/recordtest(24249): no voice input
…………….
01-12 18:54:19.027 E/recordtest(24249): no voice input
01-12 18:54:19.067 E/recordtest(24249): no voice input
01-12 18:54:19.105 E/recordtest(24249): no voice input
01-12 18:54:19.145 E/recordtest(24249): no voice input
01-12 18:54:19.188 E/recordtest(24249): no voice input
01-12 18:54:19.227 E/recordtest(24249): no voice input
01-12 18:54:19.228 E/recordtest(24249): no voice input in 2 sec
01-12 18:54:19.269 E/recordtest(24249): no voice input
01-12 18:54:19.306 E/recordtest(24249): no voice input
01-12 18:54:19.345 E/recordtest(24249): no voice input
01-12 18:54:19.387 E/recordtest(24249): no voice input
01-12 18:54:19.427 E/recordtest(24249): no voice input
01-12 18:54:19.466 E/recordtest(24249): has voice input
01-12 18:54:19.505 E/recordtest(24249): has voice input
01-12 18:54:19.546 E/recordtest(24249): has voice input
01-12 18:54:19.586 E/recordtest(24249): has voice input
01-12 18:54:19.646 E/recordtest(24249): has voice input
01-12 18:54:19.686 E/recordtest(24249): has voice input
01-12 18:54:19.726 E/recordtest(24249): has voice input
01-12 18:54:19.766 E/recordtest(24249): has voice input
相关文章
- 这篇文章主要介绍了C#开发Windows窗体应用程序的简单操作步骤,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-04-12
- 本文通过例子,讲述了C++调用C#的DLL程序的方法,作出了以下总结,下面就让我们一起来学习吧。...2020-06-25
- 本文通过两个示例讲解了一下Process类调用外部应用程序的基本用法,并简单讲解了StartInfo属性,有需要的朋友可以参考一下。...2020-06-25
- 这篇文章主要介绍了微信小程序 页面传值详解的相关资料,需要的朋友可以参考下...2017-03-13
- 大概有如下步骤 新建项目Bejs 新建文件package.json 新建文件Gruntfile.js 命令行执行grunt任务 一、新建项目Bejs源码放在src下,该目录有两个js文件,selector.js和ajax.js。编译后代码放在dest,这个grunt会...2014-06-07
- 这篇文章主要介绍了uniapp微信小程序:key失效的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-01-20
- 本文实例讲述了PHP常用的小程序代码段。分享给大家供大家参考,具体如下:1.计算两个时间的相差几天$startdate=strtotime("2009-12-09");$enddate=strtotime("2009-12-05");上面的php时间日期函数strtotime已经把字符串...2015-11-24
将c#编写的程序打包成应用程序的实现步骤分享(安装,卸载) 图文
时常会写用c#一些程序,但如何将他们和photoshop一样的大型软件打成一个压缩包,以便于发布....2020-06-25- 这篇文章主要介绍了微信小程序 网络请求(GET请求)详解的相关资料,需要的朋友可以参考下...2016-11-22
- 这篇文章主要给大家介绍了关于微信小程序如何获取图片宽度与高度的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-03-10
- 这篇文章主要介绍了微信小程序 二维码生成工具 weapp-qrcode详解,教大家如何在项目中引入weapp-qrcode.js文件,通过实例代码给大家介绍的非常详细,需要的朋友可以参考下...2021-10-23
- 这篇文章主要为大家详细介绍了微信小程序自定义tabbar组件,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-03-14
- 这篇文章主要介绍了Python爬取微信小程序通用方法代码实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-09-29
- 这篇文章主要介绍了微信小程序手势操作之单触摸点与多触摸点的相关资料,需要的朋友可以参考下...2017-03-13
- 这篇文章主要介绍了微信小程序(应用号)开发新闻客户端实例的相关资料,需要的朋友可以参考下...2016-10-25
- 本文主要介绍了手把手教你uniapp和小程序分包,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-09-02
- 这篇文章主要为大家详细介绍了微信小程序实现canvas分享朋友圈海报,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-06-21
- 这篇文章主要介绍了微信小程序 页面跳转传递值几种方法详解的相关资料,需要的朋友可以参考下...2017-01-16
- 这篇文章主要为大家详细介绍了微信小程序实现选择地址省市区三级联动,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-06-21
- 这篇文章主要为大家详细介绍了微信小程序实现点击导航条切换页面,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-11-19