当前位置: 代码迷 >> Iphone >> iSpectrum-用Java编纂iPhone程序 2
  详细解决方案

iSpectrum-用Java编纂iPhone程序 2

热度:56   发布时间:2016-04-25 06:20:18.0
iSpectrum-用Java编写iPhone程序 2

iSpectrum-用Java编写iPhone程序 1

?? ?官方提供的demo截图

?? ?先分析一下iSpectrum官方demo的框架

1 Launcher是程序入口,类似于main.m,实际上代码解构也差不多

?

	public void applicationDidFinishLaunching(UIApplication app)	{ 		UIWindow window = new UIWindow();		window.initWithFrame(UIScreen.mainScreen().bounds());		nav = new UINavigationController();				UIViewController ctr = new UIViewController();		ctr.init();		ctr.setTitle("Action sheet");		ctr.setView(new MainView(nav));				nav.initWithRootViewController(ctr);				window.addSubview(nav.view());		window.makeKeyAndVisible();	}

?2 看看mainview,没有delloc确实很爽,不过由于没有nib,所以只能用initWithFrame很原始的添加组件了。

?

public class MainView extends UIView {	/**	 * Fields	 */	private UIActionSheet actionSheet;	private UINavigationController nav;		/**	 * 	 * @param n		UINavigationController containing this view.	 */	public MainView(UINavigationController n){		super();		init();		nav = n;				/*		 * ActionSheet		 */		actionSheet = new UIActionSheet();		actionSheet.init();		actionSheet.setActionSheetStyle(UIActionSheetStyle.UIActionSheetStyleBlackOpaque);		actionSheet.setDelegate(new ActionSheetDelegate(this));		actionSheet.setTitle("How many items do you want to display ?");		actionSheet.addButtonWithTitle("Cancel");		actionSheet.setCancelButtonIndex(0);		actionSheet.dismissWithClickedButtonIndexAnimated(0, true);		actionSheet.addButtonWithTitle("One item");		actionSheet.addButtonWithTitle("Two items");		actionSheet.addButtonWithTitle("Three items");		actionSheet.addButtonWithTitle("Four items");				/*		 * Button		 * Being used to open the UIActionSheet.		 */		UIButton button = new UIButton(){			//@Override			public void controlEvent() {				// Display the UIActionSheet				actionSheet.showInView(this.superview());			}		};		button.initWithFrame(CGRect.CGRectMake(85, 30, 150, 31));		button.setBackgroundImageForState(UIImage.imageNamed("buttonBackground.tiff"), 0);		button.setTitleForState("Create view", 0);		button.setTitleColorForState(UIColor.blackColor(), 0);		button.addTargetActionForControlEvents(UIControlEvents.UIControlEventTouchUpInside);		addSubview(button);	}		/**	 * 	 * @return	nav		Current UINavigationController.	 */	public UINavigationController getNavigationController(){		return nav;	}}

?3 同样也有delegation类

?

public class ActionSheetDelegate extends UIActionSheetDelegate {	/**	 * Field	 */	private MainView view;		/**	 * 	 * @param v		MainView that create this object.	 */	public ActionSheetDelegate(MainView v){		super();		init();		view = v;	}		/**	 * Method called by system when user select a button on action sheet.	 * @param actionSheet		ActionSheet calling this method.	 * @param buttonIndex		Index of selected button.	 * 	 */	//@Override	public void actionSheetClickedButtonAtIndex(UIActionSheet actionSheet,			int buttonIndex) {		if(buttonIndex == 0){			// Click on "cancel" button			return;		}		else {			UIView newView = new UIView().init();						// Add to the new UIView as many subviews as user wants.			for(int i=1; i<=buttonIndex; i++){				UIImageView imageView = new UIImageView();				imageView.initWithFrame(CGRect.CGRectMake(i*40, 100, 30, 30));				imageView.setImage(UIImage.imageNamed("img"+i+".tiff"));				newView.addSubview(imageView);			}						UIViewController viewController = new UIViewController().init();			if(buttonIndex == 1)				viewController.setTitle(buttonIndex + " added item");			else				viewController.setTitle(buttonIndex + " added items");			viewController.setView(newView);						// Push this new view into UINavigationController stack.			view.getNavigationController().pushViewControllerAnimated(viewController, false);		}	}	}

?? ? 从简单的demo中似乎看不到有用java的必要,因为完全无法用到java中很多功能和开源的代码,而且受到插件开发者的限制。

  相关解决方案