当前位置:  编程技术>移动开发
本页文章导读:
    ▪台历的简单示例        日历的简单示例 - (IBAction)showDefault:(id)sender { UICCalendarPicker *calendarPicker = [[UICCalendarPicker alloc] initWithSize:UICCalendarPickerSizeSmall]; [calendarPicker setDelegate:self]; [calendarPicker showInView:self.view animated:YES.........
    ▪ uiscrollView 平添图片 滑动        uiscrollView 添加图片 滑动 headerImageScrollView = [[UIScrollView alloc]initWithFrame:CGRectMake(0,0, 320, 260)]; scrollView.contentSize = CGSizeMake(900, 960); [self.view addSubview:scrollView]; // image = [[UIImageView alloc]init.........
    ▪ Netty 之Oio程序编纂       Netty 之Oio程序编写      今日将android里面使用的socket 方式改成Oio,因为之前使用的是Netty框架,所以直接将Nio替换成Oio,然后修改了一些其他的代码。     为了维护的方便我定义了一个Base.........

[1]台历的简单示例
    来源: 互联网  发布时间: 2014-02-18
日历的简单示例
- (IBAction)showDefault:(id)sender {
	UICCalendarPicker *calendarPicker = [[UICCalendarPicker alloc] initWithSize:UICCalendarPickerSizeSmall];
	[calendarPicker setDelegate:self];
	[calendarPicker showInView:self.view animated:YES];
	[calendarPicker release];
}

- (IBAction)showMultiSelection:(id)sender {
	UICCalendarPicker *calendarPicker = [[UICCalendarPicker alloc] initWithSize:UICCalendarPickerSizeMedium];
	[calendarPicker setDelegate:self];
	[calendarPicker setSelectionMode:UICCalendarPickerSelectionModeMultiSelection];
	[calendarPicker showInView:self.view animated:YES];
	[calendarPicker release];
}

- (IBAction)showRangeSelection:(id)sender {
	UICCalendarPicker *calendarPicker = [[UICCalendarPicker alloc] initWithSize:UICCalendarPickerSizeLarge];
	[calendarPicker setDelegate:self];
	[calendarPicker setSelectionMode:UICCalendarPickerSelectionModeRangeSelection];
	[calendarPicker showInView:self.view animated:YES];
	[calendarPicker release];
}

- (IBAction)showLastMonthPresent:(id)sender {
	UICCalendarPicker *calendarPicker = [[UICCalendarPicker alloc] initWithSize:UICCalendarPickerSizeExtraLarge];
	[calendarPicker setDelegate:self];
	[calendarPicker setSelectionMode:UICCalendarPickerSelectionModeMultiSelection];
	[calendarPicker setPageDate:[NSDate dateWithTimeIntervalSinceNow:-1 * (60 * 60 * 24 * 30)]];
	[calendarPicker showInView:self.view animated:YES];
	[calendarPicker release];
}

- (IBAction)showWeekRangeActive:(id)sender {
	UICCalendarPicker *calendarPicker = [[UICCalendarPicker alloc] init];
	[calendarPicker setDelegate:self];
	[calendarPicker setSelectionMode:UICCalendarPickerSelectionModeMultiSelection];
	[calendarPicker setMinDate:[NSDate date]];
	[calendarPicker setMaxDate:[NSDate dateWithTimeIntervalSinceNow:60 * 60 * 24 * 7]];
	[calendarPicker showInView:self.view animated:YES];
	[calendarPicker release];
}

- (IBAction)showMonthRangeActive:(id)sender {
	UICCalendarPicker *calendarPicker = [[UICCalendarPicker alloc] init];
	[calendarPicker setDelegate:self];
	[calendarPicker setSelectionMode:UICCalendarPickerSelectionModeRangeSelection];
	[calendarPicker setMinDate:[NSDate date]];
	[calendarPicker setMaxDate:[NSDate dateWithTimeIntervalSinceNow:60 * 60 * 24 * 30]];
	[calendarPicker showInView:self.view animated:YES];
	[calendarPicker release];
}

- (IBAction)showRangeActiveFromNow:(id)sender {
	UICCalendarPicker *calendarPicker = [[UICCalendarPicker alloc] init];
	[calendarPicker setDelegate:self];
	[calendarPicker setSelectionMode:UICCalendarPickerSelectionModeRangeSelection];
	[calendarPicker setMinDate:[NSDate date]];
	[calendarPicker showInView:self.view animated:YES];
	[calendarPicker release];
}

- (IBAction)showRangeActiveToNow:(id)sender {
	UICCalendarPicker *calendarPicker = [[UICCalendarPicker alloc] init];
	[calendarPicker setDelegate:self];
	[calendarPicker setSelectionMode:UICCalendarPickerSelectionModeRangeSelection];
	[calendarPicker setMaxDate:[NSDate date]];
	[calendarPicker showInView:self.view animated:YES];
	[calendarPicker release];
}

- (IBAction)showDateSelected:(id)sender {
	UICCalendarPicker *calendarPicker = [[UICCalendarPicker alloc] init];
	[calendarPicker setDelegate:self];
	[calendarPicker setSelectionMode:UICCalendarPickerSelectionModeMultiSelection];
	[calendarPicker addSelectedDate:[NSDate date]];
	[calendarPicker addSelectedDate:[NSDate dateWithTimeIntervalSinceNow:60 * 60 * 24 *2]];
	[calendarPicker showInView:self.view animated:YES];
	[calendarPicker release];
}

- (IBAction)showDateCustom:(id)sender {
	UICCalendarPicker *calendarPicker = [[UICCalendarPicker alloc] initWithSize:UICCalendarPickerSizeMedium];
	[calendarPicker setDelegate:self];
	[calendarPicker setDataSource:self];
	[calendarPicker setTitleText:[NSString stringWithUTF8String:"日历"]];
	[calendarPicker setWeekText:[NSArray arrayWithObjects:
								 [NSString stringWithUTF8String:"日"], [NSString stringWithUTF8String:"一"], [NSString stringWithUTF8String:"二"], 
								 [NSString stringWithUTF8String:"三"], [NSString stringWithUTF8String:"四"], [NSString stringWithUTF8String:"五"], 
								 [NSString stringWithUTF8String:"六"], nil]];
	[calendarPicker setSelectionMode:UICCalendarPickerSelectionModeMultiSelection];
	[calendarPicker addSelectedDate:[NSDate date]];
	[calendarPicker addSelectedDate:[NSDate dateWithTimeIntervalSinceNow:60 * 60 * 24 * 2]];
	CGRect frame = calendarButton.frame;
	[calendarPicker showAtPoint:CGPointMake(frame.origin.x + frame.size.width, frame.origin.y + frame.size.height) inView:self.view animated:YES];
	[calendarPicker release];
}

 

核心功能请参考附件。

 

示例图:



    
[2] uiscrollView 平添图片 滑动
    来源: 互联网  发布时间: 2014-02-18
uiscrollView 添加图片 滑动
    headerImageScrollView = [[UIScrollView alloc]initWithFrame:CGRectMake(0,0, 320, 260)];
  scrollView.contentSize = CGSizeMake(900, 960);
    [self.view addSubview:scrollView];
//    image = [[UIImageView alloc]initWithFrame:CGRectMake(5, 5, 80, 80)];
//    [image setImage:[UIImage imageNamed:@"0.jpg"]];
//    [self.scrollView addSubview:image];
//    image = [[UIImageView alloc]initWithFrame:CGRectMake(85, 5, 80, 80)];
//    [image setImage:[UIImage imageNamed:@"0.jpg"]];
//    [self.scrollView addSubview:image];
    int k=0;
    for(int i=0;i<100;i++){
        if(i!=0 && i%5==0){
            k++;
            NSLog(@"%d",i);
        }
            image = [[UIImageView alloc]initWithFrame:CGRectMake(80*(i%5), 80*k, 80, 80)];
            [image setImage:[UIImage imageNamed:@"0.jpg"]];
            [self.scrollView addSubview:image];
    }


    
[3] Netty 之Oio程序编纂
    来源: 互联网  发布时间: 2014-02-18
Netty 之Oio程序编写

     今日将android里面使用的socket 方式改成Oio,因为之前使用的是Netty框架,所以直接将Nio替换成Oio,然后修改了一些其他的代码。

    为了维护的方便我定义了一个BaseClient,用来处理停止socket线程。

    

public abstract class BaseClient {
    protected Channel m_channel;
    protected String m_tag;

    public BaseClient(String tag) {
        m_tag = tag;
    }

    public Channel getChannel() {
        return m_channel;
    }

    public void stop(boolean releaseResOnly) {
        this.stopInThread(releaseResOnly);
    }

    protected void createBootstrap() {
        System.setProperty("java.net.preferIPv4Stack", "true");
        System.setProperty("java.net.preferIPv6Addresses", "false");
    }

    protected void stopInThread(Bootstrap bootstrap, boolean releaseResOnly) {
        try {
            final Bootstrap bs = bootstrap;
            final Channel ch = m_channel;
            final boolean resOnly = releaseResOnly;

            m_channel = null;

            Thread t = new Thread(new Runnable() {
                public void run() {
                    try {
                        if (!resOnly) {
                            if (ch != null) {
                                ch.getCloseFuture().addListener(new ChannelFutureListener() {
                                    @Override
                                    public void operationComplete(ChannelFuture cf) throws Exception {
                                        if (bs != null) {
                                            final Bootstrap bs2 = bs;
                                            new Thread(new Runnable() {
                                                public void run() {
                                                    try {
                                                        System.out.println(m_tag
                                                                + "--- netty ch.close and releaseExtraRes-1");
                                                        bs2.releaseExternalResources();
                                                        System.out.println(m_tag
                                                                + "--- netty ch.close and releaseExtraRes-1 done");
                                                    } catch (Throwable th) {
                                                    }
                                                }
                                            }).start();
                                        }
                                    }
                                });
                                ch.close();
                            }
                        } else {
                            if (bs != null) {
                                try {
                                    System.out.println(m_tag + "--- netty releaseExtraRes-2");
                                    bs.releaseExternalResources();
                                    System.out.println(m_tag + "--- netty releaseExtraRes-2 done");
                                } catch (Throwable th) {
                                }
                            }
                        }

                    } catch (Exception ee) {
                        ee.printStackTrace();
                    }
                }
            });
            t.start();

        } catch (Exception e) {
            e.printStackTrace();
        }

    }//stopInThread()

    protected abstract void stopInThread(boolean releaseResOnly);

 

   CxClient继承了BaseClient,增加了一些关于不同的错误编码,方便在日志中查看

 

public class CxClient extends BaseClient {

    private ClientBootstrap m_bootstrap;
    private CxListener m_listener;
    private final Timer timer;

    public CxClient(String tag) {
        super(tag);
        timer = new HashedWheelTimer();
    }

    @Override
    protected void createBootstrap() {
        super.createBootstrap();

        m_bootstrap = new ClientBootstrap(new OioClientSocketChannelFactory(Executors.newCachedThreadPool()));
        final CxClient client = this;
        m_bootstrap.setPipelineFactory(new ChannelPipelineFactory() {
            @Override
            public ChannelPipeline getPipeline() throws Exception {
                ChannelPipeline pip = Channels.pipeline();

                pip.addLast("timeout", new ReadTimeoutHandler(timer, 300));
                pip.addLast("decoder", new CxDecoder());
                pip.addLast("handler", new CxHandler(m_listener, client));

                return pip;
            }
        });
        m_bootstrap.setOption("tcpNoDelay", true);
        m_bootstrap.setOption("keepAlive", true);
        m_bootstrap.setOption("reuseAddress", true);
        m_bootstrap.setOption("connectTimeoutMillis", "7000");
    }

    public void start(String host, int port, CxListener li) {

        try {
            m_listener = li;
            createBootstrap();
            System.out.println("CxClient::start() Connecting... " + host + ":" + port);
            ChannelFuture f = m_bootstrap.connect(new InetSocketAddress(host, port));

            f.addListener(new ChannelFutureListener() {
                @Override
                public void operationComplete(ChannelFuture cf) throws Exception {
                    if (m_listener != null) {
                        if (cf.isSuccess()) {
                            m_channel = cf.getChannel();
                            m_listener.connected();
                        } else {
                            Throwable th = cf.getCause();
                            System.out.println("CxClient::start() A 1");
                            int errorCode = CxnetConstants.UNKNOWN_EXCEPTION;
                            if (th != null) {
                                Class<?> c = th.getClass();
                                if (c == java.net.BindException.class)
                                    errorCode = CxnetConstants.BIND_EXCEPTION;
                                else if (c == java.net.ConnectException.class)
                                    errorCode = CxnetConstants.CONNECT_EXCEPTION;
                                else if (c == java.net.MalformedURLException.class)
                                    errorCode = CxnetConstants.MAILFORMEDURL_EXCEPTION;
                                else if (c == java.net.NoRouteToHostException.class)
                                    errorCode = CxnetConstants.NOROUTETOHOST_EXCEPTION;
                                else if (c == java.net.PortUnreachableException.class)
                                    errorCode = CxnetConstants.PORTUNREACHABLE_EXCEPTION;
                                else if (c == java.net.ProtocolException.class)
                                    errorCode = CxnetConstants.PROTOCOL_EXCEPTION;
                                else if (c == java.net.SocketException.class)
                                    errorCode = CxnetConstants.SOCKET_EXCEPTION;
                                else if (c == java.net.SocketTimeoutException.class)
                                    errorCode = CxnetConstants.SOCKETTIMEOUT_EXCEPTION;
                                else if (c == java.net.UnknownHostException.class)
                                    errorCode = CxnetConstants.UNKNOWNHOST_EXCEPTION;
                                else if (c == java.net.UnknownServiceException.class)
                                    errorCode = CxnetConstants.UNKNOWNSERVICE_EXCEPTION;
                                else if (c == java.net.URISyntaxException.class)
                                    errorCode = CxnetConstants.URISYNTAX_EXCEPTION;
                                th.printStackTrace();
                                System.out.println("CxClient::start() A 2 errCode=" + errorCode);
                            }
                            m_listener.disconnected(errorCode);
                        }
                    }
                }
            });
        } catch (Exception e) {
            System.out.println("CxClient::start() excep B 1");
            e.printStackTrace();
            System.out.println("CxClient::start() excep B 2");
            m_listener.disconnected(CxnetConstants.UNKNOWN_EXCEPTION);
        }

    }//start()

    @Override
    protected void stopInThread(boolean releaseResOnly) {
        final Bootstrap bs = m_bootstrap;
        m_bootstrap = null;
        super.stopInThread(bs, releaseResOnly);
    }

}//end cls - CxClient

 


    
最新技术文章:
▪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实用的代码片段 常用代码总结
oracle iis7站长之家
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


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

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

浙ICP备11055608号-3