下面是小编给大家带来关于Android开发工具类(小方法)(共含7篇),一起来看看吧,希望对您有所帮助。同时,但愿您也能像本文投稿人“jarton”一样,积极向本站投稿分享好文章。
1,邮箱地址只展示部分,只展示@前面部分的第1个及最后一个字符,其它的用*代替:
public static String spliteEmail(String email) {/**传入邮箱地址*/ String newEmail = email.split(“@”)[0];/**获取到邮箱@前面部分*/ String[] mails = new String[newEmail.length]; StringBuffer sb = new StringBuffer(); if (mails.length > 0) {if (mails.length < 3) {/**如果邮箱@前面字条小于3个,则显示全部完整邮箱地址*/ return email;}else {/**邮箱地址字符处理*/ for (int i = 0; i < mails.length; i++) {if (i >= 1 && i < mails.length - 1) { sb.append(“*”);}else { sb.append(newEmail.charAt(i));} } return sb.toString() + “@” + email.split(“@”)[1];} } else {return “”; }}
2,手机号码处理(只显示手机号的前3及后3数字,中间用*代替):
public static String splitePhone(String phone) { String[] tel = new String[phone.length()]; StringBuffer sb = new StringBuffer(); if (tel.length > 0) { for (int i = 0; i < tel.length; i++) { if (i > 2 && i < 7) { sb.append(“*”); } else { sb.append(phone.charAt(i)); } } } return sb.toString(); }另外几个常用的正则表达示:
/**@description:判断是否是身份证格式*/ public static boolean isIDCardNo(String cardNo) { Pattern pattern = Pattern.compile(“(^d{15}$)|(^d{18}$)|(^d{17}(d|X|x)$)”); Matcher matcher = pattern.matcher(cardNo); return matcher.matches(); } /**判断输入的是否是中文*/ public static boolean isChineseChar(String inputString) { Pattern pattern = Pattern.compile(“^[u4E00-u9FA5uF900-uFA2D]+$”); // Pattern pattern = Pattern.compile(“^[u4E00-u9FA5]”); return pattern.matcher(inputString).matches(); } /**匹配非负浮点数*/ public static boolean isNotNegativeFloat(String inputString) { Pattern pattern = Pattern.compile(“^[1-9]d*.d*|0.d*[1-9]d*|0?.0+|0$”); return pattern.matcher(inputString).matches(); }
首先呢,先把我们的工具下载下来。这是下载链接:pan.baidu.com/s/1mgrPuIW
下载完成之后,解压即可,解压的目录随意。解压后文件如图所示
我们可以看到有两个msi文件,双击vba6.msi,出现Install has completed successfully就完成了vba6.msi的安装。
接下来双击vba6chs.msi,可以看到和上一步一样的结果,出现install has completed successfully。到此为止安装已完成。
接下来,重启WPS(最好重启一下电脑),重新打开之后我们可以发现真的多了一个开发工具里面有好多功能。
最后说一下在哪里编写VB代码。点击VB编辑器进入一个新的窗口,右键点击项目选择插入,点模块。出现一个编写VB的窗口即可。
我们可以把这个Canvas理解成系统提供给我们的一块内存区域(但实际上它只是一套画图的API,真正的内存是下面的Bitmap),而且它还提供了一整套对这个内存区域进行操作的方法,所有的这些操作都是画图API,也就是说在这种方式下我们已经能一笔一划或者使用Graphic来画我们所需要的东西了,要画什么要显示什么都由我们自己控制。
这种方式根据环境还分为两种:一种就是使用普通View的canvas画图,还有一种就是使用专门的SurfaceView的canvas来画图。两种的主要是区别就是可以在SurfaceView中定义一个专门的线程来完成画图工作,应用程序不需要等待View的刷图,提高性能。前面一种适合处理量比较小,帧率比较小的动画,比如说象棋游戏之类的;而后一种主要用在游戏,高品质动画方面的画图。
Paint 代表了Canvas上的画笔、画刷、颜料等等;
Paint类常用方法:
setARGB(int a, int r, int g, int b) // 设置 Paint对象颜色,参数一为alpha透明值
setAlpha(int a) // 设置alpha不透明度,范围为0~255
setAntiAlias(boolean aa) // 是否抗锯齿
setColor(int color) // 设置颜色,这里Android内部定义的有Color类包含了一些常见颜色定义
setTextScaleX(float scaleX) // 设置文本缩放倍数,1.0f为原始
setTextSize(float textSize) // 设置字体大小
setUnderlineText(booleanunderlineText) // 设置下划线
// 1、将会以颜色ARBG填充整个控件的Canvas背景
//mCanvas.drawARGB(122, 10, 159, 163) ;
// 2、将会以颜色ARBG填充整个控件的Canvas背景
//mCanvas.drawColor(Color.BLUE) ;
// 3、绘制颜色,但是要制定一个mode
//mCanvas.drawColor(Color.BLUE, Mode.SCREEN) ;
// 4、画背景,跟2等效
//mCanvas.drawPaint(mPaint) ;
// 5、画一个点
//mCanvas.drawPoint(23, 23, mPaint) ;
// 6、画很多点这里的float[] 表示{x0,y0,x1,y1,x2,y2,x3,y3.....}
//mCanvas.drawPoints(new float[]{10,11,10,12,10,13,10,14,10,15,10,16}, mPaint) ;
// 7、画线
//mCanvas.drawLine(...) ;
// 8、画长方形 Rect 和RectF的区别?
//精度不一样,Rect是使用int类型作为数值,RectF是使用float类型作为数值
//Rect r = new Rect(10,10,50,50) ;
//mCanvas.drawRect(r, mPaint) ;
//RectF rf = new RectF(10,10,50,50) ;
//mCanvas.drawRect(rf, mPaint) ;
//mCanvas.drawRect(10, 10, 50, 50, mPaint) ;
// 9、画椭圆 初始化RectF的参数是(left,top,right,bottom)
//RectF rf = new RectF(100,100 ,200 ,250) ;
//mCanvas.drawOval(rf, mPaint) ;
// 10、画圆 (圆心x0,圆心y0,半径,paint)
//mCanvas.drawCircle(100, 100, 50, mPaint) ;
// 11、画圆弧 RectF对象表明内切矩形的(left,top,right,bottom)
//RectF rf = new RectF(100 ,100 ,200 ,200) ;
// 参数(rf,startAngle ,angle ,sweepAngle ,paint) sweepAngle表明是否显示圆弧三角形 angle画多少度
//mCanvas.drawArc(rf, 60, 30, true, mPaint) ;
// 12、绘制圆角矩形 RectF是矩形的(left,top,right,bottom)
//RectF rf = new RectF(100 ,100 ,200 ,200) ;
// 50表明x方向的半径,20表示y方向的半径
//mCanvas.drawRoundRect(rf, 50, 20, mPaint) ;
// 13、画任意多边形
//Path path = new Path ;
//path.moveTo(100, 100) ;
//path.lineTo(200, 200) ;
//path.lineTo(300, 200) ;
//mCanvas.drawPath(path, mPaint) ;
// 14、通过Path对象,也可以画其他的图形
//Path path = new Path() ;
//path.addCircle(100, 100, 20, Path.Direction.CCW) ;
//mCanvas.drawPath(path ,mPaint);
/*drawBitmap
drawText
drawPicture*/
/*Rect r = new Rect(100,100,200,200) ;
ByteArrayOutputStream ut = new ByteArrayOutputStream();
Bitmap bitmap = BitmapFactory.decodeResource(mContext.getResources(), R.drawable.bg) ;
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, out) ;
InputStream in = new ByteArrayInputStream(out.toByteArray()) ;
*/
/*Picture picture = Picture.createFromStream(mContext.getResources().openRawResource(R.raw.bg)) ;
mCanvas.drawPicture(picture) ;*/
// 15、画bitmap对象
//mCanvas.drawBitmap(BitmapFactory.decodeResource(mContext.getResources(), R.drawable.bg),100, 100, mPaint) ;
// 16、Matrix中包含了对Bitmap的处理操作
/*Matrix m = new Matrix() ;
m.postScale(2, 2) ;
m.postRotate(60) ;
mCanvas.drawBitmap(BitmapFactory.decodeResource(mContext.getResources(), R.drawable.bg), m, mPaint) ;*/
// 17、画带Matrix参数的bitmap,经过Matrix对象可以对bitmap做相关的处理,比如旋转,缩放,移动等《关于Matrix的使用另行总结》
/*Bitmap bitmap = BitmapFactory.decodeResource(mContext.getResources(), R.drawable.bg) ;
Matrix m = new Matrix() ;
m.postScale(2, 2) ;
m.postRotate(60) ;
m.postTranslate(300, 300) ;
mCanvas.drawBitmap(bitmap, m, mPaint) ;*/
//mCanvas.drawBitmap(....) ; 暂不总结
// 18、画文字
//mCanvas.drawText(123, 10, 10, mPaint) ;
//mCanvas.drawText(....) ; 暂不总结
1、Java核心技术:零基础学Android开发,从Java发展史开始,本阶段课程结合开发环境讲解基础语法,熟悉程序结构,再深入细致的介绍Java中面向对象的编程思想,结合常用设计模式、算法,IO流、多线程、集合框架、网络编程、反射内省、泛型、注解、XML、MySQL、Servlet等核心知识,让你全面掌握Java语言的精髓所在,为后续Android开发打下扎实的基础。
2、Android核心技术:从Android入门到精通,本阶段Android培训课程基于Android Studio开发环境,从UI入门,四大组件、系统服务、Fragment、Loaders、SQLite数据库、文件操作、网络通讯、多媒体、动画、布局优化、缓存优化、内存管理、编码技巧等介绍Android应用开发的全过程,最适合初学者的Android基础教程。
3、Android高级专题:本阶段课程基于企业级应用开发中常用或开源的第三方组件、框架,包括:百度地图、Bmob云平台、Git与Linux、NDK、屏幕适配、APP上线、广告植入、传感器、SlidingMenu菜单、PullToRefresh下拉刷新、图片缓存ImageLoader、xUtils框架、第三方登录分享、极光推送、在线支付、蓝牙、语音/人脸识别、二维码、NFC等众多实用技术,这些技术不仅提高你的开发效率和应用的健壮性,也是高薪必备利器。
4、项目实战:Android开发实战经典,本阶段课程以项目为导线,融合以上阶段所学的技术点,训练综合应用开发,讲解项目从需求分析、功能设计、到代码实现,模拟需求变更,还原真实开发中出现难点,解决难点,代码问题解析,调试异常与逻辑错误等问题,让你在真正的项目实战中增长经验。
1.Weka集成了数据挖掘工作的机器学习算法。这些算法可以直接应用于一个数据集上或者你可以自己编写代码来调用。Weka包括一系列的工具,如数据预处理、分类、回归、聚类、关联规则以及可视化。
2.MassiveOnlineAnalysis(MOA)是一个面向数据流挖掘的流行开源框架,有着非常活跃的成长社区。它包括一系列的机器学习算法(分类、回归、聚类、异常检测、概念漂移检测和推荐系统)和评估工具。关联了WEKA项目,MOA也是用Java编写的,其扩展性更强。
3.MEKA项目提供了一个面向多标签学习和评价方法的开源实现。在多标签分类中,我们要预测每个输入实例的多个输出变量。这与“普通”情况下只涉及一个单一目标变量的情形不同。此外,MEKA基于WEKA的机器学习工具包。
4.AdvancedDataminingAndMachinelearningSystem(ADAMS)是一种新型的柔性工作流引擎,旨在迅速建立并保持真实世界的复杂知识流,它是基于GPLv3发行的。
5.EnvironmentforDevelopingKDD-ApplicationsSupportedbyIndex-Structure(ELKI)是一款基于Java的开源(AGPLv3)数据挖掘软件。ELKI主要集中于算法研究,重点研究聚类分析中的无监督方法和异常检测。
6.Mallet是一个基于Java的面向文本文件的机器学习工具包。Mallet支持分类算法,如最大熵、朴素贝叶斯和决策树分类。
7.Encog是一个先进的机器学习框架,集成了支持向量机(SVM)、人工神经网络、遗传算法、贝叶斯网络、隐马尔可夫模型(HMM)、遗传编程和遗传算法。
8.Datumbox机器学习框架是一个用Java编写的开源框架,允许快速地开发机器学习和统计应用。该框架的核心重点包括大量的机器学习算法以及统计测试,能够处理中等规模的数据集。
9.Deeplearning4j是使用Java和Scala编写的第一个商业级的、开源的、分布式深入学习库。其设计的目的是用于商业环境中,而不是作为一个研究工具。
10.Mahout是一个内置算法的机器学习框架。Mahout-Samsara帮助人们创建他们自己的数学,并提供了一些现成的算法实现。
11.RapidMiner是德国多特蒙特技术大学开发的。它为开发者开发应用程序提供了一个GUI(图形用户界面)和JavaAPI。它还提供了一些机器学习算法,用来做数据处理、可视化以及建模。
12.ApacheSAMOA是一个机器学习(ML)框架,内嵌面向分布式流ML算法的编程抽象,并且允许在没有直接处理底层分布式流处理引擎(DSPEe,如ApacheStorm、ApacheS4和Apachesamza)复杂性的情况下,开发新的ML算法。用户可以开发分布式流ML算法,而且可以在多个DSPEs上执行。
13.Neuroph通过提供支持创建、训练和保存神经网络的Java网络库和GUI工具,简化了神经网络开发。
14.Oryx2是一个建立在ApacheSpark和ApacheKafka的Lambda架构实现,但随着实时大规模机器学习而逐渐开始专业化。这是一个用于构建应用程序的框架,但也包括打包,以及面向协同过滤、分类、回归和聚类的端到端的应用程序。
15.StanfordClassifier是一个机器学习工具,它可以将数据项归置到一个类别。一个概率分类器,比如这个,它可以对一个数据项给出类分配的概率分布。该软件是最大熵分类器的一个Java实现。
以下整理的内容是百度android开发类面试题目,欢迎大家练一练。
1. SQLite支持事务吗?添加删除如何提高性能?
2. 对Intent、Activity、广播、Service等的理解
3. 系统上安装了多种浏览器,能否指定某浏览器访问指定页面?请说明原由。
4. Activity和Task的启动模式有哪些?每种含义是什么?
5、handler机制的原理
6、sim卡的EF 文件有何作用
sim卡的文件系统有自己规范,主要是为了和手机通讯,sim本身可以有自己的操作系统,EF就是作存储并和手机通讯用的
7、嵌入式操作系统内存管理有哪几种,各有何特性?
页式,段式,段页,用到了MMU,虚拟空间等技术
8、什么是嵌入式实时操作系统, Android 操作系统属于实时操作系统吗?
嵌入式实时操作系统是指当外界事件或数据产生时,能够接受并以足够快的速度予以处理,其处理的结果又能在规定的时间之内来控制生产过程或对处理系统作出快速响应,并控制所有实时任务协调一致运行的嵌入式操作系统。主要用于工业控制、军事设备、
航空航天等领域对系统的响应时间有苛刻的要求,这就需要使用实时系统。又可分为软实时和硬实时两种,而android是基于linux内核的,因此属于软实时。
9、一条最长的短信息约占多少byte?
中文70(包括标点),英文160个字节
10、 android中的动画有哪几类,它们的特点和区别是什么?
两种,一种是Tween动画、还有一种是Frame动画。Tween动画,这种实现方式可以使视图组件移动、放大、缩小以及产生透明度的变化;另一种Frame动画,传统的动画方法,通过顺序的播放排列好的图片来实现,类似电影。
相关阅读推荐:1、9道有趣的面试逻辑题 2、英语面试试题及答案(中英文对照30题) 3、微创智力题 4、国泰君安笔试真题 5、常见面试问题:为什么要雇用你? 6、客服经理常见面试问题 7、平安保险公司面试问题 8、采购员面试问题及答案 9、营销策划类面试试题 Encode(String s)
?
1
2
3
4
5
6
if (!TextUtils.isEmpty(spUtil.getUserId())) {
Intent intent = new Intent(WelcomeActivity.this,
MainActivity.class);
startActivity(intent);
} else {
startActivity(new Intent(WelcomeActivity.this,
FirstSetActivity.class));
}
项目中,为了实现不同fragment之间值得传递,首先想到的是利用bundle或者shareprefercnce之类的共享数据机制,当不符合项目需求,有点过于复杂和冗余,就利用网上一位前辈的建议,在主Activity中,创建一个共享的数据变量,在其他fragment中只要获取到这个值就可以得到数据,实现共享,代码如下:
主activity定义一个共享数据变量: private String instrName; public String getInstrName() { return instrName; } public void setInstrName(String instrName) { this.instrName = instrName; }
在其他fragment中使用如下语句即可得到该数据:
String instrName = ((MainActivity)getActivity()).getInstrName();
但重点不在于获取数据,我遇到的困难是这样的,先前的博文有提到我使用了popupwindow作为左侧下拉菜单,为了实现主界面不同fragment的切换,做了一个隐藏和显示的处理,只要已经实例化的fragment类,要用的时候,直接show显示即可,不用的时候hide隐藏起来,又不懂或者不知道如何使用的可以参考我这篇博文:点击打开链接。这样实现之后,我要再fragment a中的列表点击其中一个列表项,跳转到另一个fragment b中,当然这个列表项的值需要传递到fragment b中,很多人会认为不是直接可以使用你上面的方法可以得到共享的数据吗?
其实难点在于,第一次切换到fragment b中,已经实例化的时候,确实能得到共享的数据,当第二次切换到fragment b,点击的是其他的列表项,这时候我发现,这个fragment b已经被我隐藏了,并且是这样的:(已经初始化的fragment就不再初始化,只需要hide隐藏),但是隐藏了之后,这段获取数据的代码
String instrName = ((MainActivity)getActivity()).getInstrName();
应该放到哪里会执行呢?
我的要求是从fragment a一切换到fragment b中就要马上获取到共享的数据,并展现在fragment b的列表中?
解决方案其实是有的,以前activity在恢复显示的时候有一个方法就是监听显示是否完成,同样对于fragment也有类似的方法可以监听,如下:
@Override public void onHiddenChanged(boolean hidd) { if (hidd) {String instrName = ((MainActivity)getActivity()).getInstrName();System.out.println(当对冲界面重新恢复显示时候,得到从开仓单获取到的商品名称+instrName+***************++++++++++++*****);System.out.println(当对冲界面重新恢复显示时候,得到从开仓单获取到的商品名称+instrName+***************++++++++++++*****); } else { //相当于Fragment的onPause String instrName = ((MainActivity)getActivity()).getInstrName(); System.out.println(当对冲界面重新恢复显示时候,得到从开仓单获取到的商品名称+instrName+***************++++++++++++*****); } }这样在fragment隐藏或者显示的时候,都能够获取到共享的数据,注意点是第一次是需要new一个frament对象,这时候也要得到共享数据,只需要将代码写到oonCreateView中即可。
★ 小米格机方法