×

源码众享最新教程 - 草稿

96
小菜c
2017.08.07 13:59* 字数 49666

¥开启¥

【iAPP实现进入界面执行逐一显】

〖2017-08-25 15:22:14〗

《//首先开一个线程,因为你有这么多的stop要执行,其次必须使用ufusui(),否则可能不会显示你的字体。切记:文字必须设置“text=”,否则很尴尬,还有我这里的8,14是两个文本id,一个是标题里面的,另外一个是标题下面的文字,这些你们都不用管,你们只用看代码就行。€t()€{€stop(500)€ufnsui()€{€us(8,"text","B")€us(14,"text","反")€}€stop(500)€ufnsui()€{€us(8,"text","Bu")€us(14,"text","反馈")€}€stop(500)€ufnsui()€{€us(8,"text","Bug")€us(14,"text","反馈标")€}€stop(500)€ufnsui()€{€us(8,"text","Bug反")€us(14,"text","反馈标题")€}€stop(500)€ufnsui()€{€us(8,"text","Bug反馈")€us(14,"text","反馈标题:")€}€}€€此教程由iCode提供!》

『胡稻』

〔iAPP功能实现〕

【加群QQ聊天源码】

〖2017-08-25 15:24:36〗

《import "android.net.Uri"€import "android.content.Intent"€--加群€url="mqqapi://card/show_pslcard?src_type=internal&version=1&uin=383792635&card_type=group&source=qrcode"€activity.startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(url)))€€--QQ聊天€url="mqqwpa://im/chat?chat_type=wpa&uin=2113075983"€activity.startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(url)))€€此教程由iCode提供!》

『胡稻』

〔Lua功能实现〕

【自定义消息,按钮,标题的颜色】

〖2017-08-25 15:27:08〗

《dialog=AlertDialog.Builder(this)€.setTitle("标题")€.setMessage("消息")€.setPositiveButton("积极",{onClick=function(v) print"点击了积极按钮"end})€.setNeutralButton("中立",nil)€.setNegativeButton("否认",nil)€.show()€dialog.create()€€€--更改消息颜色€message=dialog.findViewById(android.R.id.message)€message.setTextColor(0xff1DA6DD)€€--更改Button颜色€import "android.graphics.Color"€dialog.getButton(dialog.BUTTON_POSITIVE).setTextColor(0xff1DA6DD)€dialog.getButton(dialog.BUTTON_NEGATIVE).setTextColor(0xff1DA6DD)€dialog.getButton(dialog.BUTTON_NEUTRAL).setTextColor(0xff1DA6DD)€€--更改Title颜色€import "android.text.SpannableString"€import "android.text.style.ForegroundColorSpan"€import "android.text.Spannable"€sp = SpannableString("标题")€sp.setSpan(ForegroundColorSpan(0xff1DA6DD),0,#sp,Spannable.SPAN_EXCLUSIVE_INCLUSIVE)€dialog.setTitle(sp)€€此教程由iCode提供!》

『胡稻』

〔Lua功能实现〕

【lua功能实现发送邮件】

〖2017-08-25 15:28:59〗

《Lua实现发送邮件就是下面€€import "android.content.Intent"€i = Intent(Intent.ACTION_SEND)€i.setType("message/rfc822") €i.putExtra(Intent.EXTRA_EMAIL, {"181748731@XX.com"})€i.putExtra(Intent.EXTRA_SUBJECT,"Feedback")€i.putExtra(Intent.EXTRA_TEXT,"Content")€activity.startActivity(Intent.createChooser(i, "Choice"))€€€就这么简单€€此教程由iCode提供!》

『胡稻』

〔Lua功能实现〕

【iApp官方教程视频】

〖2017-08-21 18:51:48〗

《下载地址:http://pan.baidu.com/share/link?shareid=2189756878&uk=445928965 €€如果没有你想要的,可以用1.x版本的iapp看视频,学代码 €》

『小菜』

〔iApp理论知识〕

【打印的用法!】

〖2017-08-21 18:33:21〗

《€syso("打印")€€这是打印代码,常用于调试代码时查看数据€€测试后点击调试,上面就是你打印的内容,打包后,不会有调试这个按钮€€点击暂停滚动,就可以编辑他了€€再点击继续滚动,就不可以编辑了€》

『小菜』

〔iApp理论知识〕

【2.0参考讲解】

〖2017-08-21 18:35:06〗

《€null,true,false€@,$,%€s,ss,sss€ufnsui€€null就是一个空值和没有的意思€true就是有和成功的意思€flase就是没有和失败的意思€€“@”应用安装包中assets文件夹€“$”应用私有文件数据目录€“%”SD卡文件目录,如果不指定符号,默认为SD卡文件目录。€€//申明一个变量,如果不赋值,系统将默认赋值 null €s a €申明事件变量,只能在一个事件里操作变量,意思就是只能在一个事件里执行 例如按钮,载入事件€//可以赋数值 €s a = 123 €tw(a)€申明界面变量,只能在一个界面里操作变量,意思就是在这一个界面里都可以操作他€//可以赋字符串 €ss a = "123" €tw(ss.a)€申明全局变量,一个应用里操作变量,意思就是全部界面里,都可以操作他€//可以赋其他变量 €sss b = a €tw(sss.b) €€线程中是不允许直接对应用界面进行更新设置数据,包括提示语句。需要使用 ufnsui语句 进行线程更新界面。€例如€这会提示错误,怎么解决呢,用ufnsui€t()€{€tw("测试")€}€€这样就不会错误了↓€t()€{€ufnsui€{€tw("测试")€}€}》『小菜』

〔iApp理论知识〕

【t线程的用法】

〖2017-08-21 18:37:41〗

《€用法: €t() €{ € syso("新线程里执行代码") €} €线程中是不允许直接对应用界面进行更新设置数据,包括提示语句。需要使用 ufnsui语句 进行线程更新界面。€€这会提示错误,怎么解决呢,用ufnsui€t()€{€tw("测试")€}€€这样就不会错误了↓€t()€{€ufnsui€{€tw("测试")€}€}€€说明: €启用新线程,去执行一些需要执行很久的代码。比如把下载文件,获取网页源码,大量的文件操作,可以放入新线里执行。这里线程的概念,启用新的线程帮你处理代码,这样不会影响到主线程。 €》

『小菜』

〔iApp理论知识〕

【tw提示的用法】

〖2017-08-21 18:38:36〗

《€用法: €tw("你好") €记得加上""€€在线程中执行会出错,用ufnsui包括他就不会出错了€ufnsui€{€tw("你好")€}€€//设置参数1:显示的时间长久;0:显示的时间短暂;\n为换行的意思,其他地方通用 €tw("你好\n吗?", 1) €€说明: €用于提醒用户,界面显示时长大约为 2秒钟。弹出代码中的文字,来提醒用户。€ 》

『小菜』

〔iApp理论知识〕

【fd删除文件的用法】

〖2017-08-21 18:38:45〗

《€用法:(将删除SD卡根目录的abc.zip文件) €s a = "%abc.zip" €fd(a, b) €tw(b) €€b是true,就说明删除成功了€b如果是false,就说明删除失败,或者文件不存在€€s a = "%abc.zip" €fd(a, b)€.或者fd("%abc.zip", b)€f(b==true)€{€tw("删除成功")€}€else€{€tw("删除失败,或文件不存在")€}€€说明: €用于删除指定的文件,是否成功返回数据:true或 false €€提示:同时将创建变量“b”,作为记录返回的值。(通用于下咧) €》

『小菜』

〔iApp理论知识〕

【fe文件是否存在用法】

〖2017-08-21 18:40:15〗

《€用法:(将判断SD卡根目录的abc.zip文件是否存在) €s a = "%abc.zip" €fe(a, b) €.或者fe("%abc.zip", b)€tw(b) €€b是true,就说明文件存在€b如果是false,就说明文件不存在€€s a = "%abc.zip" €fe(a, b)€.或者fe("%abc.zip", b)€f(b==true)€{€tw("文件存在")€}€else€{€tw("文件不存在")€}€€说明: €用于判断指定的文件存在,是否存在返回数据:true或 false €》

『小菜』

〔iApp理论知识〕

【判断语句f】

〖2017-08-21 18:41:25〗

《€ f 是 if简化而来,其中文意思为:如果、若€s a=1€f(a==1)€{€tw("变量a等于1了")€}€//上面这段可以读作:如果变量a中的数据等于1,就弹出提示€€s a=1€f(a==1)€{€tw("变量a等于1了")€}€else //反之€{€tw("变量a不等于1")€}€//上面这段可以读作:如果变量a中的数据等于1,就弹出提示,反之,则弹出"不等于1"€€f(a>0&&a<2)€{€tw("a等于1")€}€else€{€tw("a不等于1)€}€//上面这段可以读作:如果a大于0 并且 小于2则弹出提示 反之 则弹出另一提示€//逻辑运算符 &&(并且) ||(或者) !(反意)€€f(a!=1)€{€tw("a不等于1")€}€//其中 != 读作 不等于€€s a="你好"€f(a ? "你")€{€tw("a中包含字符"你"")€}€//其中 ? 用于判断是否包含,读作:若a中包含"你" 则 弹出提示€》

『小菜』

〔iApp理论知识〕

【循环语句w】

〖2017-08-21 18:42:14〗

《€w 条件循环语句 €顾名思义,满足条件就继续循环执行€和f判断相比 f 条件满足就执行一段代码,不满足条件就执行另一段代码,  而 w 是如果满足条件就执行大括号内的一段代码,执行完成后再判断是否满足条件,如此循环,一旦不满足,就结束循环,执行后面的代码€s a==1€w(a<20)€{€s+(1,a)€}€tw("循环已结束")€//当运行到 w 时,判断a是否小于20,小于20就进入循环,循环内的代码是每执行一次a的值加1,直到a加到20时,条件就不满足了,这时循环结束,执行后面的代码,会弹出提示"循环已结束"€€//w和f一样,同样支持逻辑运算符€》

『小菜』

〔iApp理论知识〕

【for循环】

〖2017-08-21 18:43:25〗

《€for循环,可以直接设置循环次数,也可以用于输出数组的数据€for(1;20)€{€tw("你好")€}€//这样大括号内的代码就会执行20次€//需要注意的是数字不要前面填大的后面填小的€€for(20;1)€{€tw("你好")€}€//这样是不被允许的€€€下面用for循环将数组的数据输出€得到数组的方法有几种€可以用sl函数得到数组€可以用fl得到文件列表数组€可以用sjxx得到手机信息的数组€€先用sl举例:€s a = "1:2:3:4:5:6:7:8:9"€sl(a,":",b)€for(c;b)€{€tw(c)€}€//上面这段意思是:将a用":"分割为数组,用for循环依次输出€//这段代码执行后,可以看到1到9依次显示到屏幕€//需要注意的是,for循环中间使用的分号而不是逗号,数组变量放后面,用于输出的变量放前面€》

『小菜』

〔iApp理论知识〕

【计算函数s】

〖2017-08-21 18:45:12〗

《€s a=1€s(a+1,b)€//s2可以保留两位小数€€s a=1€s((a+1)/2,b)€//支持带括号的运算€€s a=-3€s(a-1,b)€//这样运行会出错,s不支持负数运算€€所以需要用sb函数€s a=-3€sb(a-1,b)€//用sb2函数可以保留小数€或使用s-函数€s a=-3€s-(1,a)€//s-(1,a)读作将a的值减1后重新赋值到变量a,等同于sb(a-1,a)€€其他计算函数€法:€s a = 2€€//加法例子赋值a=4€s+(2, a)€//减法例子赋值a=3€s-(5, a)€//乘法例子赋值a=6€s*(3, a)€//除法例子赋值a=4€s/(8, a)€//求余例子赋值a=2€s%(5, a)€€》

『小菜』

〔iApp理论知识〕

【文本带光标打印】

〖2017-08-21 18:47:14〗

《€uycl("true") €s a=0 €s id=文本控件id€s id1=显示打印控件id €us(id1, "textcolor", -62464) €.设置打印字体颜色€t()€{€s r="true"€s go=1€s k=0€w(r=="true")€{€ug(id,"text",dd)€//获取文本或者输入框需要打印的字€stop(150)€//停就300毫秒€ssg(dd,k,go,h)€//截取打印数据€ug(id1,"text",tt)€//获取输出的打印数据€s(k+1,k)€//k值加1€s(go+1,go)€//go值加1€ss(tt+h+"|",h)€//前面打印的字加上现在打印的字€us(id1,"text",h)€//打字带图标€sr(h,"|","",h)€//去除图标€us(id1,"text",h)€//打字不带图标€}€}€》

『小菜』

〔iApp理论知识〕

【十进制转换十六进制】

〖2017-08-21 18:48:49〗

《€s id=十进制输入框id€s id1=输出框或文本id€ug(id,"text",t)€supper(t,t)€s csl=1€s jie=0€slg(t,lt)€s(lt-1,ltt)€s xun=lt€for(1;xun)€{€ssg(t,ltt,lt,ti)€f(ti=="A")€{€s ti=10€}€f(ti=="B")€{€s ti=11€}€f(ti=="C")€{€s ti=12€}€f(ti=="D")€{€s ti=13€}€f(ti=="E")€{€s ti=14€}€f(ti=="F")€{€s ti=15€}€f(ti<=15)€{€s(ti*csl,ti)€s(jie+ti,jie)€s(csl*16,csl)€s(lt-1,lt)€s(lt-1,ltt)€}€}€us(id1,"text",jie)€》

『小菜』

〔iApp理论知识〕

【一些编程需要的工具】

〖2017-08-21 18:50:59〗

《€mt文件管理器€€取色器€€图标包制作器€€Picsatt€€安卓教程手册€€qq浏览器搜索应该有€€》

『小菜』

〔iApp理论知识〕

【简单的网站后台】

〖2017-08-21 18:51:17〗

《一个自助建站,和八亿的差不多

http://waphx.com€€一个简单的博客

http://www.lofter.com/》

『小菜』

〔iApp理论知识〕

【布局讲解!】

〖2017-08-21 11:34:25〗

《首先,如果你是新手。请先学习布局再学习其他功能,不然就算你做出来软件,到了别人的手机上可能界面会一团乱!€注意:€  布局界面的控件不可以用拖动来移动控件的位置!€ 想要移动控件位置就用代码€ €每个界面最高添加一个宽和高都为-1的 线性布局或者相对布局!作为整个界面的根控件  其他控件都添加在根控件内,方便用代码移动位置  €width=-2€//↑这个是宽度,-2是自适应,-1是最大€height=-2€//↑这个是高度,-2是自适应,-1是最大€    €    如果你想要修改他们的高度或宽度 可以直接输入大小  比如:€ width=50dp€ //↑设置它的宽度为50dp,后面一定要加dp 不管你设置多大都要加!€ height=50dp€ //↑设置它的高度为50dp,后面一定要加dp 不管你设置多大都要加!€线性布局里移动控件位置可以用layout开头或者gravity开头的一些代码,移动位置的代码在每个控件的属性里面写 ,相对布局的话移动位置就用ut开头的一些代码,下面都有中文提示!€    //↑这些代码都要放在你需要移动位置的控件的属性里!€€我们先看线性布局的自身属性代码€  orientation=vertical€  //↑上面这代码就是控件使该线性布局的布局为垂直的,向下的!€  什么意思呢?意思就是 :如果你在一个线性布局的属性加了这个代码,然后再在这个线性布局里添加其他控件,那么该线性布局里面的其他控件默认的对齐方式就是从上到下€      € 比如我们在该线性布局内添加了1,2,3控件€  那么这3个控件的对齐方式就1€ 2€3€ //因为线性布局属性是从上到下的垂直,所以控件会从上往下排列€€还有就是线性布局里的控件大小 -1是最大的-2就是你控的内容有多大 控件就有多大自适应的€€ 需要注意:如果你线性布局里面有个控件的高宽大小都是-1的话,因为-1是最大,所以这个高宽都为-1的控件会占有屏幕的全部面积,那么其他控件就会被挤出屏幕 从而导致看不见有些控件,€ 这个时候你可以设置他的属性为按比例划分空间€ layout_weight=1€ //↑这代码是放在最大的控件的属性里的€  这样设置后如果还是看不见其他控件,那么就在该线性布局里的每个控件的属性里面都设置一下按比例划分空间layout_weight=1€  --------------------------------------€相对布局的话就不需要设置他的属性了€      €  直接在相对布局里添加控件,然后直接在控件的属性里设置ut  输入ut会有提示!!€  € 相对布局里的控件移动位置都用 ut开头的。而且相对布局里的控件必须用ut€ € 如果相对布局里的控件。你不去设置它的属性ut的话,那么它就会停留在原地,不管你在相对布局里添加多少个控件 他们都会在原地!€ €  比如添加4,5,6控件€  你不去设置他们的属性位置,那么这3个控件的位置就会在同一个位置!》

『小菜』

〔iApp理论知识〕

【直接拨打指定电话】

〖2017-08-21 11:28:06〗

《sit(a, "action","android.intent.action.CALL") €€sit(a, "data", "tel:10086")€//10086为需要拨打的电话€€uit(a, "chooser", "直接拨号")€€//以上代码将直接启动拨号程序进行拨号》

『小菜』

〔iApp功能实现〕

【分享文字给微信好友】

〖2017-08-21 11:29:23〗

《sit(a, "action", "android.intent.action.SEND")€€sit(a,"classname","com.tencent.mm","com.tencent.mm.ui.tools.ShareImgUI")€€sit(a, "extra", "android.intent.extra.TEXT", "測試")€€uit(a, "chooser", "分享朋友")€€//以上代码将会直接调用微信分享指定内容到指定好友》

『小菜』

〔iApp功能实现〕

【判断列表是否滚蛋到底部】

〖2017-08-21 11:31:41〗

《f(st_vT==0)€€{€€endcode€€}€€//列表可见项目为0时停止执行€€f(ss.gd=="true")€€{€€endcode€€}€€//判断是否以提醒过€€s(st_bT-st_vT,kj)€€f(st_fM==kj)€€{€€//以滚动到底部执行的事件€€ss gd="true"€€tw("已经到底了,没有更多啦!",0)€€}€€€€//以上代码放到列表的 控件事件→触屏滚动事件→滚动€》

『小菜』

〔iApp功能实现〕

【浏览器进度条】

〖2017-08-21 11:32:14〗

《.放到浏览器事件的加载过程进度改变中€f(st_nS == 100)€{€ug(10,"title",a)€//10为浏览器id€us(7,"text",a)€//7为文本id€}€else€{€ss("正在加载网页..("+ st_nS +")",a)€us(7,"text",a)€}€》

『小菜』

〔iApp功能实现〕

【使用按钮打开侧滑】

〖2017-08-21 11:38〗

《us(2,"opendrawer","start") €//↑2是侧滑栏窗体的id,代码放在按钮的点击事件,记得修改id》

『小菜』

〔iApp功能实现〕

【直接拨打指定电话】

〖2017-08-21 11:28:06〗

《sit(a, "action","android.intent.action.CALL") €€sit(a, "data", "tel:10086")€//10086为需要拨打的电话€€uit(a, "chooser", "直接拨号")€€//以上代码将直接启动拨号程序进行拨号》

『小菜』

〔iApp实例代码〕

【分享文字给微信好友】

〖2017-08-21 11:29:23〗

《sit(a, "action", "android.intent.action.SEND")€€sit(a,"classname","com.tencent.mm","com.tencent.mm.ui.tools.ShareImgUI")€€sit(a, "extra", "android.intent.extra.TEXT", "測試")€€uit(a, "chooser", "分享朋友")€€//以上代码将会直接调用微信分享指定内容到指定好友》

『小菜』

〔iApp实例代码〕

【判断列表是否滚蛋到底部】

〖2017-08-21 11:31:41〗

《f(st_vT==0)€€{€€endcode€€}€€//列表可见项目为0时停止执行€€f(ss.gd=="true")€€{€€endcode€€}€€//判断是否以提醒过€€s(st_bT-st_vT,kj)€€f(st_fM==kj)€€{€€//以滚动到底部执行的事件€€ss gd="true"€€tw("已经到底了,没有更多啦!",0)€€}€€€€//以上代码放到列表的 控件事件→触屏滚动事件→滚动€》

『小菜』

〔iApp实例代码〕

【浏览器进度条】

〖2017-08-21 11:32:14〗

《.放到浏览器事件的加载过程进度改变中€f(st_nS == 100)€{€ug(10,"title",a)€//10为浏览器id€us(7,"text",a)€//7为文本id€}€else€{€ss("正在加载网页..("+ st_nS +")",a)€us(7,"text",a)€}€》

『小菜』

〔iApp实例代码〕

【使用按钮打开侧滑】

〖2017-08-21 11:38〗

《us(2,"opendrawer","start")

€//↑2是侧滑栏窗体的id,代码放在按钮的点击事件,记得修改id》

『小菜』

〔iApp实例代码〕

【使用jni实现Tost】

〖2017-08-20 22:15:04〗

《在xx.cpp中写入以下代码€ void Java_com_jni_test_MainActivity_showToast(JNIEnv *env, jobject thiz,jobject context, jstring str){€    jclass tclss = env->FindClass("android/widget/Toast");€    jmethodID mid = env->GetStaticMethodID(tclss,"makeText","(Landroid/content/Context;Ljava/lang/CharSequence;I)Landroid/widget/Toast;");€    jobject job = env->CallStaticObjectMethod(tclss,mid,context,str);€    jmethodID showId = env->GetMethodID(tclss,"show","()V");€    env->CallVoidMethod(job,showId,context,str);€ }€€在MainActivity声明€public static native void showToast(Context context,String msg)€€//然后调用€showToast(this,"你好")》

『小菜』

〔Android功能实现〕

【iApp基础视频教程】

〖2017-08-20 19:52〗

《链接:http://pan.baidu.com/s/1sl2Usg9€€后期会有第二期。》

『安柠』

〔iAPP视频教程〕

【添加DrawerLayout】

〖2017-08-20 11:56:25〗

《添加v7,v4库€€首先在main.xml里面写入代码€€€ € € € € € € €€ €€新建drawer.xml  DrawerLayout布局€main_layout.xml  主页面布局€然后在MainActivity.java里面写入代码€声明一个DrawerLayout变量€private DrawerLayout drawer;€€在onCreate方法下面写入代码€Toolbar drawer_toolbar = (Toolbar) findViewById(R.id.drawer_toolbar);€drawer=(DrawerLayout) findViewById(R.id.drawerlayout);€ ActionBarDrawerToggle toggle=new ActionBarDrawerToggle(this,drawer,toolbar,R.string.open,R.string.close){};€ toggle.syncState();€ drawer.setDrawerListener(toggle);€当你看到这里,就说明完成了€软件风格请自行配置!€》

『小菜』

〔Android用户界面〕

【Dialog和Popupmenu】

〖2017-08-20 11:59:31〗

《一、对话框Dialog:€€//得到构建对象€AlertDialog.Builder builder = new AlertDialog.Builder(this);€builder.setTitle("标题");€builder.setMessage("提示内容");€€//添加按钮,参数二为点击事件可以为null€builder.setPositiveButton("确定", new OnClickListener());€builder.setNegativeButton("取消", new OnClickListener());€builder.setNeutralButton("确定", new OnClickListener());€€//加入一个列表,参数二为点击事件监听€String[] listArray = new String[]{"第一个","第二个","第三个"};€builder.setItems(listArray,new OnItemClickListener());€€//与上一个类似,每项后面多一个单选按钮,0代表默认选中项的行号€builder.setSingleChoiceItems(listArray,0,new OnCheckedChangeListener());€€//添加一个布局到对话框中€ViewGroup viewGroup = (ViewGroup) this.getLayoutInflater().inflate(R.layout.activity_main,null);€builder.setView(viewGroup);€€//创建并显示对话框€AlertDialog alertDialog = builder.create();€alertDialog.show();€€€二、PopupWindow:€€// 构建泡泡窗口:€ViewGroup pop = (ViewGroup)getLayoutInflater().inflate(R.layout.popupwindows_pro,null);€PopupWindow popupWindow = new PopupWindow(pop, LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);€€//获取焦点€popupWindow.setFocusable(true);€€//设置空白背景,这样点空白部分就会关闭€popupWindow.setBackgroundDrawable(new BitmapDrawable());€//设置进出动画:€popupWindow.setAnimationStyle(R.style.anim);€//在styles.xml中定义动画样式€€€//根据父元素位置显示,x,y是偏移距离€View pView = (View) button.getParent();€popupWindow.showAtLocation(pView, Gravity.CENTER, x, y);€//在view组件下方显示,不够会显示在上方€popupWindow.showAsDropDown(view, x, y);€//关闭泡泡窗口:€popupWindow.dismiss();€//设置键盘事件可控制按back键关闭€pop.setOnKeyListener();€》

『小菜』

〔Android功能实现〕

【Sharedprefence用法】

〖2017-08-20 12:04:05〗

《shared_prefs是软件常用的保存用户一些设置的€数据文件,它位于data/data/包名/shared_prefs目录下。€String fileName = "login";€ //要操作的文件名€SharedPreferences preferences = getSharedPreferences(fileName,MODE_PRIVATE);€€//根据键取得一个值,未找到则值为第二个参数€String str = preferences.getString("key","no");€//如果取int值就用getInt,布尔值就用getBoolean€€//拿到编辑对象€SharedPreferences.Editor editor = preferences.edit();€€//存入一个键值对,第一个键,第二个值,放int就putInt€editor.putString("key","value");€€//根据键移除一对键值对€editor.remove("key");€€//提交以上操作€editor.commit();》

『小菜』

〔Android功能实现〕

【输入九九乘法表】

〖2017-08-18 10:50:13〗

《s a=1€s b=1€s sum=0€s c="\n"€for(1;1)€{€s a=1€w(a<=9)€{€s b=1€w(b<=a)€{€s(b*a,sum)€//前一个c是换行,后一个c是变量标识€ss(c+" "+b+"×"+a+"="+sum,c)€//b值增1€s(b+1,b)€}€//每一行后换行€ss(c+"\n",c)€//a值增1€s(a+1,a)€}€}€//输出乘法表€syso(c)€€//--作者:楠少》

『小菜』

〔iApp功能实现〕

【判断数是偶数或奇数】

〖2017-08-18 10:52:03〗

《€s a=6€//假设这个数为6,将提示为偶数。€€sn(a/2,jg)€sj(jg,".",null,xs)€//判断是否能被2整除€f(xs==0)€{€tw("为偶数")€}€else€{€tw("为奇数")€}€€说明:像2,4,6,8,10...这样的数为偶数,1,3,5,7,9...这样的数为奇数。€》

『小菜』

〔iApp实例代码〕

【调用浏览器打开网站(非hws)】

〖2017-08-18 16:12:53〗

《sit(a,"ACTION", "android.intent.action.VIEW")€sit(a,"data","http://appv.pw/s/?u=2441807818&m=Dr.anybaby.xkgzs")€uit(a, "chooser", "选择浏览器")€€调用浏览器打开网页(支持自带浏览器,支持所有浏览器),比hws好用多了€》

『小菜』

〔iAPP实例代码〕

【调用应用市场给本软件评分】

〖2017-08-18 16:13:06〗

《sit(a,"ACTION", "Intent.ACTION_VIEW")

sit(a,"data","market://details?id=Dr.ibook.xkgzs")€uit(a, "chooser", "选择操作方式")€€必须在应用市场有你的软件,否则会提示没有该应用。€》

『小菜』

〔iAPP实例代码〕

【图片无限旋转动画】

〖2017-08-18 16:17:52〗

《dhr(dh, 0, 720, 1, 0.5, 1, 0.5)€dh(dh, "duration", 3000)€us(图片id, "dh", dh)€dhon(dh)€{€us(图片id, "dh", dh)€}€》

『小菜』

〔iAPP实例代码〕

【hs获取网页的新功能-代理IP】

〖2017-08-18 16:18:05〗

《//带自动设置cookie方式获取网页,并记录当前网页的Cookie,并设置Header头:(可设置多条,以“||”隔开)文件头包括了€Cookie,User-Agent设备型号,设置连接超时,设置接收超时,设置代理IP。€//传递cookie项值,当自定义为null 系统将自动设置已记录的cookie€t()€{€s a = "http://wap.baidu.com/"€hs(a, "title=你好&text=你好吗?", "utf-8", null, true, "User-Agent=Mozilla/5.0 (iPad; U; CPU OS 6_0 like Mac OS X; zh-CN; iPad2)€||accept=*/*||accept-language=zh-CN",€20000, 20000, "10.0.0.172:80", b)€syso(b)€}€€效果不明觉厉。简单点说就是。如果你有很多代理IP,你就能做一个cc攻击(效率低下),但做一个网页刷访问还是不错的,都是模拟真实用户访问的。€€比如这样的,20000是访问超时时间也就是20秒,最好设置10000-20000左右最好,怎么无限更换代理IP呢?你只需要把很多IP分割为数组,如:€€sl("109.22.33.58:80#36.69.52.33:80","#",ok)€然后for循环读取ok,再循环hs访问即可(不要做坏事哈)€€t()€{€hs("网址",null, "utf-8", null, true, null, 20000, 20000, "10.0.0.172:80", b)€syso(b)€}€》

『小菜』

〔iAPP实例代码〕

【给按钮加触摸时的深色 方法】

〖2017-08-18 16:20:04〗

《按钮控件又或者是文本控件,线性布局等,只要设置了背景颜色不是白色透明,比如绿色,€》

『小菜』

〔iAPP实例代码〕

【获取imei进行计算密码】

〖2017-08-18 16:21:35〗

《通常如果获取imei来计算一些密码,直接simei(imei)即可,但如果出现因为字母,那么计算就会出问题了。(有部分手机imei是有英文字符的)€€比如€simei(imei)€s(imei/2,ok)€tw(ok)€€如果imei有英文字母,这个计算就不成立了,也就出错!怎么办呢?很简单,用正则表达式替换下字符即可,示例:€€simei(imei)€sr(imei,"[a-z]","9",imei)€s(imei/2,ok)€tw(ok)€》

『小菜』

〔iAPP实例代码〕

【搜索列表关键字的实现方法】

〖2017-08-18 16:23:14〗

《sl("蛋疼;鸡肋;鸡蛋;鸡皮疙瘩;蛋糕",";",so)€//分割一段内容为数组€for(k;so)€{€//循环判断是否包含需要搜索的内容€f(k?"蛋")€{€//打印包含蛋字的内容会打印蛋疼、鸡蛋、蛋糕€syso(k)€}€}€€那怎么显示到列表呢?只需要把syso换成ula即可!€》

『小菜』

〔iAPP实例代码〕

【调用其他程序分享文件代码】

〖2017-08-18 16:26:26〗

《sit(a, "action", "android.intent.action.SEND")€sit(a, "type", "*/*")€sit(a, "extra", "android.intent.extra.STREAM","/sdcard/iApp/Userimg/icon_iapp.png")€uit(a, "chooser", "分享") €》

『小菜』

〔iAPP实例代码〕

【us设置滑动侧滑窗体里控件属性】

〖2017-08-18 16:26:05〗

《在有滑动窗体或者侧滑窗体的时候需要加个判断什么的,比如判断网络是否连接,需要通过us设置文字来显示,但是直接在mian界面载入事件,比如这样:€€us(a.2,"text","有网络")€€你会发现没有任何效果,因为界面无法交互,但你只需要把代码放在 “界面载入完毕事件” 就行了。因为这个事件界面可以交互。€》

『小菜』

〔iAPP实例代码〕

【点击取消编辑框获得焦点】

〖2017-08-18 16:27:05〗

《编辑框获得焦点就是编辑框点击后的光标效果,默认只要点击了编辑框,除非退出再进,否则是无法取消掉光标的,这时候就需要代码来设置一下。€€us(2,"focusable",false)€//设置id为2编辑框不获得焦点€€可以放在返回事件等等,按一次返回取消掉获得焦点,不过这样后编辑框就无法点击了,怎么办呢?很简单,让编辑框再可以获得焦点即可。代码如下€€us(2,"focusable",true)€us(2,"focusableintouchmode",true)€€注意的是;必须放在编辑框的触屏监听事件!€》

『小菜』

〔iAPP实例代码〕

【添加点击菜单时的选项】

〖2017-08-18 16:28:34〗

《代码如下:€€case 选择A:€tw("A")€break€case 选择B:€tw("B")€break€case 选择C:€tw("C")€break€default:€tw("载入成功")€break€€中,选择A等是标题,tw是点击后的事件。€》

『小菜』

〔iAPP实例代码〕

【列表里设置背景圆角】

〖2017-08-18 16:30:39〗

《作用:可以设置每个列表的圆角或者背景颜色,又或者设置边框,其他一切等等€€比如两个界面:mian.iyu主界面和list.iyu列表界面€首先在列表设计界面list.iyu的载入事件写代码€€gvs(st_vW,list.1,ok)€us(ok,"background","#336699")€€通过gvs获取id为1的对象并设置背景颜色为#336699€€如何圆角或者边框呢?可以搜索ngde属性。

设置圆角例子:€gvs(st_vW,list.1,ok)€ngde(5,"#336699",yes)€us(ok,"background",yes)€》

『小菜』

〔iAPP实例代码〕

【下载文件简单代码】

〖2017-08-18 16:31:25〗

《t()€{€hd("http://flmle.com/ok.apk","iApp/ok.apk",true,ok)€//iApp/ok是保存路径,true是如果存在则覆盖€€f(ok=="0")€{€ufnsui()€{€tw("下载成功")€}€}€else€{€ufnsui()€{€tw("下载失败")€}€}€}€》

『小菜』

〔iAPP实例代码〕

【深度解析sss全局变量】

〖2017-08-18 16:33:56〗

《iAPP2.0最棒的改变莫过于全局变量了€因为全局变量的存在我们可以把很多原来需要写很多都东西最简化。但很多小白并不懂全局变量的使用。全局变量能做什么呢?比如视频播放器,点击一个视频就跳转到界面播放该视频!在很多方面都必须用的到的东西。€€首先来看看s变量:€s ok="小白"€再看看全局变量:€sss ok="小白"€€全局变量的作用是传递数据,比如有些小白不会使用的。点击一个列表跳转一个界面他可能会 新建若干个界面,然后跳转到指定的界面,非常麻烦鸡肋。€€首先新建一个按钮,按钮点击事件如下:€sss ok="小白"€uigo("m.iyu")€€再新建一个界面m.iyu,该界面载入事件如下:€tw(sss.ok)€€当点击按钮后,全局变量ok就变成小白了。m.iyu界面载入事件就是提示这个全局变量,也就成小白了!也就说点击按钮后sss.ok这个变量就变成“小白”,所以m.iyu这个界面也会提示小白!》

【随机启动语录】

〖2017-08-18 16:38:29〗

《sl("你爹|你大爷|你二爷|你大舅|你二舅|你大侄子","|",ok)€//分割为数组€€sran(0,5,sj)€//生产1-6的随机数€€sgsz(ok,sj,yes)€//随机访问语录€tw(yes)》

『小菜』

〔iAPP实例代码〕

【$私有文件夹的使用】

〖2017-08-18 16:39:59〗

《iAPP2.0中,有一个私有文件夹,但很多人都不知道有什么用。其实这个私有文件夹特别实用的,比如你要保存一些东西,但又不想让用户看到,可以保存到私有文件夹下哦。€€私有文件夹的路径是:/data/data/安装包名/files€€路径不用管,直接在保存文件加个$符号就行了。私有文件夹的好处是,用户没有Root权限是无法修改你保存的内容的。比如一些txt文件等,若你保存在%手机内存里,那么很可能被人修改或者看到哦!€》

『小菜』

〔iAPP实例代码〕

【给编辑框添加滚动条方法】

〖2017-08-18 16:40:13〗

《在使用编辑框的时候难免会遇到一个有点蛋疼的问题,编辑框没有滚动条而且主要的是编辑框下滑速度不忍直视,但一个方法即可解决。€首先添加一个滚动控件,在滚动控件里添加编辑框就行了。具体效果可参考iApc的内容预览。非常好用哦!》

『小菜』

〔iAPP实例代码〕

【去除编辑框点击后有背景颜色】

〖2017-08-18 16:41:41〗

《默认编辑框只要设置颜色就会出现一个点击输入后颜色 浅蓝色的背景€€比如设置编辑框白色,输入内容时编辑框背景颜色就会变成浅蓝色,非常影响美观。€解决办法非常简单,在编辑框的获得焦点事件写下代码:€us(编辑框id,"background","")€即可去除默认的颜色当然也可以设置其他颜色。在后面的""里输入颜色代码即可。€》

『小菜』

〔iAPP实例代码〕

【编辑框的内容不垂直居中】

〖2017-08-18 16:44:41〗

《当你设置编辑框高度后,默认的编辑框里的文字是垂直居中的,可在属性里设置:€€gravity=top€€即可。€》

『小菜』

〔iAPP实例代码〕

【给编辑框的文字设置颜色,语法高亮】

〖2017-08-18 16:45:32〗

《可参考iAPP的编辑代码时语法高亮。具体过程就不说了€€编辑框属性里内容:€text=(html)我是绿色我不是绿色€》

『小菜』

〔iAPP实例代码〕

【点击发送QQ临时对话接口代码】

〖2017-08-18 16:46:32〗

《s qq=2089973664€//你的QQ号€ss("mqqwpa://im/chat?chat_type=wpa&uin="+qq+"&version=1",urlqq)€€sit(a,"action", "android.intent.action.VIEW")€sit(a,"data",urlqq)€uit(a, "chooser", "选择QQ")€》

『小菜』

〔iAPP实例代码〕

【点击添加QQ群接口代码】

〖2017-08-18 16:47:12〗

《s qun=242783956€//群号€ss("mqqapi://card/show_pslcard?src_type=internal&version=1&uin="+qun+"&card_type=group&source=qrcode",joinqq)€€sit(a,"action", "android.intent.action.VIEW")€sit(a,"data",joinqq)€uit(a, "chooser", "选择QQ")€》

『小菜』

〔iAPP实例代码〕

【进度条的使用方法】

〖2017-08-18 16:48:23〗

《进度条,也可以是拖动条,这两个都是差不多的,以进度条为例子就行了。€€首页我们做一个倒计时,代码如下:€t()€{€s a=120€for(1;120)€{€stop(1000)€s(a-1,a)€ufnsui()€{€us(进度条id,"progress",a)€}€}€}€€到这里基本就好了,但是细心一点你会发现,进度条只到100就完了,没错!进度条默认最大值是100,也就是他只跑到100就完了,怎么设置呢?€€只需要在属性里加:€max=120€也就是最大值是120就可以了€》

『小菜』

〔iAPP实例代码〕

【给控件加圆角的方法】

〖2017-08-18 16:50:14〗

《需要在载入事件先赋值,代码如下€ngde(5,"#ffffff",ok)€us(1,"background",ok)€€设置id为1的控件圆角的角度是5,背景颜色是#ffffff,通过ok调用,可以多个控件一起调用,还有其他更多属性,可搜索 ngde 查看。€》

『小菜』

〔iAPP实例代码〕

【列表点击颜色的设置】

〖2017-08-18 16:51:45〗

《列表点击颜色有两种,一种是项目点击事件。€€还有一种我比较推荐,就是在列表界面,给线性布局加点击事件,把背景设置为透明就》

『小菜』

〔iAPP实例代码〕

【二维码生成】

〖2017-08-18 16:54:12〗

《.......将以下代码放到按钮控件的点击事件中€s bi=3€.这个是编辑框ID,用于输入内容€s ti=2€.这个是图像控件ID,用于显示二维码€us(ti,"height","125dp")€us(ti,"width","125dp")€ug(bi,"text",ug)€f(ug!="")€{€us(ti,"visibility","0")€uqr(ug,400,ss.uqr)€us(ti,"src",ss.uqr)€.生成二维码€tw("点击二维码可保存")€}€else€{€tw("请不要留空")€us(ti,"visibility","8")€}€€€将以下代码放到二维码图像的点击事件中€f(ss.uqr==null)€{€tw("亲,你还没有生成二维码哦~")€}€else€{€time(4,tm)€ss("yingzi"+tm+".png",jg)€ss("图像已保存至根目录!\n\n名称:"+jg,utw)€bfs(ss.uqr,jg)€utw("","保存成功",utw,"知道了",false,v)€{€}€}€》

『小菜』

〔iAPP实例代码〕

【随机语录】

〖2017-08-18 16:58:32〗

《.把代码放到载入事件中€€s nr="昨天永远是历史,明天永远是未知,今天就在脚下|影子是最忠诚的陪伴,没有背叛,没有谎言|趁年轻,做自己想做的事|爱笑的人,运气不会太差"€.随机语录内容€sl(nr,"|",sl)€.分割语录€sran(0,3,sran)€sgsz(sl,sran,sgsz)€.随机访问0~3的语录内容€us(3,"text",sgsz)€.写入文本控件€》

『小菜』

〔iAPP实例代码〕

【早晚自动换图片】

〖2017-08-18 16:59:56〗

《将代码放到载入事件中€€s id=1€.线性布局ID€s a="白天的图片"€s b="晚上的图片"€us(id,"width","-1")€us(id,"height","-1")€.设置全局背景,当然可以直接在属性里设置。€time(3,time)€ssg(time,0,2,ssg)€.截取时间€f(ssg>=7&&ssg<=18)€{€.判断小时是否大于7且小于18€us(id,"background",a)€}€else€{€.反向执行€us(id,"background",b)€}€》

『小菜』

〔iAPP实例代码〕

【首次使用提示】

〖2017-08-18 17:01:04〗

《.请将代码放到载入事件里。€€s ts="你这是第一次使用本软件哦……\n\n跟随我,就请点击下面的"征战网络"吧!"€.这个是首次使用提示内容,测试完就到根目录删除"firstuseapp.xml"文件,以便下一次测试。€€fe("%firstuseapp.xml",fe)€.判断文件是否存在€f(fe!=true)€{€utw(null,"温馨提示",ts,"征战网络","不了",false,v)€{€.同意则继续使用软件€fw("%firstuseapp.xml","true")€}€else€{€end()€.不同意则退出软件€}€}€》

『小菜』

〔iAPP实例代码〕

【退出软件随机动画】

〖2017-08-18 17:08:45〗

《€.把代码放到『按键按下事件』或者『按键释放事件』里€€f(st_kC==4)€{€sran(0,11,sran)€.生产随机范围数€utw(null,"注意","是否退出软件?","退出","不",false,v)€{€end()€lan(sran)€endcode€.结束执行€}€else€{€}€}€€》

『小菜』

〔iAPP实例代码〕

【表白打字特效】

〖2017-08-18 17:10:02〗

《€s q2="可能遇见你,对我来说是最大的幸福。有了你,我的生涯变的无穷广阔,有了你,世界变得如斯迷人。你是世界,世界是你。我乐意用本人的心,好好的陪着你,爱着你。陪你到你想去的处所,居心走完咱们人生的余下的旅程。在将来的日子里,兴许什么都无奈断定,但独一能够肯定的是,我爱的冫人是你,无论当初仍是未来,我想我这里都会是你最暖和的港湾,都是为你遮风避雨的城墙。"€€s id=这里填写编辑框或者文本控件的ID€slg(q2,q3)€s+(1,q3)€€t()€{€s q=1€s q1=w€s q4=1€s q6=0€w(q==1)€{€ssg(q2,q6,q4,q5)€ufnsui()€{€ss(q5+"_",q5)€€us(id,"text",q5)€}€s(q4+1,q4)€f(q4==q3)€€{€€s q=0€€ufnsui()€€{€€.这里写打完后的执行代码€€}€€}€€stop(200)€.调整打印速度€}€}€》

『小菜』

〔iAPP实例代码〕

【列表利用for循环显示内容】

〖2017-08-18 17:11:23〗

《€€s a="小白;小黑;小龙;哈啊;是是是;嘻嘻嘻"€€//a是要循环的内容用特殊符号";"隔开€€s b=";"€sl(a,b,c)€for(cc;c)€{€ula(v,1=null,2=c)€€}€uls(1,v,"l.iyu",-2,-2)€// 1是列表的ID€》

『小菜』

〔iAPP实例代码〕

【倒计时】

〖2017-08-18 17:11:23〗

《€s id=2€t()€{€ss("正在倒计时60秒",b)€us(id,"text",b)€s a=60€.60秒€for(1;60)€{€f(a==1)€.a倒计时到1时执行的代码€{€.这里还可以加其代码€.可以加倒计时完执行的代码€ufnsui()€{€us(id,"text","倒计时完成")€}€endcode€}€s(a-1,a)€.每循环一次a减1€ss("正在倒计时"+a+"秒",c)€ufnsui()€{€us(id,"text",c)€}€stop(1000)€}€}€》

『小菜』

〔iAPP实例代码〕

【远程更新实例】

〖2017-08-18 17:12:36〗

《€t()€{€hs("http://网站",a)€syso(a)€sj(a,"@","@",b)€.截取版本号€sj(a,"!","!",nr)€.截取更新内容€sj(a,"下载地址¥","¥",xz)€.截取下载地址(直链)€sj(xz,"htt","apk",xz)€.防止截取出错,€ss("htt"+xz+"apk",xz)€syso(xz)€€f(b!=1.0)€.判断版本是否有更新€(比如:网站上是1.1,提示有更新)€{€ufnsui()€{€utw("@iapp6673.png","更新内容",nr,"下载更新","取消",true,f)€{€t()€{€hd(xz,"%文件夹/asb.apk",true,b)€.下载到指定文件夹并重名€f(b==0)€{€ufnsui()€{€tw("下载完成")€fo("%文件夹/asb.apk")€.下载完成后打开安装€}€}€€}€}€else€{€€}€}€}€else€{€€}€}€》

『小菜』

〔iAPP实例代码〕

【简单闪动图】

〖2017-08-18 17:14:45〗

《€dha(dh, true, false)€dh(dh, "duration", 50)€.每次执行的时间间隔€dh(dh, "repeat", 2000000000)€.重复的次数€us(1, "dh", dh)€.图片控件的ID€€》

『小菜』

〔iAPP实例代码〕

【模仿打字和跑马灯特效】

〖2017-08-18 17:15:41〗

《€s q2="这里输入文字东方vv高给个红包v该好好v刚刚好v哈哈哈该sgggh风风光光滚滚滚还好还好哈哈哈哈哈哈喝喝"€s id=这里输入文本ID€€us(id,"singleline","true")€swh("w",w)€slg(q2,q3)€t()€{€s q=1€s q1=w€s q4=1€s q6=0€ufnsui()€{€us(id,"x",w)€}€w(q==1)€{€ssg(q2,q6,q4,q5)€ufnsui()€{€us(id,"text",q5)€us(id,"x",q1)€}€€f(q4==q3)€{€s q4=q3€}€else€{€s(q4+1,q4)€}€€€s(q1-15,q1)€.15是调跳出速度,使用全中文数值调大,全英文调小€€€stop(200)€f(q1<10)€{€s q=0€w(q==0)€{€ssg(q2,q6,q3,q7)€ufnsui()€{€us(id,"text",q7)€}€€s(q6+1,q6)€f(q6==q3)€{€ufnsui()€{€us(id,"text","")€s q1=w€s q4=1€s q6=0€us(id,"x",w)€s q=1€}€}€stop(200)€}€}€}€}€》

『小菜』

〔iAPP实例代码〕

【判断是否有网络】

〖2017-08-18 17:16:23〗

《€t()€{€hs("http://m.baidu.com",a)€f(a==null)€{€ufnsui()€{€tw("无网络或网络不稳")€}€}€else€{€.这里写有网时执行的代码€}€€}€€》

『小菜』

〔iAPP实例代码〕

【QQ获取头像、名称等接口】

〖2017-08-18 17:17:04〗

《€获取QQ头像的地址:€http://q2.qlogo.cn/headimg_dl?bs=qq&dst_uin=474581976&spec=100€€例如QQ号474581976的空间头像的地址是:€http://qlogo1.store.qq.com/qzone/474581976/474581976/100€€获取QQ秀图片地址:€http://qqshow-user.tencent.com/474581976/22/00/1.gif?fr=mobileqq€€强制聊天链接:€http://wpa.qq.com/msgrd?v=3&uin=474581976&site=qq&menu=yes€€获取QQ网名和QQ空间头像的接口€http://users.qzone.qq.com/fcg-bin/cgi_get_portrait.fcg?uins=474581976€€获取QQ昵称€http://r.pengyou.com/fcg-bin/cgi_get_portrait.fcg?uins=834897931€》

『小菜』

〔iAPP实例代码〕

【按钮点击调用侧滑】

〖2017-08-18 17:18:20〗

《€ug(2,"isdraweropen",b)€.2是侧滑的ID€f(b==true)€{€us(2,"closedrawer","start")€€}€else€{€us(2,"opendrawer","start")€}€€€》

『小菜』

〔iAPP实例代码〕

【图片全屏实例】

〖2017-08-18 17:20:06〗

《€width=-1€height=-1€src=@2016211.png€.这是图片路径€scaletype=fitxy€.以上放到图片控件属性里€》

『小菜』

〔iAPP实例代码〕

【sit跳转淘宝搜索】

〖2017-08-18 17:20:09〗

《€s pay="taobao://s.taobao.com/search?"€sit(a,"action", "android.intent.action.VIEW")€sit(a,"data",pay)€uit(a, "chooser", "跳转淘宝搜索")€》

『小菜』

〔iAPP实例代码〕

【sit调用发短信】

〖2017-08-18 17:21:36〗

《€sit(a, "action","android.intent.action.SENDTO") €€€sit(a,"type","vnd.android-dir/mms-sms")€€€sit(a, "data", "smsto:10086") €€€sit(a,"extra","sms_body","短信内容")€€€uit(a, "chooser", "发短信")€直接发短信<由于防止恶意发短信不提供直接发短信方法>€》

『小菜』

〔iAPP实例代码〕

【sit直接调用QQ分享图片】

〖2017-08-18 17:22:07〗

《€€sit(a, "action", "android.intent.action.SEND")€€sit(a, "type", "image/jpeg")€€sit(a,"classname","com.tencent.mobileqq", "com.tencent.mobileqq.activity.JumpActivity")€€sit(a, "extra", "android.intent.extra.STREAM","/sdcard/lunbo.png")€€uit(a, "chooser", "分享图片")€》

『小菜』

〔iAPP实例代码〕

【sit保存图片到QQ收藏】

〖2017-08-18 17:23:04〗

《€€sit(a, "action", "android.intent.action.SEND")€€sit(a, "type", "image/jpeg")€€sit(a,"classname","com.tencent.mobileqq", "cooperation.qqfav.widget.QfavJumpActivity")€€sit(a, "extra", "android.intent.extra.STREAM","/sdcard/lunbo.png")€€uit(a, "chooser", "收藏图片")€》

『小菜』

〔iAPP实例代码〕

【sit调用支付宝】

〖2017-08-18 17:21:05〗

《€€s zfb="alipayqr://platformapi/startapp?saId=10000007&clientVersion=3.7.0.0718&qrcode="€€ss(zfb+"https://qr.alipay.com/fkx08372xrgzmjxuveshx6f",bao)€€sit(a,"action", "android.intent.action.VIEW")€€sit(a,"data",bao)€uit(a, "chooser", "支付宝捐款")€€》

『小菜』

〔iAPP实例代码〕

【sit调用系统软件分享图片实例】

〖2017-08-18 17:25:15〗

《€sit(a, "action", "android.intent.action.SEND")€€sit(a, "type", "*/*")€€sit(a, "extra", "android.intent.extra.STREAM","/sdcard/iApp/Userimg/icon_iapp.png")€€.这是图片路径€uit(a, "chooser", "分享") €€》

『小菜』

〔iAPP实例代码〕

【sit调用系统软件分享软件实例】

〖2017-08-18 17:26:29〗

《€sit(a, "action", "android.intent.action.SEND")€sit(a, "type", "application/vnd.android.package-archive")€€sit(a, "extra", "android.intent.extra.STREAM","/sdcard/iapp.apk")€€.这个是软件路径"/sdcard/iapp.apk",€uit(a, "chooser", "分享软件")€》

『小菜』

〔iAPP实例代码〕

【字体无限变色】

〖2017-08-18 17:26:06〗

《€€€s id=这里是文本控件id€€t()€{€s a=1€.变色暂停的时间€s sj=100€.w无限循环€w(a==1)€{€.随机字体颜色数值€sran(100000,800000,sjs)€ss("-"+sjs,sjs)€ufnsui()€{€us(id, "textcolor", sjs)€}€stop(sj)€}€}€€€€》

『小菜』

〔iAPP实例代码〕

【弹窗示例】

〖2017-08-18 17:27:56〗

《€€s a="@icon.png"€.这里是弹窗图片€s b="登陆"€.这里是弹窗标题€s nr="mian.iyu"€.这里是弹窗的内容,可以输入界面名直接弹出界面€s button="取消"€utw(a,b,nr,button,false,v)€{€}€》

『小菜』

〔iAPP实例代码〕

【文本跑马灯的实例】

〖2017-08-18 17:29:46〗

《€把以下代码放到文本控件属性里€scrollhorizontally=true€ellipsize=marquee€focusable=true€marqueerepeatlimit=marquee_forever€focusableintouchmode=true€scrollhorizontally=true€€€》

『小菜』

〔iAPP实例代码〕

【密码登录实例】

〖2017-08-18 17:30:19〗

《€ug(1,"text",u)€€f(u=="")€{€tw("密码不能为空")€}€else f(u=="123456")€€.这是密码€{€€tw("登录成功")€€uigo("a")€€.这是密码正确后登录的页面€}€€else€€{€€tw("密码错了")€€}€》

『小菜』

〔iAPP实例代码〕

【下拉菜单的实例】

〖2017-08-18 17:31:41〗

《€.以本软件为例,字体颜色更换€s wa="黑;红;绿;蓝"€sl(wa,";",c)€uls(30,c)€.注:30是下拉菜单ID,以上放载入事件。€€€ug(30,"*editem",b)€.获取下拉框参数€€f(b=="红")€.判断是否红色执行以下代码€{€us(15,"textcolor","#ffff0a00")€}€else f(b=="蓝")€.判断是否蓝色执行以下代码€{€us(15,"textcolor","#ff001eff")€}€else f(b=="黑")€.判断是否黑色执行以下代码€{€us(15,"textcolor","#f8000000")€}€else f(b=="绿")€.判断是否绿色执行以下代码€{€us(15,"textcolor","#ff00cc22")€}€.注:15是编辑框ID,以上放到下拉菜单事件选择项目事件。€€》

『小菜』

〔iAPP实例代码〕

【列表的写法】

〖2017-08-18 17:33:29〗

《€ula(a, 10="@1.png",5="你好",6="个人签名",-1="1",8=null)€ula(a, 10="@1.png",5="你好",6="个人签名",-1="1",8=null)€ula(a, 10="@1.png",5="你好",6="个人签名",-1="1",8=null)€ula(a, 10="@1.png",5="你好",6="个人签名",-1="1",8=null)€uls(1,a,"a.iyu",-1,-2)€注:以上在载入事件€ulag(st_vW, -1, h)€注:以上是在列表点击按钮里写€€€€》

『小菜』

〔iAPP实例代码〕

【获取SD卡根目录并显示在列表中】

〖2017-08-18 17:34:45〗

《€s ss=""€.这是根目录€fl(ss,true,b)€for(c;b)€{€ula(a,2="@60a85caf970cd853ebf9529f4a46f42c.png",3=c)€}€fl(ss,false,b)€for(c;b)€{€ula(a,2="@79.png",3=c)€}€uls(8,a,"a.iyu","100dp",-2)€€€€€》

『小菜』

〔iAPP实例代码〕

【随机字体颜色】

〖2017-08-18 17:35:33〗

《s id=这里是文本控件id€€t()€{€s a=1€.变色暂停的时间€s sj=100€.w无限循环€w(a==1)€{€.随机字体颜色数值€sran(100000,800000,sjs)€ss("-"+sjs,sjs)€us(id, "textcolor", sjs)€stop(sj)€}€}€€€€€€》

『小菜』

〔iAPP实例代码〕

【进度的参数】

〖2017-08-18 17:36:19〗

《s jd="progress"€€.这是进度的参数€€s id=.这里是进度条ID€t()€{€us(id,jd,1)€s a=1€€s b=100€€w(100>0)€€{€€ug(id,jd,pp)€s+(pp,1,ppk)€€f(pp==99)€€{€€uigo("a1.iyu")€€end()€}€us(id,jd,ppk)€stop(20)€€}€}€€€€€》

『小菜』

〔iAPP实例代码〕

【按返回键带弹窗实例】

〖2017-08-18 17:36:03〗

《.放在按键按下事件€f(st_kC==4)€{€ufnsui()€{€s a="17301646"€€.这里是弹窗图片€€s b="提示"€€.这里是弹窗标题€€s nr="是否确认退出?"€€.这里是弹窗的内容,可以输入界面名直接弹出界面€€s button="取消"€€s c="确认退出"€utw(a,b,nr,c,button,false,a)€€{€€end()€}€else€{€}€}€}€else€{€}€€》

『小菜』

〔iAPP实例代码〕

【按两次返回键退出】

〖2017-08-18 17:37:45〗

《f(st_kC==4)€{€f(sss.exit==null)€{€sss exit=0€tw("再按一次返回键退出",0)€t()€{€stop(600)€sss exit=null€}€}€else€{€end()€}€}€//以上代码请放入:界面事件→按键按下事€€€€》

『小菜』

〔iAPP实例代码〕

【字体转换语音实例代码】

〖2017-08-18 17:38:05〗

《€ug(id,"text",a)€€.输入编辑框ID€f(a=="")€€{€€tw("请输入文字")€€}€€else€€{€€stobm(a,"utf-8",a)€€sr(a," ","",a)€€t()€€{€€ss("http://tts.baidu.com/text2audio?ie=UTF-8&lan=zh&text="+a,a)€€€€ufnsui()€€{€€tw("下载中...",0)€€}€€€€hd(a,"%iappsj/转语音/转换后.mp3",true,b)€€€€f(b==0)€€{€€€€ufnsui()€€{€€tw("已保存到根目录的%iappsj/转换后目录里面",0)€€}€€bfm("%iappsj/转语音/转换后.mp3",c)€€bfms(c,"st")€€}€€€€}€€€€}€€€€€€》

『小菜』

〔iAPP实例代码〕

【浏览器进度】

〖2017-08-18 17:43:26〗

《€.放到浏览器事件的加载过程进度改变中€f(st_nS == 100)€{€ug(10,"title",a)€//10为浏览器id€us(7,"text",a)€//7为文本id€}€else€{€ss("正在加载网页..("+ st_nS +")",a)€us(7,"text",a)€}€》

『小菜』

〔iAPP实例代码〕

【判断列表是否滑动到底部】

〖2017-08-18 17:44:23〗

《€f(st_vT==0)€€{€€endcode€€}€€//列表可见项目为0时停止执行€€f(ss.gd=="true")€€{€€endcode€€}€€//判断是否以提醒过€€s(st_bT-st_vT,kj)€€f(st_fM==kj)€€{€€//以滚动到底部执行的事件€€ss gd="true"€€tw("已经到底了,没有更多啦!",0)€€}€€€€//以上代码放到列表的 控件事件→触屏滚动事件→滚动€》

『小菜』

〔iAPP实例代码〕

【控件对象】

〖2017-08-18 17:58:36〗

《st_vW€控件对象》

『小菜』

〔iAPP理论知识〕

【执行的动作】

〖2017-08-18 17:59:06〗

《st_eA€执行的动作》

『小菜』

〔iAPP理论知识〕

【图片下载项的状态】

〖2017-08-18 18:00:00〗

《st_drI€图片下载项的状态》

『小菜』

〔iAPP理论知识〕

【开始的位置数值】

〖2017-08-18 18:00:00〗

《st_sT€开始的位置数值》

『小菜』

〔iAPP理论知识〕

【是否获得焦点】

〖2017-08-18 18:01:05〗

《st_hF€是否获得焦点》

『小菜』

〔iAPP理论知识〕

【控件Id】

〖2017-08-18 18:01:23〗

《st_vId€控件Id》

『小菜』

〔iAPP理论知识〕

【结果状态数值】

〖2017-08-18 18:01:59〗

《st_lC€结果状态数值》

『小菜』

〔iAPP理论知识〕

【被载入的网址】

〖2017-08-18 18:02:06〗

《st_url€被载入的网址》

『小菜』

〔iAPP理论知识〕

【触屏位置Y坐标】

〖2017-08-18 18:02:59〗

《st_eY€触屏位置Y坐标》

『小菜』

〔iAPP理论知识〕

【触屏位置X坐标】

〖2017-08-18 18:03:02〗

《st_eX€触屏位置X坐标》

『小菜』

〔iAPP理论知识〕

【结果目标对象】

〖2017-08-18 18:03:59〗

《st_iT€结果目标对象》

『小菜』

〔iAPP理论知识〕

【被改变的旧内容数量】

〖2017-08-18 18:04:12〗

《st_cT€被改变的旧内容数量》

『小菜』

〔iAPP理论知识〕

【适配器的视图中的位置】

〖2017-08-18 18:04:13〗

《st_pN€适配器的视图中的位置》

『小菜』

〔iAPP理论知识〕

【当前界面滑动像素】

〖2017-08-18 18:05:06〗

《st_pS€当前界面滑动像素》

『小菜』

〔iAPP理论知识〕

【第一个可见单元的索引】

〖2017-08-18 18:06:06〗

《st_fM€第一个可见单元的索引》

『小菜』

〔iAPP理论知识〕

【改变后的内容数量】

〖2017-08-18 18:06:12〗

《st_aR€改变后的内容数量》

『小菜』

〔iAPP理论知识〕

【加载中进度数值】

〖2017-08-18 18:06:20〗

《st_nS€加载中进度数值》

『小菜』

〔iAPP理论知识〕

【图片下载项的序号】

〖2017-08-18 18:07:23〗

《st_drD€图片下载项的序号》

『小菜』

〔iAPP理论知识〕

【改变前的内容数量】

〖2017-08-18 18:07:45〗

《st_bE€改变前的内容数量》

『小菜』

〔iAPP理论知识〕

【新增数】

〖2017-08-18 18:08:23〗

《st_cT€新增数》

『小菜』

〔iAPP理论知识〕

【被点击的项目】

〖2017-08-18 18:08:13〗

《st_iD€被点击的项目》

『小菜』

〔iAPP理论知识〕

【可见项目的数量】

〖2017-08-18 18:09:05〗

《st_vT€可见项目的数量》

『小菜』

〔iAPP理论知识〕

【滑动项目控件对象】

〖2017-08-18 18:09:12〗

《st_dW€滑动项目控件对象》

『小菜』

〔iAPP理论知识〕

【检索事件的重复计数】

〖2017-08-18 18:09:28〗

《st_eR€检索事件的重复计数》

『小菜』

〔iAPP理论知识〕

【动作的标识数值】

〖2017-08-18 18:10:04〗

《st_aI€动作的标识数值》

『小菜』

〔iAPP理论知识〕

【滑动操作状态】

〖2017-08-18 18:24〗

《st_sE€滑动操作状态》

『小菜』

〔iAPP理论知识〕

【目前的滚动状态】

〖2017-08-18 18:11:12〗

《st_sE€目前的滚动状态》

『小菜』

〔iAPP理论知识〕

【请求标识数值】

〖2017-08-18 18:11:23〗

《st_sC€请求标识数值》

『小菜』

〔iAPP理论知识〕

【文本内容】

〖2017-08-18 18:12:35〗

《st_sS€文本内容》

『小菜』

〔iAPP理论知识〕

【列表中的适配器的数量】

〖2017-08-18 18:12:45〗

《st_bT€列表中的适配器的数量》

『小菜』

〔iAPP理论知识〕

【本次图片下载完成总数】

〖2017-08-18 18:13:56〗

《st_drJ€本次图片下载完成总数》

『小菜』

〔iAPP理论知识〕

【重力感应】

〖2017-08-18 18:13:46〗

《st_x:X轴€st_y:Y轴€st_z:Z轴》

『小菜』

〔iAPP理论知识〕

【指定控件资源】

〖2017-08-18 18:14:26〗

《src€指定控件资源€控件设定资源,如res/abc.png》

『小菜』

〔iAPP理论知识〕

【分享】

〖2017-08-18 18:25:36〗

《分享€€--分享文件€function Sharing(path)€import "android.webkit.MimeTypeMap"€import "android.content.Intent"€import "android.net.Uri"€import "java.io.File"€FileName=tostring(File(path).Name)€ExtensionName=FileName:match("%.(.+)")€Mime=MimeTypeMap.getSingleton().getMimeTypeFromExtension(ExtensionName)€intent = Intent();€intent.setAction(Intent.ACTION_SEND);€intent.setType(Mime);€file = File(path);€uri = Uri.fromFile(file);€intent.putExtra(Intent.EXTRA_STREAM,uri);€intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);€activity.startActivity(Intent.createChooser(intent, "分享到:"));€end€€--分享文字€text="分享的内容" €intent=Intent(Intent.ACTION_SEND); €intent.setType("text/plain"); €intent.putExtra(Intent.EXTRA_SUBJECT, "分享"); €intent.putExtra(Intent.EXTRA_TEXT, text);€intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); €activity.startActivity(Intent.createChooser(intent,"分享到:")); €》

『小菜』

〔Lua功能实现〕

【调用其他程序打开文件】

〖2017-08-18 18:28:36〗

《调用其它程序打开文件€€function OpenFile(path)€import "android.webkit.MimeTypeMap"€import "android.content.Intent"€import "android.net.Uri"€import "java.io.File"€FileName=tostring(File(path).Name)€ExtensionName=FileName:match("%.(.+)")€Mime=MimeTypeMap.getSingleton().getMimeTypeFromExtension(ExtensionName)€if Mime then intent = Intent(); €intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); €intent.setAction(Intent.ACTION_VIEW);€intent.setDataAndType(Uri.fromFile(File(path)), Mime); €activity.startActivity(intent);€else€Toastc("找不到可以用来打开此文件的程序")€end€end》

『小菜』

〔Lua功能实现〕

【图片圆角】

〖2017-08-18 18:30:41〗

《图片圆角€€function GetRoundedCornerBitmap(bitmap,roundPx) €import "android.graphics.PorterDuffXfermode"€import "android.graphics.Paint"€import "android.graphics.RectF"€import "android.graphics.Bitmap"€import "android.graphics.PorterDuff$Mode"€import "android.graphics.Rect"€import "android.graphics.Canvas"€import "android.util.Config"€width = bitmap.getWidth()€output = Bitmap.createBitmap(width, width,Bitmap.Config.ARGB_8888)€canvas = Canvas(output); €color = 0xff424242; €paint = Paint()€rect = Rect(0, 0, bitmap.getWidth(), bitmap.getHeight()); €rectF = RectF(rect); €paint.setAntiAlias(true);€canvas.drawARGB(0, 0, 0, 0); €paint.setColor(color); €canvas.drawRoundRect(rectF, roundPx, roundPx, paint); €paint.setXfermode(PorterDuffXfermode(Mode.SRC_IN)); €canvas.drawBitmap(bitmap, rect, rect, paint); €return output; €end€import "android.graphics.drawable.BitmapDrawable"€圆角弧度=50€bitmap=loadbitmap(picturePath)€RoundPic=GetRoundedCornerBitmap(bitmap)》

『小菜』

〔Lua功能实现〕

【发送短信】

〖2017-08-18 18:33:36〗

《发送短信€€--后台发送短信€require "import"€import "android.telephony.*"€SmsManager.getDefault().sendTextMessage(tostring(号码), nil, tostring(内容), nil, nil)€€--调用系统发送短信€import "android.content.Intent" €import "android.net.Uri" €uri = Uri.parse("smsto:"..号码)€intent = Intent(Intent.ACTION_SENDTO, uri)€intent.putExtra("sms_body",内容) €intent.setAction("android.intent.action.VIEW")€activity.startActivity(intent)》

『小菜』

〔Lua功能实现〕

【判断数组中是否存在某个值】

〖2017-08-18 18:35:23〗

《判断数组中是否存在某个值€€function Table_exists(tables,value)€for index,content in pairs(tables) do€if content:find(value) then€return true€end€end€end》

『小菜』

〔Lua功能实现〕

【各种事件】

〖2017-08-18 18:37:56〗

《各种事件€€function main(...)€  --...是newActivity传递过来的参数。€  print("入口函数",...)€end€function onCreate()€  print("窗口创建")€end€function onStart()€  print("活动开始")€end€function onResume()€  print("返回程序")€end€function onPause()€  print("活动暂停")€end€function onStop()€  print("活动停止")€end€function onDestroy()€  print("程序已退出")€end€function onResult(name,...)€  --name:返回的活动名称€  --...:返回的参数€  print("返回活动",name,...)€end€function onCreateOptionsMenu(menu)€  --menu:选项菜单。€  menu.add("菜单")€end€function onOptionsItemSelected(item)€  --item:选中的菜单项€  print(item.Title)€end€function onConfigurationChanged(config)€  --config:配置信息€  print("屏幕方向关闭")€end€function onKeyDown(keycode,event)€  --keycode:键值€  --event:事件€  print("按键按下",keycode)€end€function onKeyUp(keycode,event)€  --keycode:键值€  --event:事件€  print("按键抬起",keycode)€end€function onKeyLongPress(keycode,event)€  --keycode:键值€  --event:事件€  print("按键长按",keycode)€end€function onTouchEvent(event)€  --event:事件€  print("触摸事件",event)€end€function onKeyDown(c,e)€  if c==4 then€--返回键事件€end€end€€id.onClick=function()€--控件被单击€end€id.onLongClick=function()€--控件被长按€end€€id.onItemClick=function(p,v,i,s)€--列表项目被单击€项目=v.Text€return true€end€id.onItemLongClick=function(p,v,i,s)€--列表项目被长按€项目=v.Text€return true€end€€id.onItemLongClick=function(p,v,i,s)€--列表项目被长按€项目=v.Text€return true€end€--Spinner的项目单击事件€id.onItemSelected=function(l,v,p,i) €项目=v.Text€end€--ExpandableListView的父项目与子项目单击事件€id.onGroupClick=function(l,v,p,s)€  print(v.Text..":GroupClick")€end€id.onChildClick=function(l,v,g,c)€  print(v.Text..":ChildClick")€end》

『小菜』

〔Lua功能实现〕

【Shell执行】

〖2017-08-17 09:13:12〗

《function exec(cmd)€local p=io.popen(string.format('%s',cmd))€local s=p:read("*a")€p:close()€return s€end€€print(exec("echo  ...."))€€部分常用命令:€--删除文件或文件夹€rm -r /路径€€--复制文件或文件夹€cp -r inpath outpath€€--移动文件或文件夹€mv -r inpath outpath€€--挂载系统目录€mount -o remount,rw path€€--修改系统文件权限€chmod 755 /system/build.prop€€--重启€reboot €€--关机€reboot -p€--重启至recovery€reboot recovery》

『小菜』

〔Lua功能实现〕

【各种事件】

〖2017-08-17 09:15:26〗

《各种事件€function main(...)€--...是newActivity传递过来的参数。€print("入口函数",...)€end€€function onCreate()€print("窗口创建")€end€€function onStart()€ print("活动开始")€end€€function onResume()€€ print("返回程序")€end€€function onPause()€print("活动暂停")€end€€function onStop()€print("活动停止")€end€€function onDestroy()€print("程序已退出")€end€€function onResult(name,...)€--name:返回的活动名称 -€-...:返回的数€print("返回活动",name,...)€end€€function onCreateOptionsMenu(menu)€--menu:选项菜单。€menu.add("菜单")€end€€function onOptionsItemSelected(item)€ --item:选中的菜单项€print(item.Title)€end€€function onConfigurationChanged(config)€ --config:配置信息€print("屏幕方向关闭")€end€€function onKeyDown(keycode,event)€--keycode:键值€--event:事件€print("按键按下",keycode)€end€€function onKeyUp(keycode,event)€--keycode:键值€--event:事件€print("按键抬起",keycode)€end€€function onKeyLongPress(keycode,event)€ --keycode:键值€--event:事件€print("按键长按",keycode)€end€function onTouchEvent(event)€--event:事件€print("触摸事件",event)€end€€function onKeyDown(c,e)€if c==4 then€--返回键事件€end€end€€id.onClick=function()€--控件被单击€€end€€id.onLongClick=function()€--控件被长按€end€€€id.onItemClick=function(p,v,i,s)€--列表项目被单击€项目=v.Text€return true€end€€id.onItemLongClick=function(p,v,i,s)€--列表项目被长按€项目=v.Text€return true€end€€€id.onItemLongClick=function(p,v,i,s)€--列表项目被长按€项目=v.Text€return true€end€€--Spinner的项目单击事件€id.onItemSelected=function(l,v,p,i) €项目=v.Text€end€€--ExpandableListView的父项目与子项目单击事件€id.onGroupClick=function(l,v,p,s)€print(v.Text..":GroupClick")€end€€id.onChildClick=function(l,v,g,c)€print(v.Text..":ChildClick")€end€》

『小菜』

〔Lua功能实现〕

【剪切板操作】

〖2017-08-17 09:22:36〗

《剪切板操作€import "android.content.Context" €--导入类€€a=activity.getSystemService(Context.CLIPBOARD_SERVICE).getText() €--获取剪贴板 €€activity.getSystemService(Context.CLIPBOARD_SERVICE).setText(edit.Text) €--写入剪贴板€》

『小菜』

〔Lua功能实现〕

【一键加群与QQ聊天】

〖2017-08-17 09:23:56〗

《一键加群与QQ聊天€import "android.net.Uri"€import "android.content.Intent"€--加群€url="mqqapi://card/show_pslcard?src_type=internal&version=1&uin=383792635&card_type=group&source=qrcode"€activity.startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(url)))€€--QQ聊天€url="mqqwpa://im/chat?chat_type=wpa&uin=2113075983"€activity.startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(url)))€》

『小菜』

〔Lua功能实现〕

【获取视角中的所有文本】

〖2017-08-17 09:25:06〗

《获取视图中的所有文本€function GetAllText(view)€textTable={}€function GetText(Parent)€local number=Parent.getChildCount()€for i=0,number do€local view=Parent.getChildAt(i)€if pcall(function()view.addView(TextView(activity))end) then GetText(view)€elseif pcall(function()view.getText()end) then

table.insert(textTable,tostring(view.Text))€end€end€end€GetText(view)€return textTable€end€€print(table.unpack(GetAllText(Parent)))》

『小菜』

〔Lua功能实现〕

【匹配汉字】

〖2017-08-17 09:27:46〗

《匹配汉字€function filter_spec_chars(s)€local ss = {}€for k = 1, #s do€local c = string.byte(s,k)€if not c then break end€if (c>=48 and c<=57) or (c>= 65 and c<=90) or (c>=97 and c<=122) then€if not string.char(c):find("%w") then€table.insert(ss, string.char(c))€end€elseif c>=228 and c<=233 then€local c1 = string.byte(s,k+1)€local c2 = string.byte(s,k+2)€if c1 and c2 then€local a1,a2,a3,a4 = 128,191,128,191€if c == 228 then a1 = 184€elseif c == 233 then a2,a4 = 190,c1 ~= 190 and 191 or 165€end€if c1>=a1 and c1<=a2 and c2>=a3 and c2<=a4 then€k = k + 2€table.insert(ss, string.char(c,c1,c2))€end€end€end€end€return table.concat(ss)€end€print(filter_spec_chars("A1B2汉C3D4字E5F6,,,"))€-来源网络,加了个if过滤掉英文与数字,使其只捕获中文€》

『小菜』

〔Lua功能实现〕

【播放音乐与视频】

〖2017-08-17 09:30:15〗

《播放音乐与视频€import "android.media.MediaPlayer"€mediaPlayer =  MediaPlayer()€€--初始化参数 €mediaPlayer.reset()€--设置播放资源 €mediaPlayer.setDataSource("storage/sdcard0/a.mp3")€€--开始缓冲资源 €mediaPlayer.prepare()€--是否循环播放该资源 €mediaPlayer.setLooping(true)€€--缓冲完成的监听 €mediaPlayer.setOnPreparedListener(MediaPlayer.OnPreparedListener() { €onPrepared=function(mediaPlayer€mediaPlayer.start()€end}); €--是否在播放 €mediaPlayer.isPlaying()€--暂停播放€mediaPlayer.pause()€--从30位置开始播放 €mediaPlayer.seekTo(30)€€--停止播放 €mediaPlayer.stop()€€--播放视频€--视频的播放与音乐播放过程一样: €--先创建一个媒体对象 €import "android.media.MediaPlayer"€mediaPlayer =  MediaPlayer()€--初始化参数 €mediaPlayer.reset()€€--设置播放资源 €mediaPlayer.setDataSource("storage/sdcard0/a.mp4")€€--拿到显示的SurfaceView €sh = surfaceView.getHolder()€sh.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS)€--设置显示SurfaceView

mediaPlayer.setDisplay(sh)€€--设置音频流格式 €mediaPlayer.setAudioStreamType(AudioManager.Stream_Music)€€--开始缓冲资源 €mediaPlayer.prepare()€--缓冲完成的监听 €mediaPlayer.setOnPreparedListener(MediaPlayer.OnPreparedListener{ €onPrepared=function(mediaPlayer)€--开始播放 €mediaPlayer.start()€end€}); €--释放播放器 €mediaPlayer.release()€€--非原创€》

『小菜』

〔Lua功能实现〕

【获取系统SDK,Android版本及设备型号】

〖2017-08-17 09:35:25〗

《device_model = Build.MODEL --设备型号€€version_sdk = Build.VERSION.SDK --设备SDK版本 €€version_release = Build.VERSION.RELEASE --设备的系统版本》

『小菜』

〔Lua功能实现〕

【控件颜色修改】

〖2017-08-17 09:36:14〗

《控件颜色修改€import "android.graphics.PorterDuffColorFilter"€import "android.graphics.PorterDuff"€€--修改按钮颜色€button.getBackground().setColorFilter(PorterDuffColorFilter(0xFFFB7299,PorterDuff.Mode.SRC_ATOP))€€--修改编辑框颜色€edittext.getBackground().setColorFilter(PorterDuffColorFilter(0xFFFB7299,PorterDuff.Mode.SRC_ATOP));€--修改Switch颜色€switch.ThumbDrawable.setColorFilter(PorterDuffColorFilter(0xFFFB7299,PorterDuff.Mode.SRC_ATOP));€switch.TrackDrawable.setColorFilter(PorterDuffColorFilter(0xFFFB7299,PorterDuff.Mode.SRC_ATOP))€€--修改ProgressBar颜色€progressbar.IndeterminateDrawable.setColorFilter(PorterDuffColorFilter(0xFFFB7299,PorterDuff.Mode.SRC_ATOP))€€--修改SeekBar滑条颜色€seekbar.ProgressDrawable.setColorFilter(PorterDuffColorFilter(0xFFFB7299,PorterDuff.Mode.SRC_ATOP))€--修改SeekBar滑块颜色€seekbar.Thumb.setColorFilter(PorterDuffColorFilter(0xFFFB7299,PorterDuff.Mode.SRC_ATOP))€》

『小菜』

〔Lua功能实现〕

【修改对话框按钮颜色】

〖2017-08-17 09:38:38〗

《修改对话框按钮颜色

function DialogButtonFilter(dialog,button,WidgetColor)€if Build.VERSION.SDK_INT >= 21 then€import "android.graphics.PorterDuffColorFilter"€import "android.graphics.PorterDuff"€if button==1 then€dialog.getButton(dialog.BUTTON_POSITIVE).setTextColor(WidgetColor)€elseif button==2 then€dialog.getButton(dialog.BUTTON_NEGATIVE).setTextColor(WidgetColor)€elseif button==3 then€dialog.getButton(dialog.BUTTON_NEUTRAL).setTextColor(WidgetColor)€end€end€end€--第一个参数为对话框的变量€--第二个参数为1时,则修改POSITIVE按钮颜色,为二则修改NEGATIVE按钮颜色,为三则修改NEUTRAL按钮颜色€--第三个参数为要修改成的颜色€》

『小菜』

〔Lua功能实现〕

【查询本地所有视频】

〖2017-08-17 09:40:43〗

《查询本地所有视频€function QueryAllVideo()€import "android.provider.MediaStore"€cursor = activity.ContentResolver€mImageUri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI;€mCursor = cursor.query(mImageUri,nil,nil,nil,MediaStore.Video.Media.DATE_TAKEN)€mCursor.moveToLast()€VideoTable={}€while mCursor.moveToPrevious() do€path = mCursor.getString(mCursor.getColumnIndex(MediaStore.Video.Media.DATA))€table.insert(VideoTable,tostring(path))€end€mCursor.close()€return VideoTable€end€--返回一个表》

『小菜』

〔Lua功能实现〕

【查询本地所有图片】

〖2017-08-17 09:43:16〗

《查询本地所有图片€function QueryAllImage()€import "android.provider.MediaStore"€cursor = activity.ContentResolver€mImageUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;€mCursor = cursor.query(mImageUri,nil,nil,nil,MediaStore.Images.Media.DATE_TAKEN)€mCursor.moveToLast()€imageTable={}€while mCursor.moveToPrevious() do€path = mCursor.getString(mCursor.getColumnIndex(MediaStore.Images.Media.DATA))€table.insert(imageTable,tostring(path))€end€mCursor.close()€return image€Tableend€--返回一个表€》

『小菜』

〔Lua功能实现〕

【递归查找文件】

〖2017-08-17 09:45:46〗

《递归查找文件€function outPath(ret) €for i,p in pairs(luajava.astable(ret))do€print(p)€end€end€function find(catalog,name)€local n=0€ local t=os.clock()€local ret={}€require "import"€ import "java.io.File"€ import "java.lang.String"€function FindFile(catalog,name)€local name=tostring(name)€ local ls=catalog.listFiles() or File{}€for 次数=0,#ls-1 do€ --local 目录=tostring(ls[次数])€local f=ls[次数]€if f.isDirectory() then--如果是文件夹则继续匹配€FindFile(f,name)€else--如果是文件则€n=n+1€if n%1000==0 then€print(n,os.clock()-t)€end€ local nm=f.Name€ if string.find(nm,name) then€--thread(insert,目录)€table.insert(ret,tostring(f))€end€ end€luajava.clear(f)€end€end€FindFile(catalog,name)€call("outPath",ret)€end€import "java.io.File"€€catalog=File("/sdcard/AndroLua")€name=".j?pn?g"€thread(find,catalog,name)€》

『小菜』

〔Lua功能实现〕

【获取手机内置存储路径】

〖2017-08-17 09:50:13〗

《获取手机内置存储路径€Environment.getExternalStorageDirectory().toString()》

『小菜』

〔Lua功能实现〕

【获取已安装程序的包名、版本号、最后更新时间、图标、应用名称】

〖2017-08-17 09:51:34〗

《获取已安装程序的包名、版本号、最后更新时间、图标、应用名称€function GetAppInfo(包名)€import "android.content.pm.PackageManager"€ local pm = activity.getPackageManager();€local 图标 = pm.getApplicationInfo(tostring(包名),0)€local 图标 = 图标.loadIcon(pm);€local pkg = activity.getPackageManager().getPackageInfo(包名, 0); € local 应用名称 = pkg.applicationInfo.loadLabel(activity.getPackageManager())€local 版本号 = activity.getPackageManager().getPackageInfo(包名, 0).versionName€local 最后更新时间 = activity.getPackageManager().getPackageInfo(包名, 0).lastUpdateTime€local cal = Calendar.getInstance();€ cal.setTimeInMillis(最后更新时间); € local 最后更新时间 = cal.getTime().toLocaleString()€return 包名,版本号,最后更新时间,图标,应用名称€end€》

『小菜』

〔Lua功能实现〕

【获取指定安装包的包名,图标,应用名】

〖2017-08-17 09:53:45〗

《获取指定安装包的包名,图标,应用名€import "android.content.pm.PackageManager"€import "android.content.pm.ApplicationInfo"€function GetApkInfo(archiveFilePath)€pm = activity.getPackageManager()€info = pm.getPackageArchiveInfo(archiveFilePath, PackageManager.GET_ACTIVITIES); €if info ~= nil then€appInfo = info.applicationInfo;€appName = tostring(pm.getApplicationLabel(appInfo))€packageName = appInfo.packageName; --安装包名称€ version=info.versionName; --版本信息€icon = pm.getApplicationIcon(appInfo);--图标€end€return packageName,version,icon€end€》

『小菜』

〔Lua功能实现〕

【获取某程序是否安装】

〖2017-08-17 09:55:27〗

《获取某程序是否安装€if pcall(function() activity.getPackageManager().getPackageInfo("包名",0) end) then€print("安装了")€else€print("没安装")€end€》

『小菜』

〔Lua功能实现〕

【设置TextView字体风格】

〖2017-08-17 09:57:06〗

《设置TextView字体风格€import "android.graphics.Paint"€--设置中划线€id.getPaint().setFlags(Paint. STRIKE_THRU_TEXT_FLAG)€--设置下划线€id.getPaint().setFlags(Paint. UNDERLINE_TEXT_FLAG )€--设置加粗€id.getPaint().setFakeBoldText(true)€--设置斜体€id.getPaint().setTextSkewX(0.2)€€--设置TypeFace€import "android.graphics.Typeface"€id.getPaint().setTypeface()€--参数列表€Typeface.DEFAULT 默认字体€Typeface.DEFAULT_BOLD 加粗字体€Typeface.MONOSPACE monospace字体€Typeface.SANS_SERIF sans字体€Typeface.SERIF serif字体》

『小菜』

〔Lua功能实现〕

【缩放图片】

〖2017-08-17 09:59:03〗

《缩放图片€function rotateToFit(bm,degrees)€import "android.graphics.Matrix"€import "android.graphics.Bitmap"€width = bm.getWidth()€height = bm.getHeight()€matrix =  Matrix()€matrix.postRotate(degrees)€bmResult = Bitmap.createBitmap(bm, 0, 0, width, height, matrix, true)€returnbmResult€end€bm=loadbitmap(图片路径)€缩放级别=2€rotateToFit(bm,degrees)€--非原创》

『小菜』

〔Lua功能实现〕

【获取运营商名称】

〖2017-08-17 10:01:25〗

《获取运营商名称€import "android.content.Context" €运营商名称 = this.getSystemService(Context.TELEPHONY_SERVICE).getNetworkOperatorName()€print(运营商名称)€--添加权限  READ_PHONE_STATE》

『小菜』

〔Lua功能实现〕

【Drawable着色】

〖2017-08-17 10:02:04〗

《Drawable着色€function ToColor(path,color)€ local  aa=BitmapDrawable(loadbitmap(tostring(path)))€aa.setColorFilter(PorterDuffColorFilter(color,PorterDuff.Mode.SRC_ATOP))€return aa€end》

『小菜』

〔Lua功能实现〕

【保存图片到本地】

〖2017-08-17 10:03:15〗

《保存图片到本地€function€SavePicture(name,bm)

if  bm then€import "java.io.FileOutputStream"€import "java.io.File"€import "android.graphics.Bitmap"€name=tostring(name)€f = File(name)€out = FileOutputStream(f)€bm.compress(Bitmap.CompressFormat.PNG,90, out)€out.flush()€out.close()€return true

else€return false€end€end》

『小菜』

〔Lua功能实现〕

【调用应用商店搜索应用】

〖2017-08-17 10:05:20〗

《调用应用商店搜索应用€import "android.content.Intent"€import "android.net.Uri"€intent = Intent("android.intent.action.VIEW")€intent .setData(Uri.parse( "market://details?id="..activity.getPackageName()))€this.startActivity(intent)》

『小菜』

〔Lua功能实现〕

【TextView显示图片】

〖2017-08-16 17:06:52〗

《/** €*HashMap存放图片的文字代码和图片的路径 €*/ €HashMap keyImage = new HashMap(); €keyImage.put("[image01]", R.drawable.img1);€keyImage.put("[image02]", R.drawable.img2);€TextView textView = (TextView)€findViewById(R.id.content_editText1); €//为TextView添加文本改变监听 €textView.addTextChangedListener(new MarkImageWatcher(keyImage,MainActivity.this)); €textView.setText("[image01]"); €/** €*自定义TextWatcher类 €*/ €public class MarkImageWatcher implements TextWatcher { €HashMap key = new HashMap(); €Context context; €//构造方法,€€public€MarkImageWatcher(HashMap key, Context context) { €super(); €this.key = key; €this.context = context; €} €@Override €public void afterTextChanged(Editable arg0) { €String text = arg0.toString();€Iterator iterator = key.keySet().iterator(); €while (iterator.hasNext()) { €String k = iterator.next(); €if (text.contains(k)) { €int index = 0;€while ((index = text.indexOf(k, index)) != -1) { €Drawable drawable = context.getResources().getDrawable(key.get(k));€drawable.setBounds(0, 0, 300,500); €//将代表图片的文本标记为图片 €arg0.setSpan(new ImageSpan(drawable,ImageSpan.ALIGN_BASELINE), index,index + k.length(),Spannable.SPAN_INCLUSIVE_EXCLUSIVE);€index += k.length(); €}€} €} €} €}》

『小菜』

〔Android功能实现〕

【Activity跳转+动画】

〖2017-08-16 17:14:25〗

《1.普通跳转: €Intent intent = new Intent(); €intent.setClass(this,NextActivity.class); €//往下一个界面传值,可省略 €intent.putExtra("key",value);€startActivity(intent); €€//下一个界面接收值: €Intent intent = this.getIntent(); €String value = intent.getStringExtra("key"); €//如果是int型就getIntgerExtra€€2.带返回值的跳转:€startActivityForResult(intent,requestcode); €//在本类中监听返回结果€@Override €protected void onActivityResult(intrequestCode, int resultCode, Intent data){ €//得到返回值 €String result = data.getStringExtra("key"); €} €//下一个界面写: €Intent intent = this.getIntent(); €intent.putExtra("key",value);€setResult(resultCode,intent); €€3.销毁activity :finish(); €4.activity的重绘: €//重新加载一个布局 €this.setContentView(R.layout.new_main); €€5.activity切换动画: €//在startActivity之后添加€this.overridePendingTransition(R.anim.enterAnim, R.anim.exitAnim); €》

『小菜』

〔Android功能实现〕

【开机自启程序】

〖2017-08-16 17:18:28〗

《€€1.新建一个类继承广播类: €public class BootBroadcastReceiver extends BroadcastReceiver { €static final String action_boot = "android.intent.action.BOOT_COMPLETED";€@Override €public void onReceive(Context context, Intent intent) { €if (intent.getAction().equals(action_boot)) { €//接受到开机广播后打开MainActivity界面 €Intent ootStartIntent = new Intent(context, MainActivity.class);€ootStartIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); €context.startActivity(ootStartIntent); €} €} €} €2.在配置清单中配置这个广播: €€ € €€ € € €€2.添加开机自启权限: €€》

『小菜』

〔Android功能实现〕

【浏览器WebView】

〖2017-08-16 10:13:15〗

《1.设置支持JavaScript: €webView.getSettings().setJavaScriptEnabled(true); €2.加载网页: €webView.loadUrl("http://www.baidu.com"); €//加载本地文件: €webView.loadUrl("file:///storage/sdcard0/index.html"); €webView.loadUrl("content://com.android.htmlfileprovider/sdcard/index.html"); €//加载assets中文件: €webView.loadUrl("file:///android_asset/index.html"); €3.获取原始URL:webView.getOriginalUrl(); €4.获取当前URL:webView.getUrl(); €5.浏览器加载网页的监听 €webView.setWebViewClient(new WebViewClient() { €@Override €public void onPageFinished(WebView view,String url) { €//加载完成 €} €@Override €public€boolean€shouldOverrideUrlLoading(WebView view, String url) { €//设置在本浏览器打开新网页 €view.loadUrl(url); €return true;€} €}); €€7.设置webview背景透明:€webView.setBackgroundColor(0); €//4.0上在xml中关闭硬件加速€android:layerType="software" €€8.后退网页:€if (webView.canGoBack()) { €webView.goBack(); €} €€9.下载链接单击监听事件 :€webView.setDownloadListener(new DownloadListener{€@Override€public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimetype,long contentLength) {€€Uri uri = Uri.parse(url);  //调用本地浏览器打开€Intent intent = new Intent(Intent.ACTION_VIEW, uri);€startActivity(intent);€}  €} );€€10.保存浏览器网页截图:€Picture pic = webView.capturePicture(); €int width = pic.getWidth(); €int height = pic.getHeight(); €if (width > 0 && height > 0) { €Bitmap bmp=Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); €Canvas canvas=new Canvas(bmp); €pic.draw(canvas);€try { €String filename="sdcard0/"+System.currentTimeMillis()+".jpg"; €FileOutputStream fos=newFileOutputStream(filename); €if(fos!=null){€bmp.compress(Bitmap.CompressFormat.JPEG, 90, fos); €fos.close(); €} €} catch (Exception e) { €e.printStackTrace(); €} €} €》

『小菜』

〔Android控件知识〕

【日期和时间选择控件】

〖2017-08-16 10:17:56〗

《一、日期控件 DatePicker :€€//设置右边日历不显示 €android:calendarViewShown="false" €//设置默认时间和改变后的监听事件 €datePicker.init(2015,05,10,new DatePicker.OnDateChangedListener()€{ €€@Override €public void onDateChanged(DatePicker datePicker, int i, int i2, int i3) { €€ //后三个参数是改变后的年月里,月是0开始的 €} €}); €€二、时间控件 TimePicker :€€//设置为24小时制 €timePicker.setIs24HourView(true); €//时间改变后的监听 €timePicker.setOnTimeChangedListener(new TimePicker.OnTimeChangedListener() { €@Override €public void onTimeChanged(TimePicker timePicker, int i, int i2) { €€//后两个参数是控件选择的时,分 €} €}); €€三、时间和日期选择对话框:€//日期选择对话框: €DatePickerDialog datePickerDialog = new DatePickerDialog(this,CallBack,2015,05,10); €//时间选择对话框: €TimePickerDialog timePickerDialog = new TimePickerDialog(this, CallBack,12,12,true); € //后三个参数默认时间,时间最后参数是否24小时制€€2.CallBack选择完成后的事件:€€//日期事件 €DatePickerDialog.OnDateSetListener CallBack = new DatePickerDialog.OnDateSetListener() {€ @Override €public void onDateSet(DatePicker datePicker, int i, int i2, int i3) { €//后三个参数年,月,日 € } €}; €€//时间事件 €TimePickerDialog.OnTimeSetListener CallBack = new TimePickerDialog.OnTimeSetListener() { €@Override €public void onTimeSet(TimePicker timePicker, int i, int i2) { €//后两个参数,时,分 €} €}; €》

『小菜』

〔Android控件知识〕

【EditText编辑框】

〖2017-08-16 13:57〗

《一、xml文件中属性: €1.最大长度:android:maxLength="10"€ 2.默认内容:android:hint="请输入内容" €android€textColorHint="#000000" €3.限制输入:android:digits="123+" €4.单行显示:android:singleLine="true" €5.每行长度:android:ems="5" €6.最多几行:android:Lines="4" €€二、java判断编辑框是否为空: €//去空格 €String serch_text = editText.getText().toString().trim(); €if(serch_text.isEmpty()){    } €€三、编辑框内容改变时监听: €editText.addTextChangedListener(new TextWatcher() { €@Override €public void€beforeTextChanged(CharSequence charSequence, int i, int i2, int i3) { € //正在修改 €} €@Override €public void onTextChanged(CharSequence charSequence, int i, int i2, int i3) { €//修改之前€} €@Override €public void afterTextChanged(Editable editable) { €//修改之后的内容 String str = editable.toString(); €//清除输入内容 editable.clear();€} €}); €€四、添加过滤器: €€editText.setFilters(new InputFilter[]{null,null}); €//过滤器示例: €1.小写转换成大写 €new InputFilter.AllCaps()€€2.自定义过滤器 €new InputFilter()€{ €@Override €public CharSequence filter(CharSequence charSequence, int i, int i2, Spanned spanned, int i3, int i4) { €//charSequence正在输入的字符,spanned上次输入的字符 €//过滤非法字符替换成*返回就可以了€return charSequence ; €}€}€€五、设置editText能否编辑:€€1.不可编辑: €editText.setFocusable(false); €contentEdit.setFocusableInTouchMode(false);€€2.可编辑: €editText.setFocusableInTouchMode(true);€editText.setFocusable(true); €editText.requestFocus(); €》

『小菜』

〔Android控件知识〕

【EditText文本高亮】

〖2017-08-16 14:01〗

《/** € *HashMap存放图片的文字代码和图片的路径 €*/ €HashMap€keyImage = new HashMap(); €key.put("public",MainActivity.this.getResources().getColor(R.color.red)); €key.put("void",MainActivity.this.getResources().getColor(R.color.red)); €€TextView textView = (TextView) findViewById(R.id.content_editText1); €//为TextView添加文本改变监听 €textView.addTextChangedListener(new MarkImageWatcher(keyImage,MainActivity.this)); €textView.setText("[image01]"); €/** € *自定义TextWatcher类 € */ €public class MarkImageWatcher€implements€TextWatcher { €HashMap key = new HashMap();€Context context; €//构造方法€public€MarkImageWatcher(HashMap key, Context context) { €super();€this.key = key; €this.context = context; €}€@Override €public void€afterTextChanged(Editable arg0) { €String text = arg0.toString();€Iterator iterator = key.keySet().iterator(); €while (iterator.hasNext()) { €String k = iterator.next();€if (text.contains(k)) { €int index = 0; €while ((index = text.indexOf(k, index)) != -1) {€arg0.setSpan(new ForegroundColorSpan(key.get(k)), index,index + k.length(),Spanned SPAN_EXCLUSIVE_EXCLUSIVE); €index += k.length(); €} €}€}€} €} €与标记图片类似,TextView和EditText可以 €互换,EditText本身也是从TextView继承过来的。所

以EditText也可以标记图片,Textview也可以标记颜色》

『小菜』

〔Android控件知识〕

【菜单选项操作】

〖2017-08-16 17:21:10〗

《java代码写在Activity类体中 €€// 加载菜单布局 €@Override €public boolean onCreateOptionsMenu(Menu menu) { €getMenuInflater().inflate(R.menu.main, menu); €return true; €} €// 菜单点击事件€public€boolean€onOptionsItemSelected(MenuItem item) { €switch (item.getItemId()) { €case R.id.exit: €finish(); €break; €case R.id.about: €Toast.makeText(MainActivity.this, "你好",Toast.LENGTH_SHORT).show(); €break; €} €return super.onOptionsItemSelected(item);€} €//菜单布局文件目录位于res/menu下 €€》

『小菜』

〔Android控件知识〕

【自定义View】

〖2017-08-16 17:25:26〗

《1.写一个类继承自View,添加构造方法,重写 €onDraw方法,所有的绘制过程都是在这个方法中 €执行,canvas就是画布。 €public class MyView extends View{ €public MySurfaceView(Context context)€{ €super(context); €} €@Override €protected void onDraw(Canvas canvas) { €/** €*所有绘画代码写在这里 €*canvas就是这个画布 € */ €super.onDraw(canvas); €} €} €2.有画布了还要有画笔才能开始画画,所以先制 €作画笔: €Paint paint = new Paint(); €//设置画笔属性,更多设置看API文档 €paint.setColor(Color.RED); €paint.setTextSize(20); €3.用画笔绘画: €//画文字,xy是坐标 €canvas.drawText("你好啊", x, y, paint); €//画矩形前四个属性对应四条边坐标 €canvas.drawRect(left, top, right, bottom, paint); €//画图片 €canvas.drawBitmap(bitmap, x, y, paint); €/**在IO流中有关于bitmap图片的操作*/ €4.用户操作的事件处理: €//重写触屏事件,至于获取坐标参照基础部分的触摸事件 €@Override €public boolean €onTouchEvent(MotionEvent event) { €return super.onTouchEvent(event); €} €//重写键盘事件,至于获取键码参照基础部分重写各种键 €@Override €public boolean onKeyDown(int keyCode, KeyEvent event) { €//此方法告诉画布重新绘制 €invalidate(); €return super.onKeyDown(keyCode, event); €} €这些事件处理是写在类体中,要想动态绘制内容 €绘图时哪些坐标就不能直接写了,要定义成全局变量 €然后改变坐标后可以调用invalidate方法来重新绘制。 €5.以上这些都是在画布上画,要显示在屏幕上写一个 €界面Activity,加载布局的那个方法这样写:€setContentView(new MyView(this)); €也可以直接写在xml中: € €这就是自定义控件,快去打造超炫的组件吧!€》

『小菜』

〔Android用户界面〕

【初识AndLua】

〖2017-08-16 17:33:45〗

《初识AndroLua

AndroLua可以在安卓平台上的用 Lua 开发安卓程序,不仅支持调用Java API,而且支持编写安卓界面程序,还可以将自己写的 Lua 程序打包成apk安装文件安装。Lua 语言的简单使没有任何编程经验的用户也能在短时间内开发出安卓程序,因此,在学习AndroLua之前我们需要先学习 Lua 语言。》

『小菜』

〔Lua理论知识〕

【第一个Lua程序】

〖2017-08-16 17:35:29〗

《第一个 Lua 程序€€接下来我们使用 Lua 来输出"Hello World" €€print("Hello World") €€运行后,会在屏幕上显示 Hello world》

『小菜』

〔Lua理论知识〕

【标示符】

〖2017-08-16 17:36:45〗

《标示符€Lua 表示符用于定义一个变量,函数获取其他用户定义的项。标示符以一个字母 A 到 Z 或 a 到 z 或下划线 _ 开头后加上0个或多个字母,下划线,数字(0到9)。 €最好不要使用下划线加大写字母的标示符,因为Lua的保留字也是这样的。 €Lua 不允许使用特殊字符如 @, $, 和 % 来定义标示符。 Lua 是一个区分大小写的编程语言。因此在 Lua 中 W3c 与 w3c 是两个不同的标示符。以下列出了一些正确的标示符:€€mohd        zara      abc    move_name€€myname50    _temp    j      a23b9  €》

『小菜』

〔Lua理论知识〕

初识AndLua】

〖2017-08-16 17:33:45〗

《初识AndroLua

AndroLua可以在安卓平台上的用 Lua 开发安卓程序,不仅支持调用Java API,而且支持编写安卓界面程序,还可以将自己写的 Lua 程序打包成apk安装文件安装。Lua 语言的简单使没有任何编程经验的用户也能在短时间内开发出安卓程序,因此,在学习AndroLua之前我们需要先学习 Lua 语言。》

『小菜』

〔Lua理论知识〕

【第一个Lua程序】

〖2017-08-16 17:35:29〗

《第一个 Lua 程序€€接下来我们使用 Lua 来输出"Hello World" €€print("Hello World") €€运行后,会在屏幕上显示 Hello world》

『小菜』

〔Lua理论知识〕

【标示符】

〖2017-08-16 17:36:45〗

《标示符€Lua 表示符用于定义一个变量,函数获取其他用户定义的项。标示符以一个字母 A 到 Z 或 a 到 z 或下划线 _ 开头后加上0个或多个字母,下划线,数字(0到9)。 €最好不要使用下划线加大写字母的标示符,因为Lua的保留字也是这样的。 €Lua 不允许使用特殊字符如 @, $, 和 % 来定义标示符。 Lua 是一个区分大小写的编程语言。因此在 Lua 中 W3c 与 w3c 是两个不同的标示符。以下列出了一些正确的标示符:€€mohd        zara      abc    move_name€€myname50    _temp    j      a23b9  €》

『小菜』

〔Lua理论知识〕

【打印】

〖2017-08-16 17:37:56〗

《打印€print"Hello World!"€print("Hello World")》

『小菜』

〔Lua基础知识〕

【注释】

〖2017-08-16 17:38:12〗

《注释€单行注释  --€多行注释  --[[]]》

『小菜』

〔Lua基础知识〕

【字符串】

〖2017-08-16 17:37:43〗

《字符串€a="String"€a=[[String]]€a=[===[String]===]》

『小菜』

〔Lua基础知识〕

【赋值】

〖2017-08-16 17:40:50〗

《赋值€a="Hello World"€€--lua支持多重赋值€a,b="String a","String b"€€--交换值€a,b="String a","String b"€a,b=b,a》

『小菜』

〔Lua基础知识〕

【类型简介】

〖2017-08-16 17:41:38〗

《类型简介€Lua 存在的数据类型包括:€1.nil€此类型只有一个值 nil。用于表示“空”值。全局变量默认为 nil,删除一个已经赋值的全局变量只需要将其赋值为 nil(对比JavaScript,赋值 null 并不能完全删除对象的属性,属性还存在,值为 null)€€2.boolean€此类型有两个值 true 和 false。在 Lua 中,false 和 nil 都表示条件假,其他值都表示条件真(区别于 C/C++ 等语言的是,0 是真)€€3.number€双精浮点数(IEEE 754 标准),Lua 没有整数类型€€4.string€你可以保存任意的二进制数据到字符串中(包括 0)。字符串中的字符是不可以改变的(需要改变时,你只能创建一个新的字符串)。获取字符串的长度,可以使用 # 操作符(长度操作符)。例如:print(#”hello”)。字符串可以使用单引号,也可以使用双引号包裹,对于多行的字符串还可以使用 [[ 和 ]] 包裹。字符串中可以使用转义字符,例如 \n \r 等。使用 [[ 和 ]] 包裹的字符串中的转义字符不会被转义€€5.userdata€用于保存任意的 C 数据。userdata 只能支持赋值操作和比较测试€€6.function€函数是第一类值(first-class value),我们能够像使用其他变量一样的使用函数(函数能够保存在变量中,可以作为参数传递给函数)€€7.thread€区别于我们常常说的系统级线程€€8.table€被实现为关联数组(associative arrays),可以通过任何值来进行索引(nil 除外)。和全局变量一样,table 中未赋值的域为 nil,删除一个域只需要将其赋值为 nil(实际上,全局变量就是被放置在一个 table 中)€€type 函数用于返回值的类型:€print(type("Hello World")) --> string€print(type(10.4*3)) -->number€print(type(print))  ->function€print(type(type(X)))  --> string€》

『小菜』

〔Lua基础知识〕

【if(判断语句)】

〖2017-08-16 17:44:52〗

《if(判断语句)€--判断值是否为真€a=true€if a then€print("真")€else€print("假")€end€--比较值是否相同€a=true€b=false€if a==b then€print("真")€else€print("假")€end》

『小菜』

〔Lua基础知识〕

【function(函数)】

〖2017-08-16 17:46:16〗

《function(函数)€函数有两个用途€1.完成指定功能,函数作为调用语句使用€2.计算并返回值,函数作为赋值语句的表达式使用€€€实例1:€function 读取文件(路径)€文件内容=io.open(路径):read("*a")€return 文件内容--return用来返回值€end€€€€实例2:€require "import"€import "android.widget.EditText"€import "android.widget.LinearLayout"€function 编辑框()€return EditText(activity)€end€layout={€LinearLayout;€id="父布局",€{编辑框,€id="edit",€text="文本",€},€};€activity.setContentView(loadlayout(layout))€--把这段代码放到调试里面去测试€》

『小菜』

〔Lua基础知识〕

【 基础代码】

〖2017-08-16 17:49:32〗

《基础代码€activity.setTitle('Title')--设置窗口标题€activity.setContentView(loadlayout(layout))--设置窗口视图€activity.setTheme(android.R.style.Theme_DeviceDefault_Light)--设置主题€activity.getWidth()--获取屏幕宽€activity.getHeight()--获取屏幕高€activity.newActivity("main")--跳转页面€activity.finish()--关闭当前页面€activity.recreate()--重构activity€os.exit()--结束程序€tostring()--转换字符串€tonumber()--转换数字€tointeger()--转换整数€--线程€--thread€thread(function()print"线程"end)€--task€task(function()print"线程"end)€》

『小菜』

〔Lua基础知识〕

【While循环】

〖2017-08-16 17:51:49〗

《While循环€--只要条件为真便会一直循环下去€€--输出1到10€a=0€while a~=10 do€a=a+1€print(a)€end€€--输出10到1€a=11€while a~=1 do€a=a-1€print(a)€end€€--打印数组a中的所有值€shuzu={"a","b","c","d"}€a=0€while a~=#shuzu do€a=a+1€print(shuzu[a])€end€》

『小菜』

〔Lua基础知识〕

【for循环】

〖2017-08-16 17:53:24〗

《For循环€--给定条件进行循环€€--输出从1到10€for i=1,10 do€print(i)€end€€--输出从10到1€for i=10,1,-1 do€print(i)€end€€--打印数组a中所有的值€a={"a","b","c","d"}€for index,content in pairs(a) do€print(content)€end€》

『小菜』

〔Lua基础知识〕

【比较操作符】

〖2017-08-16 17:54:10〗

《比较操作符€--Lua 支持下列比较操作符:€€==: 等于€~=: 不等于€<: 小于€>: 大于€<=: 小于等于€>=: 大于等于€这些操作的结果不是 false就是 true。€》

『小菜』

〔Lua基础知识〕

【Table(数组)】

〖2017-08-16 17:55:23〗

《Table(数组)€table是lua唯一的数据结构。€table是lua中最重要的数据类型。 €table类似于 python 中的字典。€table只能通过构造式来创建。其他语言提供的其他数据结构如array、list等等,lua都是通过table来实现的。€table非常实用,可以用在不同的情景下。最常用的方式就是把table当成其他语言的数组。€€实例1:€mytable = {}€for index = 1, 100 do€mytable[index] = math.random(1,1000)€end€€说明:€1.数组不必事先定义大小,可动态增长。€2.创建包含100个元素的table,每个元素随机赋1-1000之间的值。€3.可以通过mytable[x]访问任意元素,x表示索引。€4.索引从1开始。€€实例2:€tab = { a = 10, b = 20, c = 30, d = 'www.jb51.net' }€print(tab["a"]) €€说明:€1.table 中的每项要求是 key = value 的形式。€2.key 只能是字符串, 这里的 a, b, c, d 都是字符串,但是不能加上引号。€3.通过 key 来访问 table 的值,这时候, a 必须加上引号。€€实例3:€tab = { 10, s = 'abc', 11, 12, 13 } €print(tab[1]) = 10€print(tab[2]) = 11€print(tab[3]) = 12€print(tab[4]) = 13€说明:€1.数标从1开始。€2.省略key,会自动以1开始编号,并跳过设置过的key。€》

『小菜』

〔Lua基础知识〕

【基础-循环之while循环】

〖2017-08-15 23:22:33〗

《当天条件为真时(true)时€while(true) do€print("将会永远循环下去")€end€a=100€while(a=100) do€print("将会永远循环下去")€end€€就是这么简单€》

『小菜』

〔Lua基础知识〕

【基础-循环之for循环】

〖2017-08-15 23:23:09〗

《lua有两种循环(在我的认知里)

这篇讲for循环,我们常用的€看个例子€for n=1,100 do€print(1)€end€他将会打印100遍1€€就是这么简单€》

『小菜』

〔Lua基础知识〕

【基础-赋值语句】

〖2017-08-15 23:25:12〗

《a="我是".."帅哥"€这句等于€a="我是帅哥"€€也可以同时对多个赋值例如€a,b="这是a","这是b"€这句等于€a="这是a"€b="这是b"€这不是全部,但都是我们会经常用到的€》

『小菜』

〔Lua基础知识〕

【基础-变量】

〖2017-08-15 23:26:47〗

《lua的变量默认全局变量€例如 a=5€这就是一个全局变量,哪怕是在函数封装等€申明一个局部变量,加个local€€例如在一个函数封装里(这里你不需要懂,以后会讲)€€局部变量=function()€local a=5€print(a)€end€print(a)€€这就是一个局部变量,第一个会打印出5€第二个就是nil€因为局部变量,以一个代码块的end为结束》

『小菜』

〔Lua基础知识〕

【基础-布尔值数据类型详解】

〖2017-08-15 23:29:25〗

《这个东西只有两种€true真 这里指,某种条件成立€false假  这里指,某种条件不成立€就像做算式一样€5不可能等于3€我们用lua的语法来打印一下€€print(5=3)€屏幕会返回false€因为5根本不可能会等于3!!!€€反之我们来打印一下print(3=3)€返回什么,不用说了吧€》

『小菜』

〔Lua基础知识〕

【基础-nill数据类型详解】

〖2017-08-15 23:30:10〗

《nil就是空€空就是没有€例如我们凭空打印一个a  €print(a)€屏幕会提示nil€因为这里的a根本不存在€nil还可以销毁一个变量€例如 €a=5€a=nil€print(a)屏幕会提示nil€因为a已经被销毁了,已经没有了》

『小菜』

〔Lua基础知识〕

【基础-number数据类型详解】

〖2017-08-15 23:51:02〗

《lua里面只有一种number类型€并没有java中的float的类型€€例如€€a=5€这就是一个number赋值€基础-常用数据类型€布尔值  只有两种€true    false€€数值  number€print(5)--提示  5€字符串 string

print("5")--提示 5  这里的5跟上面的5不一样,字符串不能跟数值比较!!!(具体下节讲)€€空值 nil€€print(a)--打印一个没有任何值的赋值,会提示nil€€这就是lua几种常见的数据类型€》

『小菜』

〔Lua基础知识〕

【基础-关键词】

〖2017-08-15:23:33〗

《关键词的意思就是€你不能用这些词语来赋值变量了€以下是lua所有关键词€€and      break     do      else    elseif  end      false€for      function  if      in      local    nil       not

or       repeat    return then    true    until    while €》

『小菜』

〔Lua基础知识〕

【基础-代码注释】

〖2017-08-15 23:34:45〗

《id.onClick=function()€€end€––以end结束》

『小菜』

〔Lua基础知识〕

【基础-点击事件】

〖2017:23:56:59〗

《id.onClick=function()€––事件

end€––以end结束》

『小菜』

〔Lua基础知识〕

【 基础-print打印】

〖201-08-15 23:37〗

《pprint("hello word")––完整版€print"hello word"––简化版€a="hello word"––一个变量€print(a)––打印€》

『小菜』

〔Lua基础知识〕

【复制安装包中的数据库】

〖2017-08-16 06:53:23〗

《1.方法调用示例: €€//得到数据库文件路径 €Filedatabase1=getDatabasePath("res_download.db"); €//调用方法€copyDatabaseFile(IndexActivity.this, false, database1,R.raw.res_download); €2.复制安装包中数据库方法:€€//最后一个参数是res/raw/中的资源id €public static€void€copyDatabaseFile(Context context, boolean isfored,File databaseName,int rawId) {€File dir = databaseName.getParentFile();€if (!dir.exists()) {€try {€dir.mkdir();€} catch (Exception e) {€e.printStackTrace();€}€}€if(databaseName.exists() && !isfored){€//如果isfored=false不会删除以前的数据库€return ;€}€try {€if(databaseName.exists()){€//如果isfored=true而且存在删除以前的数据库€databaseName.delete();€}€databaseName.createNewFile():€InputStream in = context.getResources().openRawResource(rawId);€int size = in.available(); €byte buf[] = new byte[size];€in.read(buf); €in.close();€FileOutputStream out =new€FileOutputStream(databaseName);€out.write(buf);€out.close();€} catch (Exception e) {€e.printStackTrace();€}€}》

『小菜』

〔Android功能实现〕

【复制assets文件夹到SD卡】

〖2017-08-16 07:01:12〗

《€//第一个参数assets中文件夹,第二个复制的新路径 €€private void CopyAssets(String assetDir, String dir) { €String[] files;€try { €files = this.getResources().getAssets().list(assetDir); €} catch (IOException e1){ €return; €} €File mWorkingPath = new File(dir); € //如果文件夹不存在,创建 €if (!mWorkingPath.exists()) {€if (!mWorkingPath.mkdirs()) { €Log.e("--CopyAssets--", "创建目录失败"); €} €} €for (int i = 0; i < files.length; i++) { €try { €String fileName = files[i]; €//如果名字不包含点,就是文件夹 €if (!fileName.contains(".")) { €if (0 == assetDir.length()){ €CopyAssets(fileName, dir + fileName + "/"); €} else {€CopyAssets(assetDir + "/" + fileName, dir + fileName + "/"); €} €continue; €}€File outFile = new File(mWorkingPath, fileName); €if (outFile.exists()) €outFile.delete(); €InputStream in = null; €if (0 != assetDir.length())€in = getAssets().open(assetDir + "/" + fileName); €else€in = getAssets().open(fileName);€OutputStream out =newFileOutputStream(outFile); €//用一个byte组从输入流读取写到输出流中€byte[] buf = new byte[1024];€int len; €while ((len = in.read(buf)) > 0) {€out.write(buf, 0, len); €}€in.close(); €out.close();€} catch (FileNotFoundException e) { €e.printStackTrace();€} catch (IOException e) {€e.printStackTrace(); €} €} €} €》

『小菜』

〔Android功能实现〕

【读取assets和rae文件】

〖2017-08-16 07:07:3〗

《一、读取assets中文件:€//拿到输入流,参数为assets中文件名€InputStream in = getAssets().open("aa.txt"); €//然后就可以像平常的IO一样操作了,例如复制到SD卡中:€try { €InputStream in = getAssets().open("a.txt");€File file = new File("storage/sdcard0/a.txt");€FileOutputStream out =new€FileOutputStream(file); €int len = -1 ; €byte[] bytes = new byte[1024]; €while( (len=in.read(bytes) ) != -1){ €out.write(bytes,0,len); € } €out.close(); €in.close(); €} catch (IOException e) { €e.printStackTrace(); €} €€二、读取res/raw中的文件:€//拿到输入流,context是上下文,rawId是文件资源如R.raw.aa€InputStream in = context.getResources().openRawResource(rawId); €》

『小菜』

〔Android功能实现〕

【解压assets压缩包到SD卡】

〖2016-08-16 07:10:56〗

《/**context上下文对象 €*assetName压缩包名字 €*outputDirectory输出目录 € *isReWrite如果存在是否覆盖 € */ €public static void unZip(Context context, String assetName,String outputDirectory,boolean isReWrite) throws IOException {€//创建解压目标目录€File file = new File(outputDirectory);€//如果目标目录不存在,则创建€if (!file.exists()) {€file.mkdirs();€} €//打开压缩文件€InputStream inputStream = context.getAssets().open(assetName);€ZipInputStream zipInputStream = new ZipInputStream(inputStream);€//读取一个进入点€ZipEntry zipEntry = zipInputStream.getNextEntry();€//使用1Mbuffer€byte[] buffer = new byte[1024 * 1024]; €//解压时字节计数€int count = 0;€//如果进入点为空说明已经遍历完所有压缩包中文件和目录€while (zipEntry != null) {€//如果是一个目录€if (zipEntry.isDirectory()) {€file = new File(outputDirectory + File.separator + zipEntry.getName());€//文件需要覆盖或者是文件不存在 €if(isReWrite || !file.exists()){€file.mkdir();€}€} else {€//如果是文件€file = new File(outputDirectory + File.separator + zipEntry.getName()); €//文件需要覆盖或者文件不存在,则解压文件 €if(isReWrite || !file.exists()){€file.createNewFile(); €FileOutputStream fileOutputStream = newFileOutputStream(file);€while ((count = zipInputStream.read(buffer)) > 0)€{€fileOutputStream.write(buffer, 0, count);€}€fileOutputStream.close(); €} €}€//定位到下一个文件入口€zipEntry = zipInputStream.getNextEntry();€€} €zipInputStream.close(); €} 》

『小菜』

〔Android功能实现〕

【使用Mediaplarl播放视频】

〖2017-08-16 07:15:23〗

《import android.app.Activity;€import android.os.Bundle;€import android.widget.Button;€import android.widget.VideoView;€import android.view.View.OnClickListener;€import android.view.View;€import android.net.Uri;€import android.widget.MediaController;€€public class MainActivity extends Activity €}€private Button bn1,bn2,bn3;€private VideoView Video;€@Override€protected void onCreate(Bundle savedInstanceState)€ {€super.onCreate(savedInstanceState);€setContentView(R.layout.main);€//获取main布局文件里的控件对象€bn1=(Button)findViewById(R.id.mainButton1);€bn2=(Button)findViewById(R.id.mainButton2);€bn3=(Button)findViewById(R.id.mainButton3);€€Video=(VideoView)findViewById(R.id.mainVideoView1);€€Video.setVideoURI(Uri.parse("file://路径"));€//这里只需要把“路径”换成你视屏文件所在的目录路径就行了€Video.setMediaController(new€MediaController(this));€€bn1.setOnClickListener(new OnClickListener(){€@Override€public void onClick(View p1){€//调用start播放视屏方法€Video.start();€}€});€bn2.setOnClickListener(new OnClickListener(){€@Override€public void onClick(View p1){€//调用pause暂停播放方法€Video.pause();€}€});€bn3.setOnClickListener(new OnClickListener(){€@Override€public void onClick(View p1){€//调用结束方法€Video.stopPlayback();€}€});€}€}€//剩下的不多说€》

『小菜』

〔Android功能实现〕

【播放SD卡视频】

〖2017-08-16 07:21:47〗

《import android.app.Activity;€import android.os.Bundle;€import android.widget.Button;€import android.widget.VideoView;€import android.view.View.OnClickListener;

import android.view.View;€import android.net.Uri;€import android.widget.MediaController;€€public class MainActivity extends Activity €{€private Button bn1,bn2,bn3;€private VideoView Video;€@Override€protected void onCreate(Bundle savedInstanceState)€{€super.onCreate(savedInstanceState);€setContentView(R.layout.main);€bn1=(Button)findViewById(R.id.mainButton1);€bn2=(Button)findViewById(R.id.mainButton2);€bn3=(Button)findViewById(R.id.mainButton3);€Video=(VideoView)findViewById(R.id.mainVideoView1);€€Video.setVideoURI(Uri.parse("file://"));€/*€这里是填视屏文件的路径file://然后就是你的视屏路径€*/€Video.setMediaController(new MediaController(this));€bn1.setOnClickListener(new OnClickListener(){€@Override€public void onClick(View p1){€Video.start();€}€});€bn2.setOnClickListener(new OnClickListener(){€@Override€public void onClick(View p1){€Video.pause();€}€});€bn3.setOnClickListener(new OnClickListener(){€@Override€public void onClick(View p1){€Video.stopPlayback();€}€});€}€}€€//剩下的不多说,入门小白都会的€》

『小菜』

〔Android功能实现〕

【TextView显示图片】

〖2017-08-16 07:26:33〗

《/** €*HashMap存放图片的文字代码和图片的路径 € */ €HashMap keyImage = new HashMap(); €keyImage.put("[image01]", R.drawable.img1);€ keyImage.put("[image02]", R.drawable.img2); €TextView textView = (TextView)€findViewById(R.id.content_editText1); €//为TextView添加文本改变监听 €textView.addTextChangedListener(newMarkImageWatcher(keyImage,MainActivity.this)); €textView.setText("[image01]"); €/** €*自定义TextWatcher类 €*/ €public class MarkImageWatcher implements TextWatcher { €HashMap key = new HashMap(); €Context context;€//构造方法€public€MarkImageWatcher(HashMap key, Context context) { €super(); €this.key = key; €this.context = context; €} €@Override €public void afterTextChanged(Editable arg0) { €String text = arg0.toString():€Iterator iterator = key.keySet().iterator(); €while (iterator.hasNext()) { €String k = iterator.next(); €if (text.contains(k)) { €int index = 0; €while ((index = text.indexOf(k, index)) != -1) { €Drawable drawable = context.getResources().getDrawable(key.get(k));€drawable.setBounds(0, 0, 300,500); €//将代表图片的文本标记为图片 €arg0.setSpan(new ImageSpan(drawable,ImageSpan.ALIGN_BASELINE), index,index + k.length(),Spannable.SPAN_INCLUSIVE_EXCLUSIVE);€index += k.length(); €} €} €} €} €}€》

『小菜』

〔Android功能实现〕

【接收其他应用分享的数据】

〖2017-08-16 07:31:23〗

《public class ShareActivity extends€Activity{€ @Override€ protected void€onCreate(Bundle savedInstanceState) {€    // TODO Auto-generated method stub€  super.onCreate(savedInstanceState);  €  // 得到intent对象, 判断类型是 action 或者 MIME €    Intent intent = getIntent();€    String action = intent.getAction();€    String type = intent.getType();€    if (Intent.ACTION_SEND.equals(action) && type != null) {€        if ("text/plain".equals(type)) {€    handleSendText(intent);€/ 调用处理文本的方法€        } else if (type.startsWith("image/")) {€            handleSendImage(intent); €// 调用处理图片的方法€        }€    } else if (Intent.ACTION_SEND_MULTIPLE.equals(action) && type != null) {€        if (type.startsWith("image/")) {€ handleSendMultipleImages(intent); €// 调用处理多个图片的方法€        }€    } else {€        //其他的分享类型€    }€ }€ void€handleSendText(Intent intent) {€    String sharedText = intent.getStringExtra(Intent.EXTRA_TEXT);€    String sharedTitle = intent.getStringExtra(Intent.EXTRA_TITLE);€    if (sharedText != null) {€        // 得到分享的文本sharedText€    }€ }€ void€handleSendImage(Intent intent) {€    Uri imageUri = (Uri) intent.getParcelableExtra(Intent.EXTRA_STREAM);€    if (imageUri != null) {€        // 得到分享的图片imageUri€    }€ } € void€handleSendMultipleImages(Intent intent) {€    ArrayList imageUris = intent.getParcelableArrayListExtra(Intent.EXTRA_STREAM);€    if (imageUris != null) {€// 得到分享的图片集合imageUris€    }€ }

} 》

『小菜』

〔Android功能实现〕

【调用分享功能】

〖2017-08-16 07:33:26〗

《 €//分享文本内容 €public static void shareText(Context context,String text) { €Intent sendIntent = new Intent();€sendIntent.setAction(Intent.ACTION_SEND); €sendIntent.putExtra(Intent.EXTRA_TEXT,text); €sendIntent.setType("text/plain"); €context.startActivity(Intent.createChooser(sendIntent, "分享文本")); €} €//分享图片 €public static void shareText(Context context,Uri uriToImage) { €Intent shareIntent = new Intent();€shareIntent.setAction(Intent.ACTION_SEND); €shareIntent.putExtra(Intent.EXTRA_STREAM, uriToImage);€shareIntent.setType("image/jpeg"); €context.startActivity(Intent.createChooser(shareIntent, "分享图片")); €} €//分享多张图片 €public static void shareText(Context context,ArrayList imageUris) { €Intent shareIntent = new Intent();€shareIntent.setAction(Intent.ACTION_SEND_MULTIPLE); €shareIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, imageUris); €shareIntent.setType("image/*");€startActivity(Intent€createChooser(shareIntent, "分享图片")); €} €》

『小菜』

〔Android功能实现〕

【调用系统应用】

〖2017-08-16 07:36:41〗

《一、调用图库选择图片:€€Intent intent=new Intent(); €intent.setType("image/*"); €intent.setAction(Intent.ACTION_GET_CONTENT);€startActivityForResult(intent,requestCode); €//监听返回结果 €@Override €public void onActivityResult(int requestCode,int resultCode,Intent data) {€if(resultCode==RESULT_OK) { €Uri uri=data.getData(); €ContentResolver cr=this.getContentResolver(); € //得到选择图片的Bitmap €Bitmap bitmap=BitmapFactory.decodeStream(cr.openInputStream(uri));€} €super.onActivityResult(requestCode, resultCode, data); €} €€二、调用相机拍照:€€//跳转到android自带的照相机 €Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); €photoUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;€startActivityForResult(intent, 1);  €//监听拍照完成后的处理€@Override€protected€voide€onActivityResult(intrequestCode, int resultCode, Intent data) {€super.onActivityResult(requestCode, resultCode, data); €if(resultCode==Activity.RESULT_OK){€// 获取相机返回的数据,并转换为Bitmap图片格式 €Bundle bundle = data.getExtras(); €Bitmap bitmap = (Bitmap) bundle.get("data"); €} €} €€三、调用浏览器打开链接:€€Intent intent_d= new Intent(); €intent_d.setAction("android.intent.action.VIEW");    €Uri content_url = Uri.parse("http://www.aa.com");  €intent_d.setData(content_url);

startActivity(intent_d); €》

『小菜』

〔Android功能实现〕

【Android中的权限】

〖2017-08-16 07:40:14〗

《写入外部存储: android.permission.WRITE_EXTERNAL_STORAGE, €访问网络    : android.permission.INTERNET, €获取网络状态: android.permission.ACCESS_NETWORK_STATE, €获取WiFi状态: android.permission.ACCESS_WIFI_STATE, €改变WiFi状态: android.permission.CHANGE_WIFI_STATE, €允许振动    : android.permission.VIBRATE, €使用蓝牙    : android.permission.BLUETOOTH, €拨打电话    : android.permission.CALL_PHONE, €通话权限    : android.permission.CALL_PRIVILEGED, €发送短信    : android.permission.SEND_SMS, €拍照权限    : android.permission.CAMERA, €使用闪光灯  : android.permission.FLASHLIGHT, €录音        : android.permission.RECORD_AUDIO, €读取联系人  : android.permission.READ_CONTACTS, €处理拨出电话: android.permission.PROCESS_OUTGOING_CALLS, €读取电话状态: android.permission.READ_PHONE_STATE, €读取短信内容: android.permission.READ_SMS, €屏幕截图    : android.permission.READ_FRAME_BUFFER, €设置壁纸    : android.permission.SET_WALLPAPER, €设置系统时间: android.permission.SET_TIME, €应用删除时广播 android.permission.BROADCAST_PACKAGE_REMOVED, €收到短信时广播 android.permission.BROADCAST_SMS, €连续广播    : android.permission.BROADCAST_STICKY , €获取应用大小: android.permission.GET_PACKAGE_SIZE, €获取任务信息: android.permission.GET_TASKS, €安装应用程序: android.permission.INSTALL_PACKAGES, €结束后台进程: android.permission.KILL_BACKGROUND_PROCESSES, €排序系统任务: android.permission.REORDER_TASKS, €结束系统任务: android.permission.RESTART_PACKAGES, €重启设备    : android.permission.REBOOT, €开机自动运行: android.permission.RECEIVE_BOOT_COMPLETED, €修改状态栏  : android.permission.STATUS_BAR, €访问SurfaceFlinger: android.permission.ACCESS_SURFACE_FLINGER》

『小菜』

〔Android基础知识〕

【浏览器WebView】

〖2017-08-16 10:13:15〗

《1.设置支持JavaScript: €webView.getSettings().setJavaScriptEnabled(true); €2.加载网页: €webView.loadUrl("http://www.baidu.com"); €//加载本地文件: €webView.loadUrl("file:///storage/sdcard0/index.html"); €webView.loadUrl("content://com.android.htmlfileprovider/sdcard/index.html"); €//加载assets中文件: €webView.loadUrl("file:///android_asset/index.html"); €3.获取原始URL:webView.getOriginalUrl(); €4.获取当前URL:webView.getUrl(); €5.浏览器加载网页的监听 €webView.setWebViewClient(new WebViewClient() { €@Override €public void onPageFinished(WebView view,String url) { €//加载完成 €} €@Override €public€boolean€shouldOverrideUrlLoading(WebView view, String url) { €//设置在本浏览器打开新网页 €view.loadUrl(url); €return true;€} €}); €€7.设置webview背景透明:€webView.setBackgroundColor(0); €//4.0上在xml中关闭硬件加速€android:layerType="software" €€8.后退网页:€if (webView.canGoBack()) { €webView.goBack(); €} €€9.下载链接单击监听事件 :€webView.setDownloadListener(new DownloadListener{€@Override€public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimetype,long contentLength) {€€Uri uri = Uri.parse(url);  //调用本地浏览器打开€Intent intent = new Intent(Intent.ACTION_VIEW, uri);€startActivity(intent);€}  €} );€€10.保存浏览器网页截图:€Picture pic = webView.capturePicture(); €int width = pic.getWidth(); €int height = pic.getHeight(); €if (width > 0 && height > 0) { €Bitmap bmp=Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); €Canvas canvas=new Canvas(bmp); €pic.draw(canvas);€try { €String filename="sdcard0/"+System.currentTimeMillis()+".jpg"; €FileOutputStream fos=newFileOutputStream(filename); €if(fos!=null){€bmp.compress(Bitmap.CompressFormat.JPEG, 90, fos); €fos.close(); €} €} catch (Exception e) { €e.printStackTrace(); €} €} €》

『小菜』

〔Android控件知识〕

【日期和时间选择控件】

〖2017-08-16 10:17:56〗

《一、日期控件 DatePicker :€€//设置右边日历不显示 €android:calendarViewShown="false" €//设置默认时间和改变后的监听事件 €datePicker.init(2015,05,10,new DatePicker.OnDateChangedListener()€{ €€@Override €public void onDateChanged(DatePicker datePicker, int i, int i2, int i3) { €€ //后三个参数是改变后的年月里,月是0开始的 €} €}); €€二、时间控件 TimePicker :€€//设置为24小时制 €timePicker.setIs24HourView(true); €//时间改变后的监听 €timePicker.setOnTimeChangedListener(new TimePicker.OnTimeChangedListener() { €@Override €public void onTimeChanged(TimePicker timePicker, int i, int i2) { €€//后两个参数是控件选择的时,分 €} €}); €€三、时间和日期选择对话框:€//日期选择对话框: €DatePickerDialog datePickerDialog = new DatePickerDialog(this,CallBack,2015,05,10); €//时间选择对话框: €TimePickerDialog timePickerDialog = new TimePickerDialog(this, CallBack,12,12,true); € //后三个参数默认时间,时间最后参数是否24小时制€€2.CallBack选择完成后的事件:€€//日期事件 €DatePickerDialog.OnDateSetListener CallBack = new DatePickerDialog.OnDateSetListener() {€ @Override €public void onDateSet(DatePicker datePicker, int i, int i2, int i3) { €//后三个参数年,月,日 € } €}; €€//时间事件 €TimePickerDialog.OnTimeSetListener CallBack = new TimePickerDialog.OnTimeSetListener() { €@Override €public void onTimeSet(TimePicker timePicker, int i, int i2) { €//后两个参数,时,分 €} €}; €》

『小菜』

〔Android控件知识〕

【 控件圆角】

〖2017-08-12 08:16:33〗

《控件圆角€€function CircleButton(view,InsideColor,radiu)€ import€"android.graphics.drawable.GradientDrawable"€ drawable = GradientDrawable() €  drawable.setShape(GradientDrawable.RECTANGLE) €drawable.setColor(InsideColor)€  drawable.setCornerRadii({radiu,radiu,radiu,radiu,radiu,radiu,radiu,radiu});€ view.setBackgroundDrawable(drawable)€end€角度=50€控件id=ed€控件颜色=0xFF09639C€CircleButton(控件id,控件颜色,角度)€》

『小菜』

〔Lua功能实现〕

【选择路径模块】

〖2017-08-12 08:09:23〗

《选择路径模块€€require "import"€import "android.widget.ArrayAdapter"€import "android.widget.LinearLayout"€import "android.widget.TextView"€import "java.io.File"€import "android.widget.ListView"€import "android.app.AlertDialog"€function ChoicePath(StartPath,callback)€ --创建ListView作为文件列表€ lv=ListView(activity)€setFastScrollEnabled(true)€  --创建路径标签€  cp=TextView(activity)€ lay=LinearLayout(activity).setOrientation(1).addView(cp).addView(lv€ChoiceFile_dialog=AlertDialog.Builder(activity)--创建对话框€ .setTitle("选择路径")€.setPositiveButton("OK",{€onClick=function()€callback(tostring(cp.Text))€end})€.setNegativeButton("Canel",nil)€  .setView(lay)€  .show()€  adp=ArrayAdapter(activity,android.R.layout.simple_list_item_1)€  lv.setAdapter(adp)€  function SetItem(path) €  path=tostring(path)€    adp.clear()--清空适配器€    cp.Text=tostring(path)--设置当前路径    if path~="/"€ then--不是根目录则加上../  €    adp.add("../")€    end€    ls=File(path).listFiles()€    if ls~=nil then€      ls=luajava.astable(File(path).listFiles()) --全局文件列表变量€      table.sort(ls,function(a,b)€        return (a.isDirectory()~=b.isDirectory() and a.isDirectory()) or ((a.isDirectory()==b.isDirectory()) and a.Name

function(path)€print(path)€end)€€--第一个参数为初始化路径,第二个为回调函数€--原创》

『小菜』

〔Lua功能实现〕

【控件背景渐变动画】

〖2017-08-10 20:36:10〗

《控件背景渐变动画€view=控件id€color1 = 0xffFF8080;€color2 = 0xff8080FF;€color3 = 0xff80ffff;€color4 = 0xff80ff80;€import "android.animation.ObjectAnimator"€import "android.animation.ArgbEvaluator"€import "android.animation.ValueAnimator"€import "android.graphics.Color"€colorAnim = ObjectAnimator.ofInt(view,"backgroundColor",{color1, color2, color3,color4})€colorAnim.setDuration(3000)€colorAnim.setEvaluator(ArgbEvaluator())€colorAnim.setRepeatCount(ValueAnimator.INFINITE)€colorAnim.setRepeatMode(ValueAnimator.REVERSE)€colorAnim.start()》

『小菜』

〔Lua功能实现〕

【精准获取屏幕尺寸】

〖2017-08-10 20:39:30〗

《精准获取屏幕尺寸€function  getScreenPhysicalSize(ctx) €  import "android.util.DisplayMetrics"€  dm = DisplayMetrics();€  ctx.getWindowManager().getDefaultDisplay().getMetrics(dm);€  diagonalPixels = Math.sqrt(Math.pow(dm.widthPixels, 2) + Math.pow(dm.heightPixels, 2));€  return diagonalPixels / (160 * dm.density);€end€print(getScreenPhysicalSize(activity))》

『小菜』

〔Lua功能实现〕

【自定义默认弹窗标题,消息,按钮的颜色】

〖2017-08-10 20:41:15〗

《dialog=AlertDialog.Builder(this)€.setTitle("标题")€.setMessage("消息")€.setPositiveButton("积极",{onClick=function(v) print"点击了积极按钮"end})€.setNeutralButton("中立",nil)€.setNegativeButton("否认",nil)€.show()€dialog.create()€€€--更改消息颜色€message=dialog.findViewById(android.R.id.message)€message.setTextColor(0xff1DA6DD)€€--更改Button颜色€import "android.graphics.Color"€dialog.getButton(dialog.BUTTON_POSITIVE).€setTextColor(0xff1DA6DD)€dialo.€getButton(dialog.BUTTON_NEGATIVE).€setTextColor(0xff1DA6DD)€dialog.getButton(dialog.BUTTON_NEUTRAL).setTextColor(0xff1DA6DD)€€--更改Title颜色€import "android.text.SpannbleString"€import "android.text.style.ForegroundColorSpan"€import "android.text.Spannable"€sp = SpannableString("标题")

sp.€setSpan(ForegroundColorSpan(0xff1DA6DD),0,#sp,Spannable€SPAN_EXCLUSIVE_INCLUSIVE)€ dialog.setTitle(sp)》

『小菜』

〔Lua功能实现〕

【获取手机存储空间】

〖2017-08-10 20:46:6〗

《获取手机存储空间€--获取手机内置剩余存储空间€function GetSurplusSpace()€ fs =  StatFs(Environment.getDataDirectory().getPath())€ return Formatter.formatFileSize(activity, (fs.getAvailableBytes()))€end€ --获取手机内置存储总空间€ function GetTotalSpace()€ path = Environment.€getExternalStorageDirectory()€stat = StatFs(path.getPath())€ blockSize = stat.getBlockSize()€totalBlocks = stat.getBlockCount()€return Formatter.formatFileSize(activity, blockSize * totalBlocks)€end€》

『小菜』

〔Lua功能实现〕

【获取视频第一帧】

〖2017-08-10 20:47:50〗

《获取视频第一帧€function  GetVideoFrame(path)€  import "android.media.MediaMetadataRetriever"€ media = MediaMetadataRetriever()€ media.setDataSource(tostring(path))€  return media.getFrameAtTime()€end》

『小菜』

〔Lua功能实现〕

【选择文件模块】

〖2017-08-10 20:50:13〗

《选择文件模块€ import "android.widget.ArrayAdapter"€import "android.widget.LinearLayout"€import "android.widget.TextView"€import "java.io.File"€import "android.widget.ListView"€import "android.app.AlertDialog"€function ChoiceFile(StartPath,callback)€ --创建ListView作为文件列表€ lv=ListView(activity).setFastScrollEnabled(true)€ --创建路径标签€ cp=TextView(activity)€ lay=LinearLayout(activity).setOrientation(1).addView(cp).addView(lv)€  ChoiceFile_dialog=AlertDialog.Builder(activity)--创建对话框€ .setTitle("选择文件")€ .setView(lay)€  .show()€  adp=ArrayAdapter(activity,android.R.layout.simple_list_item_1)€  lv.setAdapter(adp)€  function SetItem(path)€    path=tostring(path)€    adp.clear()--清空适配器€    cp.Text=tostring(path)--设置当前路径€    if path~="/" then--不是根目录则加上../    €adp.add("../")€    end€    ls=File(path).listFiles()€    if ls~=nil then€      ls=luajava.astable(File(path).listFiles()) --全局文件列表变量€      table.sort(ls,function(a,b)€        return (a.isDirectory()~=b.isDirectory() and a.isDirectory()) or ((a.isDirectory()==b.isDirectory()) and a.Name》

『小菜』

〔Lua功能实现〕

【源码缩写】

〖2017-08-09 20:25:36〗

《ug(5,"text",a) f(a=="") { utw("提示","请输入内容!","确定","") { } } else { utw("提示","请选择操作","缩短","还原") { ss("\"+"n",r)€sr(a,"\n",r,a) s w="ufnsui(SVIPXO)" ss("s SVIPXO=""+a+""\n"+w,u) us(5,"text",u) } else { ss("\"+"n",r) sr(a,r,"\n",a) sr(a,"s SVIPXO="","",a) €s w="ufnsui(SVIPXO)"€ss(""\n"+w,u) sr(a,u,"",a) us(5,"text",a) } 》

『小熙』

〔iAPP其他教程〕

【五大布局】

〖2017-08-07 01:14:26〗

《五大布局€€--Android中常用的5大布局方式有以下几种:€--线性布局(LinearLayout):按照垂直或者水平方向布局的组件。€--帧布局 €(FrameLayout):组件从屏幕左上方布局组件。€--表格布局(TableLayout):按照行列方式布局组件。€--相对布局€(RelativeLayout):相对其它组件的布局方式。€--绝对布局 €(AbsoluteLayout):按照绝对坐标来布局组件。€€€1.线性布局(LinearLayout)€线性布局是Android开发中最常见的一种布局方式,它是按照垂直或者水平方向来布局,通过orientation属性可以设置线性布局的方向。属性值有垂直(vertical)和水平€(horizontal)两种。€常用的属性:€orientation:可以设置布局的方向€gravity:用来控制组件的对齐方式€layout_weight控制各个控件在布局中的相对大小,layout_weight的属性是一个非负整数值。  €线性布局会根据该控件layout_weight值与其所处布局中所有控件layout_weight值之和的比值为该控件分配占用的区域€--[[例如,在水平布局的LinearLayout中有两个Button,这两个Button的layout_weight属性值都为1,那么这两个按钮都会被拉伸到整个屏幕宽度的一半。如果layout_weight指为0,控件会按原大小显示,不会被拉伸.€对于其佘layout_weight属性值大于0的控件,系统将会减去layout_weight属性值为0的控件的宽度或者高度,再用剩余的宽度或高度按相应的比例来分配每一个控件显示的宽度或高度]]€€€2.帧布局(FrameLayout)€帧布局是从屏幕的左上角(0,0)坐标开始布局,多个组件层叠排列,第一个添加的组件放到最底层,最后添加到框架中的视图显示在最上面。上一层的会覆盖下一层的控件。€€€3.表格布局(TableLayout)€表格布局是一个ViewGroup以表格显示它的子视图(view)元素,即行和列标识一个视图的位置。€表格布局常用的属性如下:€collapseColumns:隐藏指定的列€shrinkColumns:收缩指定的列以适合屏幕,不会挤出屏幕€stretchColumns:尽量把指定的列填充空白部分€layout_column:控件放在指定的列€layout_span:该控件所跨越的列数€€€4.相对布局(RelativeLayout)€相对布局是按照组件之间的相对位置来布局,比如在某个组件的左边,右边,上面和下面等。€€€€5.绝对布局(AbsoluteLayout)€采用坐标轴的方式定位组件,左上角是(0,0)点,往右x轴递增,往下Y轴递增,组件定位属性为layout_x 和layout_y来确定坐标。€》

『小菜』

〔Lua理论知识〕

【获取手机存储空间】

〖2017-08-07 01:11:23〗

《获取手机存储空间€€--获取手机内置剩余存储空间€€ function GetSurplusSpace()€€fs =  StatFs(Environment.getDataDirectory().getPath())€€return Formatter.formatFileSize(activity, (fs.getAvailableBytes()))€€ end€€€--获取手机内置存储总空间€ function GetTotalSpace()€ path = Environment.getExternalStorageDirectory()€ stat = StatFs(path.getPath())€ blockSize = stat.getBlockSize()€ totalBlocks = stat.getBlockCount()€return Formatter.formatFileSize(activity, blockSize * totalBlocks)€ end€》

『小菜』

〔Lua理论知识〕

【标题栏(ActionBar)】

〖2017-08-06 00:50:39〗

《标题栏(ActionBar)€--部分常用API€show:显示€hide:隐藏€Elevation:设置阴影€BgroundDrawable:设置背景€DisplayHomeAsUpEnabled(boolean):设置是否显示返回图标€€--设置标题€activity.ActionBar.setTitle('大标题')€activity.ActionBar.setSubTitle("小标题")€€--设置ActionBar背景颜色€.import "android.graphics.drawable€ColorDrawable€"activity.ActionBar.setBackgroundDrawable(ColorDrawable(Color))€€--自定义ActionBar标题颜色€import "android.text.SpannableString"import "android.text.style.ForegroundColorSpan"€import "android.text.Spannable"€sp =€SpannableString("标题")€sp.setSpan(ForegroundColorSpan(0xff1DA6DD),0,#sp,Spannable.SPAN_EXCLUSIVE_INCLUSIVE)€activity.ActionBar.setTitle(sp)€€--自定义ActionBar布

DisplayShowCustomEnabled(true)€CustomView(loadlayout(layout))€--ActionBar返回按钮€activity.ActionBar€setDisplayHomeAsUpEnabled(true)€--自定义返回按钮图标€activity.ActionBar€setHomeAsUpIndicator(drawable)€€€€--菜单€function onCreateOptionsMenu(menu)€  menu.add("菜单1")€  menu.add("菜单2")€  menu.add("菜单3")€end€function onOptionsItemSelected(item)€  print("你选择了:"..item.Title)

end€--Tab导航使用€import "android.app.ActionBar$TabListener"

actionBar=activity.ActionBar€actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);€tab = actionBar.newTab().setText("Tab1").setTabListener(TabListener({€  onTabSelected=function()€    print"Tab1"€  end}))€tab2=actionBar.newTab().setText("Tab2").setTabListener(TabListener({€onTabSelected=function()€    print"Tab2"€  end}))€actionBar.addTab(tab)€actionBar.addTab(tab2)€》

『小菜』

〔Lua功能实现〕

【for循环】

〖2017-08-06 00:46:12〗

《For循环€--给定条件进行循环€€--输出从1到10€for i=1,10 do€print(i)€end€€€€--输出从10到1€for i=10,1,-1 do€print(i)€end€€--打印数组a中所有的值€a={"a","b","c","d"}€for index,content in pairs(a) do€print(content)€end》

『小菜』

〔Lua基础知识〕

【if判断语句】

〖2017-08-06 00:43:56〗

《if(判断语句)€--判断值是否为真€a=true€if a then€print("真")€else€print("假")€end€€--比较值是否相同€a=true€b=false€if a==b then€print("真")€else€print("假")€end》

『小菜』

〔Lua基础知识〕

【打印】

〖2017-08-06 00:41:59〗

《打印€print"Hello World!"€print("Hello World")》

『小菜』

〔Lua基础知识〕

【Android自定义弹窗】

〖2017-08-03 16:56:48〗

《dialog = new Dialog(this);€dialog.setCancelable(false);€dialog.setCanceledOnTouchOutside(false);€dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);€final View view = LayoutInflater.from(this).inflate(R.layout.dialoglayout, null);€dialog.setContentView(view);€dialog.show();€//dialoglayout是布局文件的名称,其它就不用我多讲了吧?》

『小菜』

〔Android功能实现〕

【第一个java程序讲解】

〖2017-08-03 16:41:39〗

《€public class HelloMain€{€public static void main(String[] args)€{€System.out.printIn("Hello Java")€}€}€€€//public 是一个Java的关键词,用来说明类使用的权限范围,表明这是一个公有类,即为 公有访问类型 ,其它任何类都可以直接访问到它。€€€//class 也是一个Java的关键词,用于类的声明,然后就是类名HelloMain€€€€//public static void main (String[] args) 是一个main方法,这是整个程序的入口,所有程序都是从这里开始运行的,这行的代码格式是固定的,String[] args 可以写成 String args[] 表示为字符串类型,args是arguments的缩写,翻译为 参数 ,void 也是Java的关键词,表明该方法没有返回值,整段代码表明main是公有的静态方法。€》

『小菜』

〔java基础知识〕

【iApp弹窗】

〖2017-08-03 16:43:49〗

《€//无按钮弹窗€utw(null,"标题","内容",false,a)€{€€}€€//有按钮弹窗€utw(null,"标题","内容","确定",false,a)€{€€}€》

『小菜』

〔iApp实例代码〕

【文本跑马灯示例】

〖2017-08-03 16:46:20〗

《把以下代码放到文本控件属性里

scrollhorizontally=true

ellipsize=marquee

focusable=true

marqueerepeatlimit=marquee_forever

focusableintouchmode=true

scrollhorizontally=true€》

【iApp$私文件夹的用处】

〖2017-08-03 16:53:19〗

《iAPP2.0中,有一个私有文件夹,但很多人都不知道有什么用。其实这个私有文件夹特别实用的,比如你要保存一些东西,但又不想让用户看到,可以保存到私有文件夹下哦。€€私有文件夹的路径是:/data/data/安装包名/files€路径不用管,直接在保存文件加个$符号就行了。私有文件夹的好处是,用户没有Root权限是无法修改你保存的内容的。比如一些txt文件等,若你保存在%手机内存里,那么很可能被人修改或者看到哦!€》

〖小菜〗

〔iApp实例代码〕

【随机启动语录】

〖2017-08-03 16:54:39〗

《sl("你爹="#6c6c6c">|你大爷="#6c6c6c">|你二爷="#6c6c6c">|你大舅="#6c6c6c">|你二舅="#6c6c6c">|你大侄子","="#6c6c6c">|",ok)

//分割为数组€€sran(0,5,sj)

//生产1-6的随机数€€sgsz(ok,sj,yes)

//随机访问语录€€tw(yes)€》

『小菜』

〔iApp实例代码〕

【post深度解析】

〖2017-08-03 16:56:00〗

《€€€€post在下面的内容我们就讲过,现在更彻底了讲一遍,保证你学会post提交数据!€€post的是什么呢?post就是提交数据,提交内容给网站处理,然后获取返回的结果。类似登录功能,同理!€€一般我们需要从网站获取源代码后才能知道该提交什么,接口是什么。€举个例子:我从某网站源代码中得出下列代码:€€="http://flmle.com/so.php"">€="hidden" name="siteid" value="1000">€="text" name="key" placeholder="输入关键字">€="submit" value="搜索">€€€这是一个搜索表单(表单从form开头form结尾)€€第一行:="http://flmle.com/so.php">

其中action的这个地址就是提交的接口€€第二行:="hidden" name="id" value="1000">

表示这是一个隐藏的输入框 为什么要隐藏呢?因为不需要用户输入,但必须要提交。他的属性是id=1000€€那就得出一个提交的内容€€第三行: ="text" name="key" placeholder="输入关键字">€这是一个需要输入内容的输入框,他的属性是key,得出一个提交的内容:key=搜索关键字€第四行: ="submit" value="搜索">€这个完全不用管他,他是一个提交按钮,我们post的时候本身就是一个提交了,所以不需要他!€€就这样得出post内容€€hs("http://flmle.com/so.php","id=1000&key=搜索关键字","utf-8",ok)€€提交的内容是通过&符号串联到一起的,不要写错!€€ok就是返回的结果,你可以syso(ok)打印出来查看是否已经提交成功从而截取你需要的结果!€€》

『小菜』

〔iApp实例代码〕

【下载文件简单示例】

〖2017-08-03 16:59:45〗

《t()€{€hd("http://flmle.com/ok.apk","iApp/ok.apk",true,ok)€//iApp/ok是保存路径,true是如果存在则覆盖€€f(ok=="0")€{€ufnsui()€{€tw("下载成功")€}€}€else€{€ufnsui()€{€tw("下载失败")€}€}€}€》

『小菜』

〔iApp实例代码〕

【列表里设置圆角】

〖2017-08-03 17:02:59〗

《作用:可以设置每个列表的圆角或者背景颜色,又或者设置边框,其他一切等等€€比如两个界面:mian.iyu主界面和list.iyu列表界面€首先在列表设计界面list.iyu的载入事件写代码€€gvs(st_vW,list.1,ok)€us(ok,"background","#336699")€通过gvs获取id为1的对象并设置背景颜色为#336699€如何圆角或者边框呢?可以搜索ngde属性。€设置圆角例子:€gvs(st_vW,list.1,ok)€ngde(5,"#336699",yes)€us(ok,"background",yes)€》

『小菜』

〔iApp实例代码〕

【判断列表是否已经滑动到低部】

〖2017-08-03 17:05:45〗

《f(st_vT==0)€€{€€endcode€€}€€//列表可见项目为0时停止执行€€f(ss.gd=="true")€€{€€endcode€€}€€//判断是否以提醒过€€s(st_bT-st_vT,kj)€€f(st_fM==kj)€€{€€//以滚动到底部执行的事件€€ss gd="true"€€tw("已经到底了,没有更多啦!",0)€€}€//以上代码放到列表的 控件事件→触屏滚动事件→滚动€》

『小菜』

〔iApp实例代码〕

【浏览器进度条】

〖2017-08-03 17:07:20〗

《.放到浏览器事件的加载过程进度改变中€f(st_nS == 100)

{€ug(10,"title",a)€//10为浏览器id€us(7,"text",a)€//7为文本id€}€else€{€ss("正在加载网页..("+ st_nS +")",a)€us(7,"text",a)€}€》

『小菜』

〔iApp实例代码〕

【文本转语音实例】

〖2017-08-03 17:09:10〗

《ug(id,"text",a)€.输入编辑框ID€f(a=="")€{€tw("请输入文字")€}€else€{€stobm(a,"utf-8",a)€sr(a," ","",a)€t(){€ss("http://tts.baidu.com/text2audio?ie=UTF-8&lan=zh&text="+a,a)€ufnsui()€{€tw("下载中...",0)€}€hd(a,"%iappsj/转语音/转换后.mp3",true,b)€f(b==0)€{€ufnsui()€€{€€tw("已保存到根目录的%iappsj/转换后目录里面",0)€}€bfm("%iappsj/转语音/转换后.mp3",c)€bfms(c,"st")€€}€}€}€》

『小菜』

〔iApp实例代码〕

【按两次退出软件】

〖2017-08-03 17:12:05〗

《f(st_kC==4)€{€f(sss.exit==null)€{€sss exit=0€tw("再按一次退出程序",0)€t()€{€stop(600)€sss exit=null€}€}€else€{€end()€}€}€//以上代码请放入:界面事件→按键按下事€》

『小菜』

〔iApp实例代码〕

【按返回键弹窗示例】

〖2017-08-03 17:14:03〗

《.放在按键按下事件€f(st_kC==4)€{€ufnsui()€{€€s a="17301646"€€.这里是弹窗图片€€s b="提示"€€.这里是弹窗标题€s nr="是否确认退出?"€€.这里是弹窗的内容,可以输入界面名直接弹出界面€€s button="取消"€s c="确认退出"€utw(a,b,nr,c,button,false,a)€{€end()€}€else€{€}€}€}€else€{€}€》

『小菜』

〔iApp实例代码〕

【进度条参数】

〖2017-08-03 17:18:50〗

《s jd="progress"€€.这是进度的参数€€s id=.这里是进度条ID€t()€€{€€us(id,jd,1)€€s a=1€€s b=100€€w(100>0)€€{€€ug(id,jd,pp)€s+(pp,1,ppk)€€f(pp==99)€€{€€uigo("a1.iyu")€€end()€}€us(id,jd,ppk)€stop(20)€€}€}€》

『小菜』

〔iApp实例代码〕

【获取sd卡根目录】

〖2017-08-03 17:20:06〗

《s ss=""€fl(ss,true,b)€for(c;b)€{€ula(a,2="@60a85caf970cd853ebf9529f4a46f42c.png",3=c)€}€fl(ss,false,b)€for(c;b)€{€ula(a,2="@79.png",3=c)€}€uls(8,a,"a.iyu","100dp",-2)€》

『小菜』

〔iApp实例代码〕

【列表的写法】

〖2017-08-03 17:22:09〗

《ula(a, 10="@1.png",5="你好",6="个人签名",-1="1",8=null)€ula(a, 10="@1.png",5="你好",6="个人签名",-1="1",8=null)€ula(a, 10="@1.png",5="你好",6="个人签名",-1="1",8=null)€ula(a, 10="@1.png",5="你好",6="个人签名",-1="1",8=null)€uls(1,a,"a.iyu",-1,-2)€注:以上在载入事件€ulag(st_vW, -1, h)€注:以上是在列表点击按钮里写€》

『小菜』

〔iApp实例代码〕

【下拉菜单示例】

〖2017-08-03 17:24:26〗

《.以本软件为例,字体颜色更换€s wa="黑;红;绿;蓝"€sl(wa,";",c)€uls(30,c)€.注:30是下拉菜单ID,以上放载入事件€€ug(30,"*editem",b)€.获取下拉框参数€€f(b=="红")€.判断是否红色执行以下代码€{€us(15,"textcolor","#ffff0a00")€}€else f(b=="蓝")€.判断是否蓝色执行以下代码€{€us(15,"textcolor","#ff001eff")€}€else f(b=="黑")€.判断是否黑色执行以下代码€{€us(15,"textcolor","#f8000000")€}€else f(b=="绿")€.判断是否绿色执行以下代码{€us(15,"textcolor","#ff00cc22")€}€.注:15是编辑框ID,以上放到下拉菜单事件选择项目事件。€》

『小菜』

〔iApp实例代码〕

【密码登录软件】

〖2017-08-03 17:27:15〗

《ug(1,"text",u)€f(u=="")€{€tw("密码不能为空")€}€else f(u=="123456")€.这是密码€{€tw("登录成功")€uigo("a")€.这是密码正确后登录的页面€}€else€{€tw("密码错了")€}€》

『小菜』

〔iApp实例代码〕

【跳到QQ聊天】

〖2017-08-03 17:29:08〗

《s url = "mqqwpa://im/chat?€chat_type=wpa&version=1&uin="€ss(url+"834897931",url)€.改成聊天QQ号€sit(a, "action", "android.intent.action.VIEW)"€sit(a, "data", url)€uit(a, "chooser", "跳转到聊天")€》

『小菜』

〔iApp实例代码〕

【字体无限变色】

〖2017-08-03 17:31:37〗

《s id=这里是文本控件id€t()€{€s a=1€.变色暂停的时间€s sj=100€.w无限循环€w(a==1)€{€.随机字体颜色数值€sran(100000,800000,sjs)€ss("-"+sjs,sjs)€ufnsui()€{€us(id, "textcolor", sjs)€}€stop(sj)€}€}€》

『小菜』

〔iApp实例代码〕

【sit调用系统分享软件】

〖2017-08-03 17:33:20〗

《sit(a, "action", "android.intent.action.SEND")€sit(a, "type", "application/vnd.android.package-archive")€€sit(a, "extra", "android.intent.extra.STREAM","/€sdcard/iapp.apk")€€.这个是软件路径"/sdcard/iapp.apk",€uit(a, "chooser", "分享软件")€》

『小菜』

〔iApp实例代码〕

【sit调用系统分享图片】

〖2017-08-03 17:34:10〗

《sit(a, "action", "android.intent.action.SEND")€€sit(a, "type", "*/*")€€sit(a, "extra", "android.intent.extra.STREAM","/sdcard/iApp/Userimg/icon_iapp.png")€€.这是图片路径€uit(a, "chooser", "分享") €》

『小菜』

〔iApp实例代码〕

【sit调用支付宝】

〖2017-08-03 17:36:56〗

《s zfb="alipayqr://platformapi/startapp?saId=10000007&clientVersion=3.7.0.0718&qrcode="€€ss(zfb+"https://qr.alipay.com€fkx08372xrgzmjxuveshx6f",bao)€€sit(a,"action", "android.intent.action.VIEW")€sit(a,"data",bao)€uit(a, "chooser", "支付宝捐款")€》

『小菜』

〔iApp实例代码〕

【sit保存图片到QQ收藏】

〖2017-08-03 17:37:04〗

《sit(a, "action", "android.intent.action.SEND")€sit(a, "type", "image/jpeg")€sit(a,"classname","com.tencent.mobileqq", "cooperation.qqfav.widget.QfavJumpActivity")€€sit(a, "extra", "android.intent.extra.STREAM","/sdcard/lunbo.png")€uit(a, "chooser", "收藏图片")€》

『小菜』

〔iApp实例代码〕

【sit直接调用QQ分享图片】

〖2017-08-03-17:39:59〗

《sit(a, "action", "android.intent.action.SEND")€€sit(a, "type", "image/jpeg")€€sit(a,"classname","com.tencent.mobileqq", "com.tencent.mobileqq.activity.JumpActivity")€€sit(a, "extra", "android.intent.extra.STREAM","/sdcard/lunbo.png")€€uit(a, "chooser", "分享图片")€》

『小菜』

〔iApp实例代码〕

【sit调用发短信】

〖2017-08-03 17:40:49〗

《sit(a, "action","android.intent.action.SENDTO") €€€sit(a,"type","vnd.android-dir/mms-sms")€€€sit(a, "data", "smsto:10086") €€€sit(a,"extra","sms_body","短信内容")€€€uit(a, "chooser", "发短信")€》

『小菜』

〔iApp实例代码〕

€开启€

【€开启€

【五大布局】

〖2017-08-07 01:14:26〗

《五大布局€€--Android中常用的5大布局方式有以下几种:€--线性布局(LinearLayout):按照垂直或者水平方向布局的组件。€--帧布局 €(FrameLayout):组件从屏幕左上方布局组件。€--表格布局(TableLayout):按照行列方式布局组件。€--相对布局€(RelativeLayout):相对其它组件的布局方式。€--绝对布局 €(AbsoluteLayout):按照绝对坐标来布局组件。€€€1.线性布局(LinearLayout)€线性布局是Android开发中最常见的一种布局方式,它是按照垂直或者水平方向来布局,通过orientation属性可以设置线性布局的方向。属性值有垂直(vertical)和水平€(horizontal)两种。€常用的属性:€orientation:可以设置布局的方向€gravity:用来控制组件的对齐方式€layout_weight控制各个控件在布局中的相对大小,layout_weight的属性是一个非负整数值。  €线性布局会根据该控件layout_weight值与其所处布局中所有控件layout_weight值之和的比值为该控件分配占用的区域€--[[例如,在水平布局的LinearLayout中有两个Button,这两个Button的layout_weight属性值都为1,那么这两个按钮都会被拉伸到整个屏幕宽度的一半。如果layout_weight指为0,控件会按原大小显示,不会被拉伸.€对于其佘layout_weight属性值大于0的控件,系统将会减去layout_weight属性值为0的控件的宽度或者高度,再用剩余的宽度或高度按相应的比例来分配每一个控件显示的宽度或高度]]€€€2.帧布局(FrameLayout)€帧布局是从屏幕的左上角(0,0)坐标开始布局,多个组件层叠排列,第一个添加的组件放到最底层,最后添加到框架中的视图显示在最上面。上一层的会覆盖下一层的控件。€€€3.表格布局(TableLayout)€表格布局是一个ViewGroup以表格显示它的子视图(view)元素,即行和列标识一个视图的位置。€表格布局常用的属性如下:€collapseColumns:隐藏指定的列€shrinkColumns:收缩指定的列以适合屏幕,不会挤出屏幕€stretchColumns:尽量把指定的列填充空白部分€layout_column:控件放在指定的列€layout_span:该控件所跨越的列数€€€4.相对布局(RelativeLayout)€相对布局是按照组件之间的相对位置来布局,比如在某个组件的左边,右边,上面和下面等。€€€€5.绝对布局(AbsoluteLayout)€采用坐标轴的方式定位组件,左上角是(0,0)点,往右x轴递增,往下Y轴递增,组件定位属性为layout_x 和layout_y来确定坐标。€》

『小菜』

〔Lua理论知识〕

【获取手机存储空间】

〖2017-08-07 01:11:23〗

《获取手机存储空间€€--获取手机内置剩余存储空间€€ function GetSurplusSpace()€€fs =  StatFs(Environment.getDataDirectory().getPath())€€return Formatter.formatFileSize(activity, (fs.getAvailableBytes()))€€ end€€€--获取手机内置存储总空间€ function GetTotalSpace()€ path = Environment.getExternalStorageDirectory()€ stat = StatFs(path.getPath())€ blockSize = stat.getBlockSize()€ totalBlocks = stat.getBlockCount()€return Formatter.formatFileSize(activity, blockSize * totalBlocks)€ end€》

『小菜』

〔Lua理论知识〕

【标题栏(ActionBar)】

〖2017-08-06 00:50:39〗

《标题栏(ActionBar)€--部分常用API€show:显示€hide:隐藏€Elevation:设置阴影€BgroundDrawable:设置背景€DisplayHomeAsUpEnabled(boolean):设置是否显示返回图标€€--设置标题€activity.ActionBar.setTitle('大标题')€activity.ActionBar.setSubTitle("小标题")€€--设置ActionBar背景颜色€.import "android.graphics.drawable€ColorDrawable€"activity.ActionBar.setBackgroundDrawable(ColorDrawable(Color))€€--自定义ActionBar标题颜色€import "android.text.SpannableString"import "android.text.style.ForegroundColorSpan"€import "android.text.Spannable"€sp =€SpannableString("标题")€sp.setSpan(ForegroundColorSpan(0xff1DA6DD),0,#sp,Spannable.SPAN_EXCLUSIVE_INCLUSIVE)€activity.ActionBar.setTitle(sp)€€--自定义ActionBar布

DisplayShowCustomEnabled(true)€CustomView(loadlayout(layout))€--ActionBar返回按钮€activity.ActionBar€setDisplayHomeAsUpEnabled(true)€--自定义返回按钮图标€activity.ActionBar€setHomeAsUpIndicator(drawable)€€€€--菜单€function onCreateOptionsMenu(menu)€  menu.add("菜单1")€  menu.add("菜单2")€  menu.add("菜单3")€end€function onOptionsItemSelected(item)€  print("你选择了:"..item.Title)

end€--Tab导航使用€import "android.app.ActionBar$TabListener"

actionBar=activity.ActionBar€actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);€tab = actionBar.newTab().setText("Tab1").setTabListener(TabListener({€  onTabSelected=function()€    print"Tab1"€  end}))€tab2=actionBar.newTab().setText("Tab2").setTabListener(TabListener({€onTabSelected=function()€    print"Tab2"€  end}))€actionBar.addTab(tab)€actionBar.addTab(tab2)€》

『小菜』

〔Lua功能实现〕

【for循环】

〖2017-08-06 00:46:12〗

《For循环€--给定条件进行循环€€--输出从1到10€for i=1,10 do€print(i)€end€€€€--输出从10到1€for i=10,1,-1 do€print(i)€end€€--打印数组a中所有的值€a={"a","b","c","d"}€for index,content in pairs(a) do€print(content)€end》

『小菜』

〔Lua基础知识〕

【if判断语句】

〖2017-08-06 00:43:56〗

《if(判断语句)€--判断值是否为真€a=true€if a then€print("真")€else€print("假")€end€€--比较值是否相同€a=true€b=false€if a==b then€print("真")€else€print("假")€end》

『小菜』

〔Lua基础知识〕

【打印】

〖2017-08-06 00:41:59〗

《打印€print"Hello World!"€print("Hello World")》

『小菜』

〔Lua基础知识〕

【Android自定义弹窗】

〖2017-08-03 16:56:48〗

《dialog = new Dialog(this);€dialog.setCancelable(false);€dialog.setCanceledOnTouchOutside(false);€dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);€final View view = LayoutInflater.from(this).inflate(R.layout.dialoglayout, null);€dialog.setContentView(view);€dialog.show();€//dialoglayout是布局文件的名称,其它就不用我多讲了吧?》

『小菜』

〔Android功能实现〕

【第一个java程序讲解】

〖2017-08-03 16:41:39〗

《€public class HelloMain€{€public static void main(String[] args)€{€System.out.printIn("Hello Java")€}€}€€€//public 是一个Java的关键词,用来说明类使用的权限范围,表明这是一个公有类,即为 公有访问类型 ,其它任何类都可以直接访问到它。€€€//class 也是一个Java的关键词,用于类的声明,然后就是类名HelloMain€€€€//public static void main (String[] args) 是一个main方法,这是整个程序的入口,所有程序都是从这里开始运行的,这行的代码格式是固定的,String[] args 可以写成 String args[] 表示为字符串类型,args是arguments的缩写,翻译为 参数 ,void 也是Java的关键词,表明该方法没有返回值,整段代码表明main是公有的静态方法。€》

『小菜』

〔java基础知识〕

【iApp弹窗】

〖2017-08-03 16:43:49〗

《€//无按钮弹窗€utw(null,"标题","内容",false,a)€{€€}€€//有按钮弹窗€utw(null,"标题","内容","确定",false,a)€{€€}€》

『小菜』

〔iApp实例代码〕

【文本跑马灯示例】

〖2017-08-03 16:46:20〗

《把以下代码放到文本控件属性里

scrollhorizontally=true

ellipsize=marquee

focusable=true

marqueerepeatlimit=marquee_forever

focusableintouchmode=true

scrollhorizontally=true€》

【iApp$私文件夹的用处】

〖2017-08-03 16:53:19〗

《iAPP2.0中,有一个私有文件夹,但很多人都不知道有什么用。其实这个私有文件夹特别实用的,比如你要保存一些东西,但又不想让用户看到,可以保存到私有文件夹下哦。€€私有文件夹的路径是:/data/data/安装包名/files€路径不用管,直接在保存文件加个$符号就行了。私有文件夹的好处是,用户没有Root权限是无法修改你保存的内容的。比如一些txt文件等,若你保存在%手机内存里,那么很可能被人修改或者看到哦!€》

〖小菜〗

〔iApp实例代码〕

【随机启动语录】

〖2017-08-03 16:54:39〗

《sl("你爹="#6c6c6c">|你大爷="#6c6c6c">|你二爷="#6c6c6c">|你大舅="#6c6c6c">|你二舅="#6c6c6c">|你大侄子","="#6c6c6c">|",ok)

//分割为数组€€sran(0,5,sj)

//生产1-6的随机数€€sgsz(ok,sj,yes)

//随机访问语录€€tw(yes)€》

『小菜』

〔iApp实例代码〕

【post深度解析】

〖2017-08-03 16:56:00〗

《€€€€post在下面的内容我们就讲过,现在更彻底了讲一遍,保证你学会post提交数据!€€post的是什么呢?post就是提交数据,提交内容给网站处理,然后获取返回的结果。类似登录功能,同理!€€一般我们需要从网站获取源代码后才能知道该提交什么,接口是什么。€举个例子:我从某网站源代码中得出下列代码:€€="http://flmle.com/so.php"">€="hidden" name="siteid" value="1000">€="text" name="key" placeholder="输入关键字">€="submit" value="搜索">€€€这是一个搜索表单(表单从form开头form结尾)€€第一行:="http://flmle.com/so.php">

其中action的这个地址就是提交的接口€€第二行:="hidden" name="id" value="1000">

表示这是一个隐藏的输入框 为什么要隐藏呢?因为不需要用户输入,但必须要提交。他的属性是id=1000€€那就得出一个提交的内容€€第三行: ="text" name="key" placeholder="输入关键字">€这是一个需要输入内容的输入框,他的属性是key,得出一个提交的内容:key=搜索关键字€第四行: ="submit" value="搜索">€这个完全不用管他,他是一个提交按钮,我们post的时候本身就是一个提交了,所以不需要他!€€就这样得出post内容€€hs("http://flmle.com/so.php","id=1000&key=搜索关键字","utf-8",ok)€€提交的内容是通过&符号串联到一起的,不要写错!€€ok就是返回的结果,你可以syso(ok)打印出来查看是否已经提交成功从而截取你需要的结果!€€》

『小菜』

〔iApp实例代码〕

【下载文件简单示例】

〖2017-08-03 16:59:45〗

《t()€{€hd("http://flmle.com/ok.apk","iApp/ok.apk",true,ok)€//iApp/ok是保存路径,true是如果存在则覆盖€€f(ok=="0")€{€ufnsui()€{€tw("下载成功")€}€}€else€{€ufnsui()€{€tw("下载失败")€}€}€}€》

『小菜』

〔iApp实例代码〕

【列表里设置圆角】

〖2017-08-03 17:02:59〗

《作用:可以设置每个列表的圆角或者背景颜色,又或者设置边框,其他一切等等€€比如两个界面:mian.iyu主界面和list.iyu列表界面€首先在列表设计界面list.iyu的载入事件写代码€€gvs(st_vW,list.1,ok)€us(ok,"background","#336699")€通过gvs获取id为1的对象并设置背景颜色为#336699€如何圆角或者边框呢?可以搜索ngde属性。€设置圆角例子:€gvs(st_vW,list.1,ok)€ngde(5,"#336699",yes)€us(ok,"background",yes)€》

『小菜』

〔iApp实例代码〕

【判断列表是否已经滑动到低部】

〖2017-08-03 17:05:45〗

《f(st_vT==0)€€{€€endcode€€}€€//列表可见项目为0时停止执行€€f(ss.gd=="true")€€{€€endcode€€}€€//判断是否以提醒过€€s(st_bT-st_vT,kj)€€f(st_fM==kj)€€{€€//以滚动到底部执行的事件€€ss gd="true"€€tw("已经到底了,没有更多啦!",0)€€}€//以上代码放到列表的 控件事件→触屏滚动事件→滚动€》

『小菜』

〔iApp实例代码〕

【浏览器进度条】

〖2017-08-03 17:07:20〗

《.放到浏览器事件的加载过程进度改变中€f(st_nS == 100)

{€ug(10,"title",a)€//10为浏览器id€us(7,"text",a)€//7为文本id€}€else€{€ss("正在加载网页..("+ st_nS +")",a)€us(7,"text",a)€}€》

『小菜』

〔iApp实例代码〕

【文本转语音实例】

〖2017-08-03 17:09:10〗

《ug(id,"text",a)€.输入编辑框ID€f(a=="")€{€tw("请输入文字")€}€else€{€stobm(a,"utf-8",a)€sr(a," ","",a)€t(){€ss("http://tts.baidu.com/text2audio?ie=UTF-8&lan=zh&text="+a,a)€ufnsui()€{€tw("下载中...",0)€}€hd(a,"%iappsj/转语音/转换后.mp3",true,b)€f(b==0)€{€ufnsui()€€{€€tw("已保存到根目录的%iappsj/转换后目录里面",0)€}€bfm("%iappsj/转语音/转换后.mp3",c)€bfms(c,"st")€€}€}€}€》

『小菜』

〔iApp实例代码〕

【按两次退出软件】

〖2017-08-03 17:12:05〗

《f(st_kC==4)€{€f(sss.exit==null)€{€sss exit=0€tw("再按一次退出程序",0)€t()€{€stop(600)€sss exit=null€}€}€else€{€end()€}€}€//以上代码请放入:界面事件→按键按下事€》

『小菜』

〔iApp实例代码〕

【按返回键弹窗示例】

〖2017-08-03 17:14:03〗

《.放在按键按下事件€f(st_kC==4)€{€ufnsui()€{€€s a="17301646"€€.这里是弹窗图片€€s b="提示"€€.这里是弹窗标题€s nr="是否确认退出?"€€.这里是弹窗的内容,可以输入界面名直接弹出界面€€s button="取消"€s c="确认退出"€utw(a,b,nr,c,button,false,a)€{€end()€}€else€{€}€}€}€else€{€}€》

『小菜』

〔iApp实例代码〕

【进度条参数】

〖2017-08-03 17:18:50〗

《s jd="progress"€€.这是进度的参数€€s id=.这里是进度条ID€t()€€{€€us(id,jd,1)€€s a=1€€s b=100€€w(100>0)€€{€€ug(id,jd,pp)€s+(pp,1,ppk)€€f(pp==99)€€{€€uigo("a1.iyu")€€end()€}€us(id,jd,ppk)€stop(20)€€}€}€》

『小菜』

〔iApp实例代码〕

【获取sd卡根目录】

〖2017-08-03 17:20:06〗

《s ss=""€fl(ss,true,b)€for(c;b)€{€ula(a,2="@60a85caf970cd853ebf9529f4a46f42c.png",3=c)€}€fl(ss,false,b)€for(c;b)€{€ula(a,2="@79.png",3=c)€}€uls(8,a,"a.iyu","100dp",-2)€》

『小菜』

〔iApp实例代码〕

【列表的写法】

〖2017-08-03 17:22:09〗

《ula(a, 10="@1.png",5="你好",6="个人签名",-1="1",8=null)€ula(a, 10="@1.png",5="你好",6="个人签名",-1="1",8=null)€ula(a, 10="@1.png",5="你好",6="个人签名",-1="1",8=null)€ula(a, 10="@1.png",5="你好",6="个人签名",-1="1",8=null)€uls(1,a,"a.iyu",-1,-2)€注:以上在载入事件€ulag(st_vW, -1, h)€注:以上是在列表点击按钮里写€》

『小菜』

〔iApp实例代码〕

【下拉菜单示例】

〖2017-08-03 17:24:26〗

《.以本软件为例,字体颜色更换€s wa="黑;红;绿;蓝"€sl(wa,";",c)€uls(30,c)€.注:30是下拉菜单ID,以上放载入事件€€ug(30,"*editem",b)€.获取下拉框参数€€f(b=="红")€.判断是否红色执行以下代码€{€us(15,"textcolor","#ffff0a00")€}€else f(b=="蓝")€.判断是否蓝色执行以下代码€{€us(15,"textcolor","#ff001eff")€}€else f(b=="黑")€.判断是否黑色执行以下代码€{€us(15,"textcolor","#f8000000")€}€else f(b=="绿")€.判断是否绿色执行以下代码{€us(15,"textcolor","#ff00cc22")€}€.注:15是编辑框ID,以上放到下拉菜单事件选择项目事件。€》

『小菜』

〔iApp实例代码〕

【密码登录软件】

〖2017-08-03 17:27:15〗

《ug(1,"text",u)€f(u=="")€{€tw("密码不能为空")€}€else f(u=="123456")€.这是密码€{€tw("登录成功")€uigo("a")€.这是密码正确后登录的页面€}€else€{€tw("密码错了")€}€》

『小菜』

〔iApp实例代码〕

【跳到QQ聊天】

〖2017-08-03 17:29:08〗

《s url = "mqqwpa://im/chat?€chat_type=wpa&version=1&uin="€ss(url+"834897931",url)€.改成聊天QQ号€sit(a, "action", "android.intent.action.VIEW)"€sit(a, "data", url)€uit(a, "chooser", "跳转到聊天")€》

『小菜』

〔iApp实例代码〕

【字体无限变色】

〖2017-08-03 17:31:37〗

《s id=这里是文本控件id€t()€{€s a=1€.变色暂停的时间€s sj=100€.w无限循环€w(a==1)€{€.随机字体颜色数值€sran(100000,800000,sjs)€ss("-"+sjs,sjs)€ufnsui()€{€us(id, "textcolor", sjs)€}€stop(sj)€}€}€》

『小菜』

〔iApp实例代码〕

【sit调用系统分享软件】

〖2017-08-03 17:33:20〗

《sit(a, "action", "android.intent.action.SEND")€sit(a, "type", "application/vnd.android.package-archive")€€sit(a, "extra", "android.intent.extra.STREAM","/€sdcard/iapp.apk")€€.这个是软件路径"/sdcard/iapp.apk",€uit(a, "chooser", "分享软件")€》

『小菜』

〔iApp实例代码〕

【sit调用系统分享图片】

〖2017-08-03 17:34:10〗

《sit(a, "action", "android.intent.action.SEND")€€sit(a, "type", "*/*")€€sit(a, "extra", "android.intent.extra.STREAM","/sdcard/iApp/Userimg/icon_iapp.png")€€.这是图片路径€uit(a, "chooser", "分享") €》

『小菜』

〔iApp实例代码〕

【sit调用支付宝】

〖2017-08-03 17:36:56〗

《s zfb="alipayqr://platformapi/startapp?saId=10000007&clientVersion=3.7.0.0718&qrcode="€€ss(zfb+"https://qr.alipay.com€fkx08372xrgzmjxuveshx6f",bao)€€sit(a,"action", "android.intent.action.VIEW")€sit(a,"data",bao)€uit(a, "chooser", "支付宝捐款")€》

『小菜』

〔iApp实例代码〕

【sit保存图片到QQ收藏】

〖2017-08-03 17:37:04〗

《sit(a, "action", "android.intent.action.SEND")€sit(a, "type", "image/jpeg")€sit(a,"classname","com.tencent.mobileqq", "cooperation.qqfav.widget.QfavJumpActivity")€€sit(a, "extra", "android.intent.extra.STREAM","/sdcard/lunbo.png")€uit(a, "chooser", "收藏图片")€》

『小菜』

〔iApp实例代码〕

【sit直接调用QQ分享图片】

〖2017-08-03-17:39:59〗

《sit(a, "action", "android.intent.action.SEND")€€sit(a, "type", "image/jpeg")€€sit(a,"classname","com.tencent.mobileqq", "com.tencent.mobileqq.activity.JumpActivity")€€sit(a, "extra", "android.intent.extra.STREAM","/sdcard/lunbo.png")€€uit(a, "chooser", "分享图片")€》

『小菜』

〔iApp实例代码〕

【sit调用发短信】

〖2017-08-03 17:40:49〗

《sit(a, "action","android.intent.action.SENDTO") €€€sit(a,"type","vnd.android-dir/mms-sms")€€€sit(a, "data", "smsto:10086") €€€sit(a,"extra","sms_body","短信内容")€€€uit(a, "chooser", "发短信")€》

『小菜』

〔iApp实例代码〕

五大布局】

〖2017-08-07 01:14:26〗

《五大布局€€--Android中常用的5大布局方式有以下几种:€--线性布局(LinearLayout):按照垂直或者水平方向布局的组件。€--帧布局 €(FrameLayout):组件从屏幕左上方布局组件。€--表格布局(TableLayout):按照行列方式布局组件。€--相对布局€(RelativeLayout):相对其它组件的布局方式。€--绝对布局 €(AbsoluteLayout):按照绝对坐标来布局组件。€€€1.线性布局(LinearLayout)€线性布局是Android开发中最常见的一种布局方式,它是按照垂直或者水平方向来布局,通过orientation属性可以设置线性布局的方向。属性值有垂直(vertical)和水平€(horizontal)两种。€常用的属性:€orientation:可以设置布局的方向€gravity:用来控制组件的对齐方式€layout_weight控制各个控件在布局中的相对大小,layout_weight的属性是一个非负整数值。  €线性布局会根据该控件layout_weight值与其所处布局中所有控件layout_weight值之和的比值为该控件分配占用的区域€--[[例如,在水平布局的LinearLayout中有两个Button,这两个Button的layout_weight属性值都为1,那么这两个按钮都会被拉伸到整个屏幕宽度的一半。如果layout_weight指为0,控件会按原大小显示,不会被拉伸.€对于其佘layout_weight属性值大于0的控件,系统将会减去layout_weight属性值为0的控件的宽度或者高度,再用剩余的宽度或高度按相应的比例来分配每一个控件显示的宽度或高度]]€€€2.帧布局(FrameLayout)€帧布局是从屏幕的左上角(0,0)坐标开始布局,多个组件层叠排列,第一个添加的组件放到最底层,最后添加到框架中的视图显示在最上面。上一层的会覆盖下一层的控件。€€€3.表格布局(TableLayout)€表格布局是一个ViewGroup以表格显示它的子视图(view)元素,即行和列标识一个视图的位置。€表格布局常用的属性如下:€collapseColumns:隐藏指定的列€shrinkColumns:收缩指定的列以适合屏幕,不会挤出屏幕€stretchColumns:尽量把指定的列填充空白部分€layout_column:控件放在指定的列€layout_span:该控件所跨越的列数€€€4.相对布局(RelativeLayout)€相对布局是按照组件之间的相对位置来布局,比如在某个组件的左边,右边,上面和下面等。€€€€5.绝对布局(AbsoluteLayout)€采用坐标轴的方式定位组件,左上角是(0,0)点,往右x轴递增,往下Y轴递增,组件定位属性为layout_x 和layout_y来确定坐标。€》

『小菜』

〔Lua理论知识〕

【获取手机存储空间】

〖2017-08-07 01:11:23〗

《获取手机存储空间€€--获取手机内置剩余存储空间€€ function GetSurplusSpace()€€fs =  StatFs(Environment.getDataDirectory().getPath())€€return Formatter.formatFileSize(activity, (fs.getAvailableBytes()))€€ end€€€--获取手机内置存储总空间€ function GetTotalSpace()€ path = Environment.getExternalStorageDirectory()€ stat = StatFs(path.getPath())€ blockSize = stat.getBlockSize()€ totalBlocks = stat.getBlockCount()€return Formatter.formatFileSize(activity, blockSize * totalBlocks)€ end€》

『小菜』

〔Lua理论知识〕

【标题栏(ActionBar)】

〖2017-08-06 00:50:39〗

《标题栏(ActionBar)€--部分常用API€show:显示€hide:隐藏€Elevation:设置阴影€BgroundDrawable:设置背景€DisplayHomeAsUpEnabled(boolean):设置是否显示返回图标€€--设置标题€activity.ActionBar.setTitle('大标题')€activity.ActionBar.setSubTitle("小标题")€€--设置ActionBar背景颜色€.import "android.graphics.drawable€ColorDrawable€"activity.ActionBar.setBackgroundDrawable(ColorDrawable(Color))€€--自定义ActionBar标题颜色€import "android.text.SpannableString"import "android.text.style.ForegroundColorSpan"€import "android.text.Spannable"€sp =€SpannableString("标题")€sp.setSpan(ForegroundColorSpan(0xff1DA6DD),0,#sp,Spannable.SPAN_EXCLUSIVE_INCLUSIVE)€activity.ActionBar.setTitle(sp)€€--自定义ActionBar布

DisplayShowCustomEnabled(true)€CustomView(loadlayout(layout))€--ActionBar返回按钮€activity.ActionBar€setDisplayHomeAsUpEnabled(true)€--自定义返回按钮图标€activity.ActionBar€setHomeAsUpIndicator(drawable)€€€€--菜单€function onCreateOptionsMenu(menu)€  menu.add("菜单1")€  menu.add("菜单2")€  menu.add("菜单3")€end€function onOptionsItemSelected(item)€  print("你选择了:"..item.Title)

end€--Tab导航使用€import "android.app.ActionBar$TabListener"

actionBar=activity.ActionBar€actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);€tab = actionBar.newTab().setText("Tab1").setTabListener(TabListener({€  onTabSelected=function()€    print"Tab1"€  end}))€tab2=actionBar.newTab().setText("Tab2").setTabListener(TabListener({€onTabSelected=function()€    print"Tab2"€  end}))€actionBar.addTab(tab)€actionBar.addTab(tab2)€》

『小菜』

〔Lua功能实现〕

【for循环】

〖2017-08-06 00:46:12〗

《For循环€--给定条件进行循环€€--输出从1到10€for i=1,10 do€print(i)€end€€€€--输出从10到1€for i=10,1,-1 do€print(i)€end€€--打印数组a中所有的值€a={"a","b","c","d"}€for index,content in pairs(a) do€print(content)€end》

『小菜』

〔Lua基础知识〕

【if判断语句】

〖2017-08-06 00:43:56〗

《if(判断语句)€--判断值是否为真€a=true€if a then€print("真")€else€print("假")€end€€--比较值是否相同€a=true€b=false€if a==b then€print("真")€else€print("假")€end》

『小菜』

〔Lua基础知识〕

【打印】

〖2017-08-06 00:41:59〗

《打印€print"Hello World!"€print("Hello World")》

『小菜』

〔Lua基础知识〕

【Android自定义弹窗】

〖2017-08-03 16:56:48〗

《dialog = new Dialog(this);€dialog.setCancelable(false);€dialog.setCanceledOnTouchOutside(false);€dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);€final View view = LayoutInflater.from(this).inflate(R.layout.dialoglayout, null);€dialog.setContentView(view);€dialog.show();€//dialoglayout是布局文件的名称,其它就不用我多讲了吧?》

『小菜』

〔Android功能实现〕

【第一个java程序讲解】

〖2017-08-03 16:41:39〗

《€public class HelloMain€{€public static void main(String[] args)€{€System.out.printIn("Hello Java")€}€}€€€//public 是一个Java的关键词,用来说明类使用的权限范围,表明这是一个公有类,即为 公有访问类型 ,其它任何类都可以直接访问到它。€€€//class 也是一个Java的关键词,用于类的声明,然后就是类名HelloMain€€€€//public static void main (String[] args) 是一个main方法,这是整个程序的入口,所有程序都是从这里开始运行的,这行的代码格式是固定的,String[] args 可以写成 String args[] 表示为字符串类型,args是arguments的缩写,翻译为 参数 ,void 也是Java的关键词,表明该方法没有返回值,整段代码表明main是公有的静态方法。€》

『小菜』

〔java基础知识〕

【iApp弹窗】

〖2017-08-03 16:43:49〗

《€//无按钮弹窗€utw(null,"标题","内容",false,a)€{€€}€€//有按钮弹窗€utw(null,"标题","内容","确定",false,a)€{€€}€》

『小菜』

〔iApp实例代码〕

【文本跑马灯示例】

〖2017-08-03 16:46:20〗

《把以下代码放到文本控件属性里

scrollhorizontally=true

ellipsize=marquee

focusable=true

marqueerepeatlimit=marquee_forever

focusableintouchmode=true

scrollhorizontally=true€》

【iApp$私文件夹的用处】

〖2017-08-03 16:53:19〗

《iAPP2.0中,有一个私有文件夹,但很多人都不知道有什么用。其实这个私有文件夹特别实用的,比如你要保存一些东西,但又不想让用户看到,可以保存到私有文件夹下哦。€€私有文件夹的路径是:/data/data/安装包名/files€路径不用管,直接在保存文件加个$符号就行了。私有文件夹的好处是,用户没有Root权限是无法修改你保存的内容的。比如一些txt文件等,若你保存在%手机内存里,那么很可能被人修改或者看到哦!€》

〖小菜〗

〔iApp实例代码〕

【随机启动语录】

〖2017-08-03 16:54:39〗

《sl("你爹="#6c6c6c">|你大爷="#6c6c6c">|你二爷="#6c6c6c">|你大舅="#6c6c6c">|你二舅="#6c6c6c">|你大侄子","="#6c6c6c">|",ok)

//分割为数组€€sran(0,5,sj)

//生产1-6的随机数€€sgsz(ok,sj,yes)

//随机访问语录€€tw(yes)€》

『小菜』

〔iApp实例代码〕

【post深度解析】

〖2017-08-03 16:56:00〗

《€€€€post在下面的内容我们就讲过,现在更彻底了讲一遍,保证你学会post提交数据!€€post的是什么呢?post就是提交数据,提交内容给网站处理,然后获取返回的结果。类似登录功能,同理!€€一般我们需要从网站获取源代码后才能知道该提交什么,接口是什么。€举个例子:我从某网站源代码中得出下列代码:€€="http://flmle.com/so.php"">€="hidden" name="siteid" value="1000">€="text" name="key" placeholder="输入关键字">€="submit" value="搜索">€€€这是一个搜索表单(表单从form开头form结尾)€€第一行:="http://flmle.com/so.php">

其中action的这个地址就是提交的接口€€第二行:="hidden" name="id" value="1000">

表示这是一个隐藏的输入框 为什么要隐藏呢?因为不需要用户输入,但必须要提交。他的属性是id=1000€€那就得出一个提交的内容€€第三行: ="text" name="key" placeholder="输入关键字">€这是一个需要输入内容的输入框,他的属性是key,得出一个提交的内容:key=搜索关键字€第四行: ="submit" value="搜索">€这个完全不用管他,他是一个提交按钮,我们post的时候本身就是一个提交了,所以不需要他!€€就这样得出post内容€€hs("http://flmle.com/so.php","id=1000&key=搜索关键字","utf-8",ok)€€提交的内容是通过&符号串联到一起的,不要写错!€€ok就是返回的结果,你可以syso(ok)打印出来查看是否已经提交成功从而截取你需要的结果!€€》

『小菜』

〔iApp实例代码〕

【下载文件简单示例】

〖2017-08-03 16:59:45〗

《t()€{€hd("http://flmle.com/ok.apk","iApp/ok.apk",true,ok)€//iApp/ok是保存路径,true是如果存在则覆盖€€f(ok=="0")€{€ufnsui()€{€tw("下载成功")€}€}€else€{€ufnsui()€{€tw("下载失败")€}€}€}€》

『小菜』

〔iApp实例代码〕

【列表里设置圆角】

〖2017-08-03 17:02:59〗

《作用:可以设置每个列表的圆角或者背景颜色,又或者设置边框,其他一切等等€€比如两个界面:mian.iyu主界面和list.iyu列表界面€首先在列表设计界面list.iyu的载入事件写代码€€gvs(st_vW,list.1,ok)€us(ok,"background","#336699")€通过gvs获取id为1的对象并设置背景颜色为#336699€如何圆角或者边框呢?可以搜索ngde属性。€设置圆角例子:€gvs(st_vW,list.1,ok)€ngde(5,"#336699",yes)€us(ok,"background",yes)€》

『小菜』

〔iApp实例代码〕

【判断列表是否已经滑动到低部】

〖2017-08-03 17:05:45〗

《f(st_vT==0)€€{€€endcode€€}€€//列表可见项目为0时停止执行€€f(ss.gd=="true")€€{€€endcode€€}€€//判断是否以提醒过€€s(st_bT-st_vT,kj)€€f(st_fM==kj)€€{€€//以滚动到底部执行的事件€€ss gd="true"€€tw("已经到底了,没有更多啦!",0)€€}€//以上代码放到列表的 控件事件→触屏滚动事件→滚动€》

『小菜』

〔iApp实例代码〕

【浏览器进度条】

〖2017-08-03 17:07:20〗

《.放到浏览器事件的加载过程进度改变中€f(st_nS == 100)

{€ug(10,"title",a)€//10为浏览器id€us(7,"text",a)€//7为文本id€}€else€{€ss("正在加载网页..("+ st_nS +")",a)€us(7,"text",a)€}€》

『小菜』

〔iApp实例代码〕

【文本转语音实例】

〖2017-08-03 17:09:10〗

《ug(id,"text",a)€.输入编辑框ID€f(a=="")€{€tw("请输入文字")€}€else€{€stobm(a,"utf-8",a)€sr(a," ","",a)€t(){€ss("http://tts.baidu.com/text2audio?ie=UTF-8&lan=zh&text="+a,a)€ufnsui()€{€tw("下载中...",0)€}€hd(a,"%iappsj/转语音/转换后.mp3",true,b)€f(b==0)€{€ufnsui()€€{€€tw("已保存到根目录的%iappsj/转换后目录里面",0)€}€bfm("%iappsj/转语音/转换后.mp3",c)€bfms(c,"st")€€}€}€}€》

『小菜』

〔iApp实例代码〕

【按两次退出软件】

〖2017-08-03 17:12:05〗

《f(st_kC==4)€{€f(sss.exit==null)€{€sss exit=0€tw("再按一次退出程序",0)€t()€{€stop(600)€sss exit=null€}€}€else€{€end()€}€}€//以上代码请放入:界面事件→按键按下事€》

『小菜』

〔iApp实例代码〕

【按返回键弹窗示例】

〖2017-08-03 17:14:03〗

《.放在按键按下事件€f(st_kC==4)€{€ufnsui()€{€€s a="17301646"€€.这里是弹窗图片€€s b="提示"€€.这里是弹窗标题€s nr="是否确认退出?"€€.这里是弹窗的内容,可以输入界面名直接弹出界面€€s button="取消"€s c="确认退出"€utw(a,b,nr,c,button,false,a)€{€end()€}€else€{€}€}€}€else€{€}€》

『小菜』

〔iApp实例代码〕

【进度条参数】

〖2017-08-03 17:18:50〗

《s jd="progress"€€.这是进度的参数€€s id=.这里是进度条ID€t()€€{€€us(id,jd,1)€€s a=1€€s b=100€€w(100>0)€€{€€ug(id,jd,pp)€s+(pp,1,ppk)€€f(pp==99)€€{€€uigo("a1.iyu")€€end()€}€us(id,jd,ppk)€stop(20)€€}€}€》

『小菜』

〔iApp实例代码〕

【获取sd卡根目录】

〖2017-08-03 17:20:06〗

《s ss=""€fl(ss,true,b)€for(c;b)€{€ula(a,2="@60a85caf970cd853ebf9529f4a46f42c.png",3=c)€}€fl(ss,false,b)€for(c;b)€{€ula(a,2="@79.png",3=c)€}€uls(8,a,"a.iyu","100dp",-2)€》

『小菜』

〔iApp实例代码〕

【列表的写法】

〖2017-08-03 17:22:09〗

《ula(a, 10="@1.png",5="你好",6="个人签名",-1="1",8=null)€ula(a, 10="@1.png",5="你好",6="个人签名",-1="1",8=null)€ula(a, 10="@1.png",5="你好",6="个人签名",-1="1",8=null)€ula(a, 10="@1.png",5="你好",6="个人签名",-1="1",8=null)€uls(1,a,"a.iyu",-1,-2)€注:以上在载入事件€ulag(st_vW, -1, h)€注:以上是在列表点击按钮里写€》

『小菜』

〔iApp实例代码〕

【下拉菜单示例】

〖2017-08-03 17:24:26〗

《.以本软件为例,字体颜色更换€s wa="黑;红;绿;蓝"€sl(wa,";",c)€uls(30,c)€.注:30是下拉菜单ID,以上放载入事件€€ug(30,"*editem",b)€.获取下拉框参数€€f(b=="红")€.判断是否红色执行以下代码€{€us(15,"textcolor","#ffff0a00")€}€else f(b=="蓝")€.判断是否蓝色执行以下代码€{€us(15,"textcolor","#ff001eff")€}€else f(b=="黑")€.判断是否黑色执行以下代码€{€us(15,"textcolor","#f8000000")€}€else f(b=="绿")€.判断是否绿色执行以下代码{€us(15,"textcolor","#ff00cc22")€}€.注:15是编辑框ID,以上放到下拉菜单事件选择项目事件。€》

『小菜』

〔iApp实例代码〕

【密码登录软件】

〖2017-08-03 17:27:15〗

《ug(1,"text",u)€f(u=="")€{€tw("密码不能为空")€}€else f(u=="123456")€.这是密码€{€tw("登录成功")€uigo("a")€.这是密码正确后登录的页面€}€else€{€tw("密码错了")€}€》

『小菜』

〔iApp实例代码〕

【跳到QQ聊天】

〖2017-08-03 17:29:08〗

《s url = "mqqwpa://im/chat?€chat_type=wpa&version=1&uin="€ss(url+"834897931",url)€.改成聊天QQ号€sit(a, "action", "android.intent.action.VIEW)"€sit(a, "data", url)€uit(a, "chooser", "跳转到聊天")€》

『小菜』

〔iApp实例代码〕

【字体无限变色】

〖2017-08-03 17:31:37〗

《s id=这里是文本控件id€t()€{€s a=1€.变色暂停的时间€s sj=100€.w无限循环€w(a==1)€{€.随机字体颜色数值€sran(100000,800000,sjs)€ss("-"+sjs,sjs)€ufnsui()€{€us(id, "textcolor", sjs)€}€stop(sj)€}€}€》

『小菜』

〔iApp实例代码〕

【sit调用系统分享软件】

〖2017-08-03 17:33:20〗

《sit(a, "action", "android.intent.action.SEND")€sit(a, "type", "application/vnd.android.package-archive")€€sit(a, "extra", "android.intent.extra.STREAM","/€sdcard/iapp.apk")€€.这个是软件路径"/sdcard/iapp.apk",€uit(a, "chooser", "分享软件")€》

『小菜』

〔iApp实例代码〕

【sit调用系统分享图片】

〖2017-08-03 17:34:10〗

《sit(a, "action", "android.intent.action.SEND")€€sit(a, "type", "*/*")€€sit(a, "extra", "android.intent.extra.STREAM","/sdcard/iApp/Userimg/icon_iapp.png")€€.这是图片路径€uit(a, "chooser", "分享") €》

『小菜』

〔iApp实例代码〕

【sit调用支付宝】

〖2017-08-03 17:36:56〗

《s zfb="alipayqr://platformapi/startapp?saId=10000007&clientVersion=3.7.0.0718&qrcode="€€ss(zfb+"https://qr.alipay.com€fkx08372xrgzmjxuveshx6f",bao)€€sit(a,"action", "android.intent.action.VIEW")€sit(a,"data",bao)€uit(a, "chooser", "支付宝捐款")€》

『小菜』

〔iApp实例代码〕

【sit保存图片到QQ收藏】

〖2017-08-03 17:37:04〗

《sit(a, "action", "android.intent.action.SEND")€sit(a, "type", "image/jpeg")€sit(a,"classname","com.tencent.mobileqq", "cooperation.qqfav.widget.QfavJumpActivity")€€sit(a, "extra", "android.intent.extra.STREAM","/sdcard/lunbo.png")€uit(a, "chooser", "收藏图片")€》

『小菜』

〔iApp实例代码〕

【sit直接调用QQ分享图片】

〖2017-08-03-17:39:59〗

《sit(a, "action", "android.intent.action.SEND")€€sit(a, "type", "image/jpeg")€€sit(a,"classname","com.tencent.mobileqq", "com.tencent.mobileqq.activity.JumpActivity")€€sit(a, "extra", "android.intent.extra.STREAM","/sdcard/lunbo.png")€€uit(a, "chooser", "分享图片")€》

『小菜』

〔iApp实例代码〕

【sit调用发短信】

〖2017-08-03 17:40:49〗

《sit(a, "action","android.intent.action.SENDTO") €€€sit(a,"type","vnd.android-dir/mms-sms")€€€sit(a, "data", "smsto:10086") €€€sit(a,"extra","sms_body","短信内容")€€€uit(a, "chooser", "发短信")€》

『小菜』

〔iApp实例代码〕

日记本
Web note ad 1