当前位置: 编程技术>移动开发
本页文章导读:
▪台历的简单示例 日历的简单示例
- (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
最新技术文章: