当前位置: 编程技术>移动开发
本页文章导读:
▪uitableview 增添uiview uitableview 添加uiview
[cell.contentView addSubView:subView];
......
▪ UIView转场成效 UIView转场效果
核心功能如代码所示,其他的请参考附件。
FlipTransView.h
#import <UIKit/UIKit.h>
#import <QuartzCore/QuartzCore.h>
#define PAGE_VERTICAL_WIDTH 320.0f
#define PAGE_VERTI.........
▪ 将第三方jar包封装进apk中 将第三方jar包打包进apk中
adt版本为20建立libs文件夹,把第三方jar包放在该文件夹中,想Android Dependencies类路径容器中添加jar包注意文件夹一定要是libs,否则不会出现Android Dependencies类路径.........
[1]uitableview 增添uiview
来源: 互联网 发布时间: 2014-02-18
uitableview 添加uiview
[cell.contentView addSubView:subView];
[cell.contentView addSubView:subView];
[2] UIView转场成效
来源: 互联网 发布时间: 2014-02-18
UIView转场效果
核心功能如代码所示,其他的请参考附件。
FlipTransView.h
#import <UIKit/UIKit.h>
#import <QuartzCore/QuartzCore.h>
#define PAGE_VERTICAL_WIDTH 320.0f
#define PAGE_VERTICAL_HEIGHT 480.0f
#define PAGE_HORIZONTAL_WIDTH 480.0f
#define PAGE_HORIZONTAL_HEIGHT 300.0f
@class FlipTransView;
@protocol FlipTransViewDelegate <NSObject>
@optional
- (void)FlipTransViewDidStart:(FlipTransView *)view;
- (void)FlipTransViewDidFinish:(FlipTransView *)view;
- (void)FlipTransViewDidCancel:(FlipTransView *)view;
@end
typedef enum {
LTOR = 0,
RTOL,
} TranDirection;
@interface FlipTransView : UIView {
id<FlipTransViewDelegate> m_pDelegate;
@private
CALayer *m_pTransformed;
UIView *m_pSubView;
UIView *m_pNewView;
BOOL m_bTransitioning;
BOOL m_bEnabled;
}
@property (nonatomic, retain) UIView *m_pSubView;
@property (assign) id<FlipTransViewDelegate> m_pDelegate;
@property (readonly, getter = isTransitioning) BOOL m_bTransitioning;
- (void)replaceSubviewInCube:(UIView *)aNewView direction:(TranDirection)aDirection duration:(float)aDuration;
- (void)replaceSubviewInCube:(UIView *)aNewView direction:(TranDirection)aDirection duration:(float)aDuration isMasked:(BOOL)aIsMasked;
@end
FlipTransView.m
#import "FlipTransView.h"
#define radians(degrees) degrees * M_PI / 180
#define CUBE_VERTICAL_WIDTH PAGE_VERTICAL_WIDTH
#define CUBE_VERTICAL_HEIGHT PAGE_VERTICAL_HEIGHT
#define CUBESIZE 320.0f
#define MASKALPHA 0.4f
#define kAnimationKey @"FlipTransViewAnimation"
@implementation FlipTransView
@synthesize m_pSubView;
@synthesize m_pDelegate;
@synthesize m_bTransitioning;
- (id)initWithFrame:(CGRect)frame {
if ((self = [super initWithFrame:frame])) {
m_pSubView = nil;
m_bTransitioning = NO;
self.backgroundColor = [UIColor clearColor];
}
return self;
}
- (void)addSubview:(UIView *)view {
if (view != nil) {
self.m_pSubView = view;
[super addSubview:view];
}
}
- (id) captureView:(UIView*)view {
UIGraphicsBeginImageContext(view.frame.size);
[view.layer renderInContext:UIGraphicsGetCurrentContext()];
CGContextSetShouldAntialias(UIGraphicsGetCurrentContext(), true);
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return (id) [newImage CGImage];
}
- (id) captureView:(UIView *)view isMasked:(BOOL)aIsMasked {
UIGraphicsBeginImageContext(view.frame.size);
[view.layer renderInContext:UIGraphicsGetCurrentContext()];
CGContextSetShouldAntialias(UIGraphicsGetCurrentContext(), true);
if (aIsMasked) {
CGContextSetRGBFillColor (UIGraphicsGetCurrentContext(), 0, 0, 0, MASKALPHA);
CGContextFillRect (UIGraphicsGetCurrentContext(), view.frame);
}
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return (id) [newImage CGImage];
}
- (CALayer*) makeSurface:(CATransform3D)t withView:(UIView *)aNewView isMasked:(BOOL)aIsMasked {
CGRect rect = CGRectMake(0, 0, CUBE_VERTICAL_WIDTH, CUBE_VERTICAL_HEIGHT);
CALayer *imageLayer = [CALayer layer];
imageLayer.anchorPoint = CGPointMake(1, 1);
imageLayer.frame = rect;
imageLayer.transform = t;
imageLayer.contents = [self captureView:aNewView isMasked:aIsMasked];
return imageLayer;
}
- (void)constuctRotateLayer:(UIView *)aNewView direction:(TranDirection)aDirection isMasked:(BOOL)aIsMasked {
//init transformed Layer
m_pTransformed = [CALayer layer];
m_pTransformed.frame = self.bounds;
m_pTransformed.anchorPoint = CGPointMake(0.5f, 0.5f);
CATransform3D sublayerTransform = CATransform3DIdentity;
/* Set perspective */
sublayerTransform.m34 = 1.0 / -1000;
[m_pTransformed setSublayerTransform:sublayerTransform];
[self.layer addSublayer:m_pTransformed];
//init Sublayers
CATransform3D t = CATransform3DMakeTranslation(0, 0, 0);
[m_pTransformed addSublayer:[self makeSurface:t withView:m_pSubView isMasked:aIsMasked]];
[m_pSubView setHidden:YES];
t = CATransform3DMakeTranslation(0, 0, 0);
t = CATransform3DTranslate(t, 320, 0, 0);
t = CATransform3DRotate(t, radians(90), 0, 1, 0);
CGRect rect = CGRectMake(0, 0, 40, 480);
CALayer *imageLayer = [CALayer layer];
imageLayer.anchorPoint = CGPointMake(0, 0);
imageLayer.frame = rect;
imageLayer.transform = t;
CGImageRef subimage=CGImageCreateWithImageInRect([UIImage imageNamed:@"green_bg_home.png"].CGImage, rect);
CGContextSetShouldAntialias(UIGraphicsGetCurrentContext(), true);
imageLayer.contents=(id)subimage;
CFRelease(subimage);
[m_pTransformed addSublayer:imageLayer];
t = CATransform3DMakeTranslation(0, 0, 0);
t = CATransform3DTranslate(t, 0, 0, -40);
t = CATransform3DRotate(t, radians(180), 0, 1, 0);
rect = CGRectMake(0, 0, 320, 480);
imageLayer = [CALayer layer];
imageLayer.anchorPoint = CGPointMake(0.5, 0.5);
imageLayer.frame = rect;
imageLayer.transform = t;
imageLayer.contents = [self captureView:aNewView isMasked:aIsMasked];
[m_pTransformed addSublayer:imageLayer];
}
- (void)destroyRotateLayer {
[m_pTransformed removeFromSuperlayer];
}
- (void)moveFrom:(TranDirection)aDirection duration:(float)aDuration {
[CATransaction flush];
CABasicAnimation *rotation;
CABasicAnimation *translationX;
CABasicAnimation *translationZ;
CAAnimationGroup *group = [CAAnimationGroup animation];
group.delegate = self;
group.duration = aDuration;
translationX = [CABasicAnimation animationWithKeyPath:@"sublayerTransform.translation.x"];
translationX.toValue = [NSNumber numberWithFloat:0.0];
rotation = [CABasicAnimation animationWithKeyPath:@"sublayerTransform.rotation.y"];
rotation.toValue = [NSNumber numberWithFloat:radians(-180)];
translationZ = [CABasicAnimation animationWithKeyPath:@"sublayerTransform.translation.z"];
translationZ.toValue = [NSNumber numberWithFloat:0.0];
group.animations = [NSArray arrayWithObjects: rotation, nil];
group.fillMode = kCAFillModeForwards;
group.removedOnCompletion = NO;
[m_pTransformed addAnimation:group forKey:kAnimationKey];
}
- (void)replaceSubviewInCube:(UIView *)aNewView direction:(TranDirection)aDirection duration:(float)aDuration {
[self replaceSubviewInCube:aNewView direction:aDirection duration:aDuration isMasked:NO];
}
- (void)replaceSubviewInCube:(UIView *)aNewView direction:(TranDirection)aDirection duration:(float)aDuration isMasked:(BOOL)aIsMasked {
// If a transition is in progress, do nothing
if(m_bTransitioning || aNewView == nil)
return;
//If there's a new view and it doesn't already have a superview, insert it where the old view was
if (m_pSubView == nil) {
[self addSubview:aNewView];
return;
}
if ([aNewView superview] != nil) {
[aNewView removeFromSuperview];
}
m_pNewView = aNewView;
[self constuctRotateLayer:aNewView direction:aDirection isMasked:NO];
[self moveFrom:aDirection duration:aDuration];
}
// Not used in this example, but may be useful in your own project
- (void)cancelTransition {
// Remove the animation -- cleanup performed in animationDidStop:finished:
[[self layer] removeAnimationForKey:kAnimationKey];
}
- (void)animationDidStart:(CAAnimation *)animation {
m_bTransitioning = YES;
[m_pSubView removeFromSuperview];
[m_pSubView setHidden:NO];
// Record the current value of userInteractionEnabled so it can be reset in animationDidStop:finished:
m_bEnabled = self.userInteractionEnabled;
// If user interaction is not already disabled, disable it for the duration of the animation
if (m_bEnabled) {
self.userInteractionEnabled = NO;
}
// Inform the delegate if the delegate implements the corresponding method
if(m_pDelegate != nil && [m_pDelegate respondsToSelector:@selector(FlipTransViewDidStart:)]) {
[m_pDelegate FlipTransViewDidStart:self];
}
}
- (void)animationDidStop:(CAAnimation *)animation finished:(BOOL)finished {
m_bTransitioning = NO;
[self addSubview:m_pNewView];
[self destroyRotateLayer];
m_pNewView = nil;
// Reset the original value of userInteractionEnabled
if (m_bEnabled) {
self.userInteractionEnabled = YES;
}
// Inform the delegate if it implements the corresponding method
if (finished) {
if (m_pDelegate != nil && [m_pDelegate respondsToSelector:@selector(FlipTransViewDidFinish:)]) {
[m_pDelegate FlipTransViewDidFinish:self];
}
} else {
if (m_pDelegate != nil && [m_pDelegate respondsToSelector:@selector(FlipTransViewDidCancel:)]) {
[m_pDelegate FlipTransViewDidCancel:self];
}
}
}
- (void)dealloc {
[m_pSubView release];
[super dealloc];
}
@end
示例图:
[3] 将第三方jar包封装进apk中
来源: 互联网 发布时间: 2014-02-18
将第三方jar包打包进apk中
adt版本为20
建立libs文件夹,把第三方jar包放在该文件夹中,想Android Dependencies类路径容器中添加jar包
注意文件夹一定要是libs,否则不会出现Android Dependencies类路径容器
adt版本为20
建立libs文件夹,把第三方jar包放在该文件夹中,想Android Dependencies类路径容器中添加jar包
注意文件夹一定要是libs,否则不会出现Android Dependencies类路径容器
最新技术文章: