当前位置:  编程技术>移动开发
本页文章导读:
    ▪银屏的适配        屏幕的适配其实无论是国际化也好,还是屏幕的适配也好。对于Android来说,其实都是操作文件夹就行了 在进行屏幕的适配的时候,要遵循的命名规则如下: 例子: layout-320x240 解释: 1)大的数.........
    ▪ java调用百度mapAPI反解析经纬码返回地址信息        java调用百度地图API反解析经纬码返回地址信息import java.net.URL; import java.util.Map; import java.util.HashMap; import java.io.IOException; import java.io.InputStream; import java.net.URLConnection; import java.io.BufferedReader; imp.........
    ▪ 浅析objc的讯息机制       浅析objc的消息机制 学习ios的同学都知道ojbc一种runtime的语言,runtime表明函数的真正执行的时候来确定函数执行的。这样的好处就是我们能很灵活的设计我们的代码,也能在看似合法的情况.........

[1]银屏的适配
    来源: 互联网  发布时间: 2014-02-18
屏幕的适配

其实无论是国际化也好,还是屏幕的适配也好。对于Android来说,其实都是操作文件夹就行了

在进行屏幕的适配的时候,要遵循的命名规则如下:

例子: layout-320x240

解释:

1)大的数要放在前面 

2)所需要的布局文件可以从其他文件夹里面拷(因为如果新建一个的话,它会提示你该文件已经存在。其实也是可以的) 


演示的例子的截图:

480x320:



320x240







 


    
[2] java调用百度mapAPI反解析经纬码返回地址信息
    来源: 互联网  发布时间: 2014-02-18
java调用百度地图API反解析经纬码返回地址信息
import java.net.URL;
import java.util.Map;
import java.util.HashMap;
import java.io.IOException;
import java.io.InputStream;
import java.net.URLConnection;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import org.apache.commons.lang.StringUtils;

public class BaiduAPI {
	private static String ak = "5ef2641d89438a6e708db122820cf1d2";
    
    public static Map<String, String> testPost(String x, String y) throws IOException {
        URL url = new URL("http://api.map.baidu.com/geocoder?" + ak + "=您的密钥" + 
        		"&callback=renderReverse&location=" + x
                        + "," + y + "&output=json");
        URLConnection connection = url.openConnection();
        /**
         * 然后把连接设为输出模式。URLConnection通常作为输入来使用,比如下载一个Web页。
         * 通过把URLConnection设为输出,你可以把数据向你个Web页传送。下面是如何做:
         */
        connection.setDoOutput(true);
        OutputStreamWriter out = new OutputStreamWriter(connection
                .getOutputStream(), "utf-8");
//        remember to clean up
        out.flush();
        out.close();
//        一旦发送成功,用以下方法就可以得到服务器的回应:
        String res;
        InputStream l_urlStream;
        l_urlStream = connection.getInputStream();
        BufferedReader in = new BufferedReader(new InputStreamReader(
                l_urlStream,"UTF-8"));
        StringBuilder sb = new StringBuilder("");
        while ((res = in.readLine()) != null) {
            sb.append(res.trim());
        }
        String str = sb.toString();
        System.out.println(str);
        Map<String,String> map = null;
		if(StringUtils.isNotEmpty(str)) {
			int addStart = str.indexOf("formatted_address\":");
			int addEnd = str.indexOf("\",\"business");
			if(addStart > 0 && addEnd > 0) {
				String address = str.substring(addStart+20, addEnd);
				map = new HashMap<String,String>();
				map.put("address", address);
				return map;		
			}
		}
		
		return null;
		
    }
	
	public static void main(String[] args) throws IOException {
    	Map<String, String> json = BaiduAPI.testPost("29.542938", "114.064022");
        System.out.println("address :" + json.get("address"));
    }
}


    
[3] 浅析objc的讯息机制
    来源: 互联网  发布时间: 2014-02-18
浅析objc的消息机制

 学习ios的同学都知道ojbc一种runtime的语言,runtime表明函数的真正执行的时候来确定函数执行的。这样的好处就是我们能很灵活的设计我们的代码,也能在看似合法的情况下做一些非常有意思的事情,要了解ios的runtime,我们需要了解ios的类结构,ios所有的类的基类都是NSObject这个类,从这个类来分析ios的runtime机制。

下面我们在xcode 中打开 NSObject 的声明,为了简单明了,我省略了很多,类型和宏的声明。
NS_ROOT_CLASS
@interface NSObject <NSObject> {
    Class	isa;
}

+ (void)load;

+ (void)initialize;
- (id)init;

+ (id)new;
+ (id)allocWithZone:(NSZone *)zone;
+ (id)alloc;
- (void)dealloc;

- (void)finalize;

- (id)copy;
- (id)mutableCopy;

+ (id)copyWithZone:(NSZone *)zone NS_AUTOMATED_REFCOUNT_UNAVAILABLE;
+ (id)mutableCopyWithZone:(NSZone *)zone NS_AUTOMATED_REFCOUNT_UNAVAILABLE;

+ (Class)superclass;
+ (Class)class;
+ (BOOL)instancesRespondToSelector:(SEL)aSelector;
+ (BOOL)conformsToProtocol:(Protocol *)protocol;
- (IMP)methodForSelector:(SEL)aSelector;
+ (IMP)instanceMethodForSelector:(SEL)aSelector;
- (void)doesNotRecognizeSelector:(SEL)aSelector;

- (id)forwardingTargetForSelector:(SEL)aSelector NS_AVAILABLE(10_5, 2_0);
- (void)forwardInvocation:(NSInvocation *)anInvocation;
- (NSMethodSignature *)methodSignatureForSelector:(SEL)aSelector;

+ (NSMethodSignature *)instanceMethodSignatureForSelector:(SEL)aSelector;

- (BOOL)allowsWeakReference NS_UNAVAILABLE;
- (BOOL)retainWeakReference NS_UNAVAILABLE;

+ (NSString *)description;

+ (BOOL)isSubclassOfClass:(Class)aClass;

+ (BOOL)resolveClassMethod:(SEL)sel NS_AVAILABLE(10_5, 2_0);
+ (BOOL)resolveInstanceMethod:(SEL)sel NS_AVAILABLE(10_5, 2_0);

@end

 如您所见,NSObject的对象非常之简单,Class 类型的,我们再看Class 是什么:


#include <sys/types.h>      // for __DARWIN_NULL
#include <Availability.h>
#include <objc/objc-api.h>


typedef struct objc_class *Class;
typedef struct objc_object {
    Class isa;
} *id;


  ok,Class是一个 objc_class 的结构体的指针,现在我们只要了解objc_class的结构就好了。

typedef struct objc_method *Method;
typedef struct objc_ivar *Ivar;
typedef struct objc_category *Category;
typedef struct objc_property *objc_property_t;

struct objc_class {
    Class isa;

#if !__OBJC2__
    Class super_class                                        OBJC2_UNAVAILABLE;
    const char *name                                         OBJC2_UNAVAILABLE;
    long version                                             OBJC2_UNAVAILABLE;
    long info                                                OBJC2_UNAVAILABLE;
    long instance_size                                       OBJC2_UNAVAILABLE;
    struct objc_ivar_list *ivars                             OBJC2_UNAVAILABLE;
    struct objc_method_list **methodLists                    OBJC2_UNAVAILABLE;
    struct objc_cache *cache                                 OBJC2_UNAVAILABLE;
    struct objc_protocol_list *protocols                     OBJC2_UNAVAILABLE;
#endif

} OBJC2_UNAVAILABLE;

  现在明了了,super_class是其父类的指针,name是类名,version,info,instance_size是表明这个类的信息, ivars是这个类的变量列表,methodLists是函数列表,cache,是一个方法的list的cache,protocols当然是一个protocol的list。
    好了,我们对NSobject 类有了基本的了解了,

[aObjec performSelector:aSEL]; 当这行代码执行的时候,aObject 首先会去找cache,里头有没有对应函数,如果找不到,会去找methodLists 列表中是否含有对应的函数,如果再没有就会去找 super_class 中的cache,然后..... 继续这样的步骤.......

       所以我们现在了解了NSObject 对于消息的发送的基本的机制流程,后续我会介绍NSOject 我们在这个机制上能做的一些事情。












    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android提高之MediaPlayer播放网络音频的实现方法... iis7站长之家
▪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