首页 文章 精选 留言 我的

精选列表

搜索[网站开发],共10000篇文章
优秀的个人博客,低调大师

Android开发之:在对话框中使用进度条

秘籍中说道:ProgressDialog进度条的功能是在对话框中实现显示进度条效果。 练习1:练习ProgressDialog的基本使用方法 第1步:编写布局文件main.xml,用于在界面中插入两个Button按钮。 第2步:编写文件strings.xml,用于设置标题文本。 第3步:编写文件Activity01.java,实现单击Button按钮后的事件处理程序。其具体实现流程如下: (1)声明进度条对话框m_pDialog; (2)得到按钮对象mButton01和mButton02; (3)设置mButton01的事件监听,首先创建ProgressDialog对象,然后设置进度条风格,风格为圆形、旋转的,最后分别设置ProgressDialog标题、提示信息、图标等信息; (4)设置mButton02的事件监听,首先创建ProgressDialog对象,然后设置进度条风格,风格为长形,最后分别设置ProgressDialog 标题、提示信息、图标等信息; (5)使ProgressDialog显示出来。 文件Activity01.java的主要实现代码如下所示: 程序执行后的效果如图6-1所示。 当单击图6-1中的“圆形进度条”按钮后,将显示圆形的进度条效果,如图6-2所示;当单击图6-1中的“长形进度条”按钮后,将显示长形的进度条效果,如图6-3所示。 ▲图书封面 本文转自 wws5201985 51CTO博客,原文链接:http://blog.51cto.com/wws5201985/751289,如需转载请自行联系原作者

优秀的个人博客,低调大师

libgdx游戏引擎开发笔记(三)Libgdx的游戏组件部分

今天,再次总结一下,让我们更加清楚的了解到libgdx这款游戏引擎的框架。 1.Libgdx中游戏组件使用的简单关系说明: 组件 介绍 AndroidApplication Activity的子类,只有启动类继承了AndroidApplication并执行才能启动Libgdx类库 ApplicationListener 仅可在初始化时注入ApplicationListener,此后除非替换Activity否则无法切换ApplicationListener Game 是ApplicationListener的libgdx抽象实现,其中Screen可切换 Screen 基本函数与ApplicationListener近乎一致,唯一差别在于可以通过Game类用setScreen函数进行切换,如不使用Game类则可无视它的存在 Stage 游戏场景用类,用以管理添加其中的具体Actor,管理Actor的手段在于内置的Group类 Actor 游戏用演员或者说角色,与Action类组合使用时可以产生不同种类的“动画行为”,Action部分的具体实现基本与Cocos2D一致 Group 本身为Actor的具体实现,能够处理注入其中的Actor,也能以递归方式管理注入其中的其它Group Image、Button、Label等 细分Actor的具体实现,以重载方式响应事件,除Group外相互间不能组合叠加,事件能否传递取决于上级组件是否设置了相关监听 我们再来张图关系就更顺了!嘿嘿! 2.注意事项 1、Libgdx使用笛卡尔坐标系(初始坐标为左下0,0),而JavaSE、JavaME以及标准Android系统(还有LGame引擎)使用的是屏幕坐标系(初始坐标为左上0,0),程序员在使用时必须分清差别,以免不知道如何定位(通常笛卡尔系Y轴由下向上延伸,屏幕系Y轴由上向下延伸)。 2、在Android环境使用Libgdx的Gdx.files.internal方法时(即FileHandle类以FileType.Internal模式工作),要读取的文件必须置于Assets文件夹下才能读取,在Linux、Mac、Windows环境下则可以置于除jar内部外的任何可读取位置。 3、Libgdx以native方式自带图像解码器,通过其提供的Pixmap可以对指定图像进行像素级渲染操作,从而不依赖Android的Bitmap加载处理图像,不过目前只支持png、jpg、bmp三种图片格式。 4、Libgdx要求在游戏中使用的图片宽与高皆为2的整数次幂,否则会产生一个Gdx异常并禁止加载行为(texture width and height must be powers of two)。 5、Libgdx以ApplicationListener作为游戏的基础界面容器,但Libgdx并没有提供可以直接切换ApplicationListener的函数。目前最新版本的Libgdx中提供了Game类(ApplicationListener子类,本身为抽象类)和一个供Game类调用的Screen类用以解决此问题。具体的Libgdx切换游戏画面方法是,先用继承Game类的游戏窗体进行initialize让基础画面显示,再让具体的细分游戏模块继承Screen类进行不同游戏画面的具体绘图,而后Game类通过setScreen方法进行画面切换。 6、Libgdx的图像加载处理(以及部分渲染),音频播放和自带的Box2D封装皆通过JNI方式实现,因此必须在libs文件夹下添加armeabi(或高版本Android系统支持的armeabi-v7a)文件夹以及相关so文件Android版Libgdx才能正常运行。 ok!就这些了啦,本人刚开始接触游戏引擎,有什么不对的地方,谢谢指正! 参考博客:http://blog.csdn.net/cping1982/article/details/6176191 本文转自zhf651555765 51CTO博客,原文链接:http://blog.51cto.com/smallwoniu/1255187,如需转载请自行联系原作者

优秀的个人博客,低调大师

Android Ap 开发 设计模式第九篇:桥接模式

Bridge Pattern 模式解读 bridge 是“桥梁”的意思。就像现实社会里的桥梁担负着连接两岸的重大责任一样,Bridge Pattern也是负责连接2个不同位置的参与者。 桥接模式沟通着“功能的类层次”和“实现的类层次”。将“功能的类层次”和“实现的类层次”分成2个独立的类层次可能会弄得支离破碎,所以必须在2个类层次之间建一座沟通的桥梁。 程序示例 按照上面的分法,本例可以分为4个类按照“功能的类层次”和“实现的类层次”分开,分别为: 功能的类层次 Display 该类为打印内容的类 CountDisplay 该类不仅可以打印内容还可以参数指定打印次数 实现的类层次 DisplayImpl 该类为抽象类,抽象出打印内容所需要的功能 StringDisplayImpl 该类实现了DisplayImpl 所抽象出来的功能 按照如上划分,制作出了UML图,如下: 功能的类层次:Display 类,代码: public class Display{ private DisplayImplimpl; public Display(DisplayImplimpl){ this .impl = impl; } public Stringopen(){ return impl.rawOpen(); } public Stringprint(){ return impl.rawPrint(); } public Stringclose(){ return impl.rawClose(); } public finalStringdisplay(){ open(); Stringtext = print(); close(); return text; } } 该类通过参数将DisplayImpl传进来,直接让Display 有DisplayImpl的功能。该功能也是Builder Pattern 的模式。位于“功能的类层次”最上层的类,利用接口参与者的方法只记载基本功能的类。这个对象实例是保持住接口参与者。该类为扮演这个参与者的类。 功能的类层次:CountDisplay类 ,代码: public class CountDisplayextendsDisplay{ public CountDisplay(DisplayImplimpl){ super(impl); // TODOAuto-generatedconstructorstub } public StringmultiDisplay( int times){ StringBuffersb = new StringBuffer(); sb.append(open() + " \n " ); for ( int i = 0 ;i < times;i ++ ){ sb.append(print() + " \n " ); } return sb.append(close()).toString(); } } 该类系Display 的子类,并且再添加一个可按照次数循环打印的方法。对抽象参与者新增功能的参与者(改良后的抽象化),该类扮演在这个DEMO中扮演着这个角色。 实现的类层次:DisplayImpl 类,代码: public abstract class DisplayImpl{ public abstract StringrawOpen(); public abstract StringrawPrint(); public abstract StringrawClose(); } 该类位于实现的类层次的最上层,分别抽象了rawOpen、rawPrint、rawClose三个方法,这三个方法分别对应到Display 类的open、print、close方法,执行前处理、打印和后处理。规定要实现的抽象参与者的接口 。 实现的类层次:StringDisplayImpl 类,代码: public class StringDisplayImplextendsDisplayImpl{ private String string ; public StringDisplayImpl(Stringstr){ this . string = str; } @Override public StringrawClose(){ // TODOAuto-generatedmethodstub return printLine(); } @Override public StringrawOpen(){ // TODOAuto-generatedmethodstub return printLine(); } @Override public StringrawPrint(){ // TODOAuto-generatedmethodstub return " | " + string + " | " ; } private StringprintLine(){ StringBuffersb = new StringBuffer(); sb.append( " + " ); for ( int i = 0 ;i < string .length();i ++ ){ sb.append( " - " ); } return sb.append( " + " ).toString(); } } 该类实现了DisplayImpl的三个抽象方法,本例中唯一一处实现功能的也是由本类完成。具体实现接口 参与者的接口 。 界面入口:BridgePatternActivity 类,代码: public class BridgePatternActivityextendsActivity{ /* *Calledwhentheactivityisfirstcreated. */ @Override public void onCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.main); ((Button)findViewById(R.id.Button01)).setOnClickListener( new OnClickListener(){ @Override public void onClick(Viewv){ // TODOAuto-generatedmethodstub Displaydisplay = new Display( new StringDisplayImpl( " terry_龙 " )); CountDisplaymCountDisplay = new CountDisplay( new StringDisplayImpl( " terry " )); ((EditText)findViewById(R.id.EditText01)).setText(display.print()); ((EditText)findViewById(R.id.EditText02)).setText(mCountDisplay.multiDisplay( 5 )); } }); } } 运行结果: 代码下载: 桥接模式 本文转自 terry_龙 51CTO博客,原文链接:http://blog.51cto.com/terryblog/624082,如需转载请自行联系原作者

优秀的个人博客,低调大师

Android开发学习:向模拟器的sdcard中添加文件

向模拟器的sdcard中添加文件有两种方法: 1.在eclipse的DDMS视图中操作 启动eclipse---打开DDMS视图---选择File Explorer,出现下面的窗口 选中sdcard文件夹---点击,选择你需要添加的文件就可以了 2.运用adb命令操作 先将要添加的文件放到platform-tools(我的platform-tools路径 D:\Android\android-sdk-windows\platform-tools)文件夹下,之后在命令行窗口进入 D:\Android\android-sdk-windows\platform-tools,输入adb命令添加文件,如下图所示: 这时,文件music.mp3就被添加到sdcard/Android目录下面 之后可以在模拟器中打开dev tools,运行Media Scanner,在音乐中播放添加的音乐 还可以在命令行运行adb shell来查看sdcard中的文件,如下图所示: 向模拟器的sdcard中添加文件常见的错误: 1.Failed to push items null 解决的方法:首先重启eclipse,如果重启之后再出现这个问题,那就要修改超时数,依次展开eclipse---windwos---Preferences---Android---DDMS---ADB connection time out (ms),将参数改得大一些,如下图所示: 2.Failed to push selection: Invalid argument 原因:android不支持中文名称的文件 3.Failed to push XXXXX.txt(添加的文件) on emulator- : Read-only file system 解决的方法:在启动模拟器的时候带着的参数中,模拟器镜像路径需是绝对路径:-sdcard E:\android\android-sdk-windows\tools\sdcard.img注意这个绝对路径里面不能带空格(如Program Files)注意:(卷标、标签)必须是sdcard。如mksdcard -l sdcard128Me:\haogood.image(而不能是mksdcard -l haogood128Me:\haogood.image) 本文转自 lingdududu 51CTO博客,原文链接:http://blog.51cto.com/liangruijun/673776

优秀的个人博客,低调大师

Android GIS开发系列-- 入门季(4) GraphicsLayer的点击查询要素

上一讲中我们学会了如何在MapView中添加Graphic要素,那么在百度或高德地图中,当我们点击要素时,会显示出相应的详细信息。在GraphicsLayer中也提供了这样的方法。下面我们来学习在GraphicsLayer中如何点击查找要素。首先在MapView中添加两个Graphic要素。代码如下,注意这里用Graphic(Geometrygeometry,Symbolsymbol, Map<String,Object> attributes)来实例化Graphic,Map<String,Object> attributes是要素的属性值。详细见以下代码。TILED_WORLD_STREETS_URL为网络图层地址。 privatevoidinitLayer(){ mapView.addLayer(newArcGISTiledMapServiceLayer( TILED_WORLD_STREETS_URL)); graphicsLayer=newGraphicsLayer(); mapView.addLayer(graphicsLayer); Polygonpolygon=newPolygon(); polygon.startPath(newPoint(1.2575908509778766E7,2879410.9266042486)); polygon.lineTo(newPoint(1.284360696117901E7,3021972.232083669)); polygon.lineTo(newPoint(1.2826182801620414E7,2713089.403544925)); Map<String,Object>attr1=newHashMap<>(); attr1.put("name","广州"); attr1.put("mark","广州是南方的城市"); Graphicgraphic1=newGraphic(polygon,newSimpleFillSymbol(Color.RED),attr1); graphicsLayer.addGraphic(graphic1); Polygonpolygon2=newPolygon(); polygon2.startPath(newPoint(1.3388507951011453E7,3611225.628065273)); polygon2.lineTo(newPoint(1.3607101952746565E7,3858331.890896268)); polygon2.lineTo(newPoint(1.3613438010767872E7,3449656.14852193)); Map<String,Object>attr2=newHashMap<>(); attr2.put("name","上海"); attr2.put("mark","上海是中部的城市"); Graphicgraphic2=newGraphic(polygon2,newSimpleFillSymbol(Color.GREEN),attr2); graphicsLayer.addGraphic(graphic2); } 效果图如下: 准备工作完成后,设置MapView的点击事件, mapView.setOnSingleTapListener(newOnSingleTapListener(){ @Override publicvoidonSingleTap(floatx,floaty){ //TODOAuto-generatedmethodstub handleSingleTap(x,y); } }); 在handleSingleTap方法中来处理查询事件,GraphicsLayer查询要用到getGraphicIDs(float x, float y, int tolerance, int numberOfResults)或者getGraphicIDs(float x, float y, int tolerance)方法,前面两个参数是地图点击时的 x与y的值,tolerance是围绕x与y这个点所查询的范围,numberOfResults是要返回结果的大小。 /** *GraphicsLayer的点击查询 *@paramx *@paramy */ protectedvoidhandleSingleTap(floatx,floaty){ int[]graphicIds=graphicsLayer.getGraphicIDs(x,y,8); if(graphicIds!=null&&graphicIds.length>0){ for(inti=0;i<graphicIds.length;i++){ Graphicgraphic=graphicsLayer.getGraphic(graphicIds[i]); Map<String,Object>attr=graphic.getAttributes(); Log.i(TAG,attr.get("name")+"===="+attr.get("mark")); } } }这样当我们点击要素时,会打出以下的信息。 没有整理与归纳的知识,一文不值!高度概括与梳理的知识,才是自己真正的知识与技能。 永远不要让自己的自由、好奇、充满创造力的想法被现实的框架所束缚,让创造力自由成长吧! 多花时间,关心他(她)人,正如别人所关心你的。理想的腾飞与实现,没有别人的支持与帮助,是万万不能的。 本文转自wenglabs博客园博客,原文链接:http://www.cnblogs.com/arxive/p/7751872.html ,如需转载请自行联系原作者

优秀的个人博客,低调大师

Android GIS开发系列-- 入门季(3) GraphicsLayer添加点、线、面

GraphicsLayer是图形图层,可以自定义图形添加到地图上。调用GraphicsLayer的addGraphic方法就能添加图形,此方法要一个Graphic对象,此对象的构造方法是Graphic(Geometrygeometry,Symbolsymbol),前面第一个是要素,而Geometry的子类有Envelope,MultiPath,MultiPoint,Point,Segment,Line,Polygon,Polyline。我们所常用的有点Point,线Polyline,面Polygon。而后面一 个参数是样式,点的样式是SimpleMarkerSymbol,线的样式是SimpleLineSymbol,面的样式是SimpleFillSymbol。 一、GraphicsLayer添加点: Graphicgraphic=newGraphic(point,newSimpleMarkerSymbol(Color.RED,5,SimpleMarkerSymbol.STYLE.CIRCLE)); graphicsLayer.addGraphic(graphic); 二、添加线,样式有实线、虚线、点虚线、点点虚线、点线等。效果图如下: Polylinepolyline=newPolyline(); polyline.startPath(newPoint(113,23));//第一个点用startPath,后面的点用lineTo方法 polyline.lineTo(newPoint(123,23)); graphic=newGraphic(polyline,newSimpleLineSymbol(Color.RED,3,SimpleLineSymbol.STYLE.SOLID)); graphicsLayer.addGraphic(graphic); 三、添加面Polygon,效果图如下: Polygonpolygon=newPolygon(); //第一个点startPath,后面的点用lineTo polygon.startPath(newPoint(118,23)); polygon.lineTo(newPoint(118,15)); polygon.lineTo(newPoint(113,13)); graphic=newGraphic(polygon,newSimpleFillSymbol(Color.GREEN,SimpleFillSymbol.STYLE.SOLID)); graphicsLayer.addGraphic(graphic); Code for all: packagecom.arcgis.test; importandroid.graphics.Color; importandroid.os.Bundle; importandroid.support.annotation.Nullable; importandroid.support.v7.app.AppCompatActivity; importandroid.view.View; importandroid.widget.AdapterView; importandroid.widget.Button; importandroid.widget.Spinner; importcom.esri.android.map.GraphicsLayer; importcom.esri.android.map.MapView; importcom.esri.android.map.ags.ArcGISTiledMapServiceLayer; importcom.esri.android.map.event.OnSingleTapListener; importcom.esri.core.geometry.Point; importcom.esri.core.geometry.Polygon; importcom.esri.core.geometry.Polyline; importcom.esri.core.map.Graphic; importcom.esri.core.symbol.SimpleFillSymbol; importcom.esri.core.symbol.SimpleLineSymbol; importcom.esri.core.symbol.SimpleMarkerSymbol; importjava.util.ArrayList; importjava.util.List; publicclassGraphicActivityextendsAppCompatActivity{ privateMapViewmMapView; privateSpinnergraphicTypeSpinner; privateButtonclernBtn; privateArcGISTiledMapServiceLayerarcGISTiledMapServiceLayer; privateGraphicsLayergraphicsLayer; privateStringmapServerUrl="http://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer"; //点集合 privateList<Point>pointList=newArrayList<>(); privateGraphicgraphic; @Override protectedvoidonCreate(@NullableBundlesavedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_graphic); initView(); addLayer(); } privatevoidinitView(){ mMapView=(MapView)findViewById(R.id.map_view); //mapview点击事件 mMapView.setOnSingleTapListener(newOnSingleTapListener(){ @Override publicvoidonSingleTap(floatx,floaty){ handleSingleTap(x,y); } }); graphicTypeSpinner=(Spinner)findViewById(R.id.spinner_type); graphicTypeSpinner.setOnItemSelectedListener(newAdapterView.OnItemSelectedListener(){ @Override publicvoidonItemSelected(AdapterView<?>parent,Viewview,intposition,longid){ pointList.removeAll(pointList); graphicsLayer.removeAll(); } @Override publicvoidonNothingSelected(AdapterView<?>parent){ } }); clernBtn=(Button)findViewById(R.id.clear_graphic); clernBtn.setOnClickListener(newView.OnClickListener(){ @Override publicvoidonClick(Viewv){ pointList.removeAll(pointList); graphicsLayer.removeAll(); } }); } privatevoidaddLayer(){ arcGISTiledMapServiceLayer=newArcGISTiledMapServiceLayer(mapServerUrl); mMapView.addLayer(arcGISTiledMapServiceLayer); graphicsLayer=newGraphicsLayer(); mMapView.addLayer(graphicsLayer); } privatevoidhandleSingleTap(floatx,floaty){ Pointpoint=mMapView.toMapPoint(x,y); graphicsLayer.removeAll(); pointList.add(point); Stringtype=graphicTypeSpinner.getSelectedItem().toString().trim(); switch(type){ case"点": graphic=newGraphic(point,newSimpleMarkerSymbol(Color.RED,5,SimpleMarkerSymbol.STYLE.CIRCLE)); graphicsLayer.addGraphic(graphic); break; case"线": Polylinepolyline=newPolyline(); if(pointList.size()>1){ for(inti=0;i<pointList.size();i++){ if(i==0){ polyline.startPath(pointList.get(i)); }else{ polyline.lineTo(pointList.get(i)); } } } graphic=newGraphic(polyline,newSimpleLineSymbol(Color.RED,3,SimpleLineSymbol.STYLE.SOLID)); graphicsLayer.addGraphic(graphic); break; case"面": Polygonpolygon=newPolygon(); for(inti=0;i<pointList.size();i++){ if(i==0){ polygon.startPath(pointList.get(i)); }else{ polygon.lineTo(pointList.get(i)); } } graphic=newGraphic(polygon,newSimpleFillSymbol(Color.GREEN,SimpleFillSymbol.STYLE.SOLID)); graphicsLayer.addGraphic(graphic); break; } } } 没有整理与归纳的知识,一文不值!高度概括与梳理的知识,才是自己真正的知识与技能。 永远不要让自己的自由、好奇、充满创造力的想法被现实的框架所束缚,让创造力自由成长吧! 多花时间,关心他(她)人,正如别人所关心你的。理想的腾飞与实现,没有别人的支持与帮助,是万万不能的。 本文转自wenglabs博客园博客,原文链接:http://www.cnblogs.com/arxive/p/7751859.html ,如需转载请自行联系原作者

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册