当前位置: 首页 > news >正文

网站友情链接对方网站没有加入本站链接对本站有没有影响?长沙建设网站

网站友情链接对方网站没有加入本站链接对本站有没有影响?,长沙建设网站,蚌埠网络推广公司,南宁伯才网络怎么样1.四大基本组件 activity 安卓中的基本组件之一#xff0c;一个activity表示一个与用户进行交互的窗口。一般来说MainActivity就相当于Java项目中Main。 onCreate()方法#xff0c;相当于public static void main(String args[])#xff0c;照着写就完事了。 每个Activit…1.四大基本组件 activity 安卓中的基本组件之一一个activity表示一个与用户进行交互的窗口。一般来说MainActivity就相当于Java项目中Main。 onCreate()方法相当于public static void main(String args[])照着写就完事了。 每个Activity固定的开头 protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_second);} 注意每次从后台重新进入页面时Activity都会重新被调用一次也就是说onCreate()都会重新执行一遍。也就是说是新的代码。 onCreate()中不能拥有阻塞操作(死循环,socket.connectreadLine())每次进入Activity中必须保证onCreate中得代码能够一次性执行完这东西相当于初始化操作。 service Service是Android中实现程序后台运行的解决方案适用于执行不需要和 用户交互而且长期运行的任务运行在主线程。service并不是多线程这个要注意所以不能执行耗时的任务。service中如果要执行耗时的任务需要在service中新建一个线程。 //开始Service Intent intentnew Intent(this,MyService.class) //intent后面讲MyService是继承Service的自定义类 startService(intent);MyService内部执行过程:1.onCreate(),只用第一次start会调用 2.onStartCommand(变量忘了)每次start都会调用代码写在这里。 //结束 stopService(intent); MyService:直接执行onDestroyed里面的函数 2.View组件 用来绘制图像的画板相当于Swing中的Frame和JPanel合体版。View只是一个画板 view的一些基本方法 *boolean onKeyDown(int keyCode , KeyEventevent);用户在该组件上按下时触发的 *boolean onKeyLongPress(int keyCode ,keyEvent event);用户在该组件上长按时触发的 *boolean onkeyShorcut(int keyCode ,keyEvent event);当一个键盘快捷键事件发生时触发该方法 *boolean onkeyUp(int keyCode , keyEventevent);用户松开按键的时候触发的事件 *boolean onTouchEvent(MotionEvent event);用户在该组件上触发触摸屏时触发该方法 *boolean onTrackballEvent(MotionEventevent);用户在该组件商触发轨迹球时触发该方法 setContentView() setContentView()只能在Activity中的onCreate()中进行不能新建一条线程不然直接暴毙会启动不了。我也不知道是什么原因。反正不能新建线程create。 3.R类 android studio在编译时会自动生成一个R类。R类可以调用res文件夹下的所有资源一般是指res/layout 例如我在res/layout中定义了一个button组件他的id是button1 则可以通过如下代码获得组件,和Javascript很像 findViewById(R.id.button1) 4.前端 布局 布局方面和Web开发很像通过XML进行组件的布局只不过没有CSS的存在 5.多线程 Handler类 多线程中每隔线程的消息都需要发送到Handler类Handler集中处理。大概是这样 主线程和子线程 在一个Activity中能够更新UI的只有主线程(就是onCreate那个)其他人工新建的子线程都不能直接操作UI界面同时主线程是绝对不能出现阻塞操作例如在onCreate里面执行Thread.sleep()同步锁之类的都是绝对不会被允许的所以耗时的操作只能新建一条线程来实现。例如网络连接网络请求都要放在新建的子线程中去搞。setContentView只能在主线程中实现子线程中无法使用 通过Handler去操作主线程 子线程如果想要更新UI界面必须通过Handler向主线程发出请求然后更新UI。简单的来说Handler就是主线程和子线程的通信媒介使得子线程也能间接的执行更新UI的操作当然Handler也可以用于子线程之间 Android异步通信这是一份Handler消息传递机制的使用教程 - 简书 核心的handler类代码在handleMessage中执行更新UI的操作,具体查看上述链接 class mHandle extends Handler{Overridepublic void handleMessage(Message msg){//重写这部分代码用来更新UI} } 需要注意的是一条线程只能使用Handler一次也就是说每条线程只有一次通过Handler向主线程发起更新请求的机会如果要多次发出更新UI的线程建议在子线程里面再新建一条线程 6.绘画 安卓的绘画需要在View模块中进行。基本思路是在View里面新建一个线程Thread进行绘画的动作更新然后再View里面的surfaceCreated()中调用线程。 public void run(){draw(); }public void surfaceCreated(){new Thread(this).start; } 与Swing开发的区别在于这个View类相当于Frame和Panel的混合体。画的过程必须是新建线程不能再主线程中画。 SurfaceHolder可以视作是用来管理SurfaceView的接口 获得画布 myCanvasmySurfaceHolder.lockCanvas(); 图片重复或抖动的现象 canvas画图的基本原理应该是覆盖而不是清空。如果你的图片太小没办法覆盖整个屏幕的话此时如果你循环绘制同样的图片且每次绘制都偏移一点应该会出现重复或抖动的现象。 在飞机大作战中会出现抖动的现象如图  大概率是因为图片太小了没办法覆盖整个屏幕所以导致重叠。解决方法用canvas绘画前先清空之前的画布。或是找一个特别大的图片覆盖整个屏幕。 或是再绘画前先使用canvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR)来清空之前的画布 提供一个图片缩放的算法 SurfaceView的执行过程 1.进入程序调用surfaceCreated() 2.调用surfaceChanged(),改变屏幕的长和宽 3.推出程序例如点击home或返回或是直接刷新内存时都会调用surfaceDestroyed() Bitmap Bitmap用来加载图片相当于Java中的BufferImage方法都是类似的。 //声明图片的变量 private Bitmap imgae//获取图片 imageBitmapFactory.decodeResource(getResource(),R.drawable.image); 7.音视频MediaPlayer Android内置多媒体播放器MediaPlayer能够播放音视频。 不过要注意的是MediaPlayer是一个有限状态机所以要在合适的状态调用合适的方法否则会出现一堆的报错。有一种比较简单的粗暴但性能很低的调用方法时每次播放音视频前都实例化MediaPlayer一次在用start播放音视频。 示例 //初始化播放器 MediaPlayer playerMediaPlayer.create(this,R.raw.mymusic);//是否循环播放默认是不循环 player.setLooping(false);//播放音乐 player.start(); 这东西不能用在View SoundPool SoundPool一般是用来播放特效音乐的例如游戏当中的爆炸声子弹射击声音。之所以这样晚会是因为如果都用mediaPlayer播放会很卡mediaPlayer是一个文件接一个文件的播放的每次只能播放一个音乐而SoundPool在播放时会单独设置线程支持同时播放多个音乐。 使用步骤如下 1.初始化 8.网络开发 网络开发需要两部分程序(即两个project)一个服务器一个客户端。 服务器启动后不断的监听客户端以做出响应做出响应新建一条线程来处理响应防止监听中断。 socket网络上的搬运工 服务器和客户端通过socket进行信息的交互客户端通过socket发出信息服务器通过socket接收信息。scoket这个类就是一个搬运工。 socket中的端口port的作用是为了让服务器识别客户端每一个客户端都有一个单独的port这个port相当于一个ID。例如飞机大作战联网中用户A的port是1B的是2则在服务器要建立两个socket分别对应A和B 对于同一个端口多次建立连接时每次连接都是不同客户所以没连接一次要单独开一条请求线程处理请求这样就能实现Socket一对多的通信。 ServerSocket serverSocketnew ServerSocket(9999);//监听端口号9999int count0; while(true){count;Socket socketserverSocket.accept();System.out.println(第count个客户);new ServiceThread().start();//处理客户请求的多线程自己去实现 } 服务器 服务器是一个信号中转站用来实现不同的客户之间的信号交互或是服务器与用户的信号交互。服务器创建后时刻监听客户的请求根据用户的请求做出具体的响应。关闭的服务器与用户连接的逻辑代码建立在服务器内客户端中存在的永远都是请求而不是具体的处理逻辑。 BufferReader 网络中数据的交互需要通过bufferreader和bufferwriter处理流来进行IO操作 需要注意的是BufferReader中的readline()返回一个字符串而且只会返回一次返回后就没了这个其实和在控制台用BufferReader进行输入操作是一样的控制台中输入一次数据就是一次readline(),程序通过readline()把数据传到变量中下一次输入就是下一个readline()。在网络开发中也一样。一次请求数据发送端通过BufferWriter输出一个数据接收方用BufferReader的readline()接受数据据并读出。读完后就没了再次readline()直接为空。 使用readLine()后如果readLine()没有读到值不会输出null而是进入一个阻塞状态一致等待有东西输入就像在控制台那样这样就实现了服务器对客户端请求的时刻监听。 socket的连接一旦关闭后那么对应的InputStream会立刻变为空也就是说readLine()这时候读的肯定是空。socket重新连接时会先关闭再连接。 BufferReader innew BufferReader(new InputStreamReader(socket.getInputStream))//之后正常的用 in.readLine()就可以读数据了 PrintWriter PrintWriter用来输出数据可以理解为发射 PrintWriter writernew PrintWriter(new BufferWriter(new OutputWriter(socket.getOutputStreamWriter)))//之后用 writer.println()正常的输出就好 多线程 服务器对一个客户端的的监听是一条线程一个客户端对应一条线程别把两个客户放到同一个线程中这样耦合程度太高了 客户端对服务器的响应和请求也是一个线程这样实现数据传输和逻辑功能的解耦主线程从子线程中拿数据用就好。 无论是客户端请求连接还是处理连接或是服务器端监听客户端时刻响应连接都必须要使用多线程不然socket.connect()会报错 基本思想是在请求连接或是响应数据传送时都要使用多线程 以飞机大作战为例 服务器:监听玩家得得分情况和传送对手得分是一条单独得线程 客户端:建立连接需要一条请求连接线程             响应数据传送(传送己方得分接受对方得分)需要一条线程 服务器端 while(true){Socket socketSocketServer.accept()//等待客户端发起连接如果没接收到就一直等new ServiceThread().start();//开启服务线程 } 客户端 //连接线程 class ConnectThread extends Thread{public void run(){(1) 方法一 Socket socketnew Socket(IP 地址,端口号);//端口号相当于客户得ID随便取名(2) 方法二 Socket socketnew Socket();socket.connect(new InetSocketAddress(IP,端口),连接时间界限);//连接超过时间界限会报错} JSON的使用 1.客户端端 直接调用JSONObject就好这个JSONObject可以完全当成javascript里面的对象去弄就好。 //声明JSONObject JSONObject jsonObjectnew JSONObject();//给json中增加键值对或是改变json的键值对的值 jsonObject.put(key,value); 2.需要引入JSONObject的相关依赖 GitHub - joytom/json_all: java使用json所需要的全部jar包 这个JSONObject和Android自带的JSONObject可以看作是两个东西大部分地方一样但在细节层面上有所不同。 //其他类转为JSON jsonObejctJSONObject.fromObject(Object);//JSON的put方法只能引入键值对 jsonObject.put(key,value);//更改同一个key的value不能使用put方法只能先转化位Map再通过更改Map后再次转为Json //这里需要使用迭代器 MapString,Object mapnew HashMap(); for(IteratorString itjsonObject.keys();it.hasNext();){String keyit.next;switch(key){case key1:map.put(key,value1);break;case key2:map.put(key,value2);break;....default:}jsonObjectJSONObject.fromObject(map); } Socket和输出输出流的创建 个人建议请求连接和监听程序放在同一个.java文件(或是说同一个类)当中实现尽量避免出现需要使用socket传参。输出流和输入流的建立需要在connect后直接建立不然会暴毙会出现报错。报错的原因大概率是因为建立input和output是socket还是空所以没办法建立连接。所以使用socket时尽可能的保证socket.connect后直接创建输入流和输出流而且必须要先connect在创建输入和输出流不然会创建失败。这个说明输入输出流和connect如果在两条线程里面执行的话必须保证connect的结束后才会启动输入输出流的创建线程同时输入输出流用到的socket一定是已经connect的socket。 简单的来说创建输入输出流要保证如下的顺序 socket.connect(new InetSocketAddress(Ip,端口),5000)PrintWriter writernew PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream))); BufferedReader readernew BufferedReader(new InputStreamReader(socket.getInputStream()));建议先创建输出流再创建输入流养成良好的习惯 IP地址查询 1.局域网IP 再命令行中输入ipconfig即可显示出本机的局域网下的IP地址 以太网:有线局域网连接标准如果电脑不接网线这东西默认是什么都没有。里面的IP都是有线局域网下的IP例如192.168.xx.xx 无线局域网 wlan:wifi连接下本机的局域网IP只需要关注IPv4就好这个IPv4就是在当前wifi下你这台电脑的IP地址。一般情况下如果要实现同一个wifi下的网络通信客户端用这个IPv4去连接服务器。注意这里的IP是指服务器的IP。 2.公网的IP 在百度上面输入IP就可以查到本机的公网IP了。这个IP是全球唯一由运营商分配的你不用管也管不了。 部分内网可能有权限设置此时用内网的IP可能无法进行网络通信(例如校园网)。这时会出现android.system.ErrnoException: isConnected failed: EHOSTUNREACH (No route to host)错误。 解决方法:用手机开热点同时连接服务器和客户端 9.样式拼接 recycleview和listview
http://www.dnsts.com.cn/news/94788.html

相关文章:

  • 建站优化易下拉系统给酒吧做网站
  • 关于com的网站怎么样做推广
  • 房产网站的建设哪个网站建设
  • 建网站的流程和费用图片拼接在线制作
  • 网站建设和考核工作通知如何用jeecg建设网站
  • 企业网站怎么做产品图片轮播homezz wordpress
  • 搜索引擎网站优化推广郴州新网招聘官网
  • 帮做装修设计的网站请人做竞价网站的要求重点
  • 扬州网站建设要多少钱东莞保安公司排名前十
  • 建立网站目的手表网站 源码
  • 怎么做代理网站wordpress根目录没有.htaccess
  • 虚拟货币网站建设百度怎么发广告
  • 做垂直行业网站利润分析网站后端用什么语言
  • 免费软件下载网站网站开发需求预算
  • 藁城外贸网站建设网站 科技感
  • 学校网络建设情况说明百度seo优化教程
  • 广西住房与城乡建设厅网站首页鹤壁 网站建设
  • 手机网站免费制作网站常用软件
  • 甘肃网站建设专业品牌百度营稍
  • 网站域名已经被绑定做网站推广要注意什么
  • 2017网站设计vue2.0网站开发
  • pc网站开发获取位置wordpress后台页地址修改
  • 杭州网站设计予尚灵璧网站建设
  • 网络营销平台搭建方案网站北京南站属于哪个街道
  • 龙岩做网站的地方有哪些刷神马网站优化排名
  • 淮南定制网站建设公司wordpress移动端编辑器
  • 申请网站空间怎么做中小型企业网站开发
  • 苏州企业网站建wordpress原创培训主题
  • 百度云服务器做asp网站天津建筑工程公司有哪些
  • 云南省建设培训网站怎样设计网站模板