当前位置:  编程技术>移动开发
本页文章导读:
    ▪观察者模式Observable与Observer的使用(单指拖放)        观察者模式Observable与Observer的运用(单指拖放)       在Java中通过Observable类和Observer接口实现了观察者模式。一个Observer对象监视着一个Observable对象的变化,当Observable对象发生变化时.........
    ▪ XCode中批改缺省公司名称/开发人员名称        XCode中修改缺省公司名称/开发人员名称 1.  XCode新建文件后,头部会有开发人员名称,公司名称等信息//  Created by Richard Clarke on 11-6-7.  //  Copyright Surna Hongkong Limited 2011. All rights reserved. 要.........
    ▪ Frame Animation 疑问,知道的请帮忙解答下,多谢! Talking Tom       Frame Animation 疑问,知道的请帮忙解答下,谢谢! Talking Tom 有木有人研究过Android版本的Talking Tom实现? 现在有个问题很是疑惑,请大家知道的帮忙解答。 Frame Animation 大部分都是通过 ImageView.s.........

[1]观察者模式Observable与Observer的使用(单指拖放)
    来源: 互联网  发布时间: 2014-02-18
观察者模式Observable与Observer的运用(单指拖放)
      在Java中通过Observable类和Observer接口实现了观察者模式。一个Observer对象监视着一个Observable对象的变化,当Observable对象发生变化时,Observer得到通知,就可以进行相应的工作。例如在文档/视图结构中,文档被修改了,视图就会得到通知。

      java.util.Observable中有两个方法对Observer特别重要,一个是setChange()方法用来设置一个内部标志位注明数据发生了变化;一个是notifyObservers()方法会去调用一个列表中所有的Observer的update()方法,通知它们数据发生了变化。
      Observer通过Observable的addObserver()方法把自己添加到这个列表中。这个列表虽然由Observable拥有,但Observable并不知道到底有哪些Observer正在观察等待通知。Observable只提供一个方法让Observer能把自己添加进列表,并保证会去通知Observer发生了变化。通过这种机制,可以有任意多个Observer对Observable进行观察,而不影响Observable的实现。

一个简单例子:
import java.util.Observable;
 
public class SimpleObservable extends Observable
{
   private int data = 0;
 
   public int getData(){
       return data;
   }
 
   public void setData(int i){
       if(this.data != i){ 
         this.data = i;
          setChange();
       }
          notifyObservers();
         //只有在setChange()被调用后,notifyObservers()才会去调用update(),否则什么都不干。
       }
   }
}


import java.util.Observable;
import java.util.Observer;
 
public class SimpleObserver implements Observer
{
   public SimpleObserver(SimpleObservable so){
      so.addObserver(this );
   }
 
   public void update(Observable o,Object arg/*任意对象,用于传递参数*/){
      System.out.println(“Data has changed to” + (SimpleObservable)o.getData());
   }
}
 
public class SimpleTest
{
   public static void main(String[] args){
      SimpleObservable doc = new SimpleObservable ();
      SimpleObserver view = new SimpleObserver (doc);
      doc.setData(1);
      doc.setData(2);
      doc.setData(2);
      doc.setData(3);
   }
}


Data has changed to 1
Data has changed to 2  //第二次setData(2)时由于没有setChange,所以update没被调用
Data has changed to 3

      Observable类有两个私有变量。一个boolean型的标志位,setChange()将它设为真,只有它为真时,notifyObservers方法才会调用Observer的update方法,clearChange()设标志位为假,hasChange返回当前标志位的值。另一个是一个Vector,保存着一个所有要通知的Observer列表,addObserver添加Observer到列表,deleteObserver从列表中删除指定Observer,deleteObservers清空列表,countObservers返回列表中Observer的数目,在Observer对象销毁前一定要用deleteObserver将其从列表中删除,不然因为还存在对象引用的关系,Observer对象不会被垃圾收集,造成内存泄漏,并且已死的Observer仍会被通知到,有可能造成意料外的错误,而且随着列表越来越大,notifyObservers操作也会越来越慢。  
      Observable的所有方法都是同步的,保证了在一个线程对其标志位、列表进行操作时,不会有其它线程也在操作它。
      Observable的notifyObservers(Object obj)形式可以再调用update时将参数传进去。
通知顺序通常时越晚加入列表的越先通知。update会被依次调用,由于一个update返回后下一个update才被调用,这样当update中有大量操作时,最好将其中的工作拿到另一个线程或者Observer本身同时也是一个Thread类,Observer先挂起,在update中被唤醒,这样会有一个隐患,Observer线程还没来得及挂起,update就被调用了,通知消息就这样被错过了,一种解决办法是在Observer中实现一个同步的队列结构,并有一个类来封装参数,update实现一个参数类的对象把接收到的通知消息的参数封装在里面,然后把其加进队列,run方法从队列中移除参数对象,并进行处理,这保证了没有通知信息被丢失。
    在多线程时,只有Observer会与单线程不同,Observable不需任何改变来支持多线程,因为它又很多作为单独线程运作的Observer。
http://blog.csdn.net/zhouyongyang621/archive/2010/07/20/5750702.aspx
    Observable是一个类而不是一个接口这限制了它的使用,一个解决的办法是在一个Observable类中把我们的类包装进去(把我们的类实例当作Observable的域),因为Observable中的setChange是一个protected方法,我们没法在外面调用它。所以没法在我们的类中包装一个Observable,但是如果我们的类中同样也有protected方法,那这个办法就无法使用。

ContentObserver类详解:
http://blog.csdn.net/qinjuning/article/details/7047607

下面2个工程是Observable与Observer的经典运用,是android实现的单指拖动放大图片的操作。听说出自索爱。
1 楼 ycsomewhere 2011-07-29  
收益匪浅,谢谢大神分享
2 楼 qiyuanmei_241 2011-10-14  
第二个还么第一个功能多呢啊

    
[2] XCode中批改缺省公司名称/开发人员名称
    来源: 互联网  发布时间: 2014-02-18
XCode中修改缺省公司名称/开发人员名称

1.  XCode新建文件后,头部会有开发人员名称,公司名称等信息


//  Created by Richard Clarke on 11-6-7. 

//  Copyright Surna Hongkong Limited 2011. All rights reserved.



要修改这两个名称可通过在terminal中运行以下命令:

defaults write com.apple.Xcode PBXCustomTemplateMacroDefinitions'{"ORGANIZATIONNAME" = "My Company";}'

defaults write com.apple.Xcode ORGANIZATIONNAME "My Company"

 

defaults write com.apple.Xcode FULLUSERNAME "your name"

defaults write com.apple.Xcode PBXCustomTemplateMacroDefinitions'{FULLUSERNAME = "your name" ; }'

 

使用defaults write com.apple.Xcode ... 其实是在修改~/Library/Preferences/com.apple.Xcode.plist

 

2. Xcode3.2开始,右击项目->Get Info->General里面可以为每个项目设置Organization Name


    
[3] Frame Animation 疑问,知道的请帮忙解答下,多谢! Talking Tom
    来源: 互联网  发布时间: 2014-02-18
Frame Animation 疑问,知道的请帮忙解答下,谢谢! Talking Tom

有木有人研究过Android版本的Talking Tom实现?

现在有个问题很是疑惑,请大家知道的帮忙解答。

Frame Animation 大部分都是通过 ImageView.setBackgroundResource(R.anim.myframeanimation); 实现

res/anim/myframeanimation.xml
<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android" androidneshot="false"> 
<item android:drawable="@drawable/rkof" android:duration="200" />
<item android:drawable="@drawable/qkof" android:duration="200" />
</animation-list>

 

这里的图片文件都是放在 res/drawable 目录下,通过XML可以直接取到,


但是Talking Tom的所有表情动作图片都是放在 assest/animations 目录下,请问有谁知道怎么取到这里的图片?


我想肯定是通过代码去取的?那Frame Animation通过代码怎么实现呢?


或者还是通过什么其他的方式能在res/anim/myframeanimation.xml里取到assets/animations目录下的图片呢?

请高人指点,谢谢!

 


    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3