cc191954 2022-10-19T00:41:50+00:00 kejinlu@gmail.com androidAnnotations使用 2014-05-23T00:00:00+00:00 cc191954 http://cc191954.github.io//2014/05/androidAnnotations使用 发现了一个好玩又好用的库androidannotations

用处:简化代码,减少累赘的 findViewByIdsetViewContentsetOnClickListen。简单方便的线程模型。

@EActivity(R.layout.translate) // Sets content view to R.layout.translate
public class TranslateActivity extends Activity {

	@ViewById // Injects R.id.textInput
	EditText textInput;

	@ViewById(R.id.myTextView) // Injects R.id.myTextView
	TextView result;

	@AnimationRes // Injects android.R.anim.fade_in
	Animation fadeIn;

	@Click // When R.id.doTranslate button is clicked 
	void doTranslate() {
		translateInBackground(textInput.getText().toString());
	}

	@Background // Executed in a background thread
	void translateInBackground(String textToTranslate) {
		String translatedText = callGoogleTranslate(textToTranslate);
		showResult(translatedText);
	}

	@UiThread // Executed in the ui thread
	void showResult(String translatedText) {
		result.setText(translatedText);
		result.startAnimation(fadeIn);
	}

	// [...]
}

原理:生成了子类TranslateActivity_,所以AndroidManifest.xml文件里面要写成android:name="com.my.temp3.app.MainActivity_"

使用:我是在Android Studio里面集成,照着这个blog的做法,分分钟集成完毕。用中文总结一下就是:

1.在app/build.gradle添加下面的代码,并sync

buildscript {
	repositories {
		mavenCentral()
	}
	dependencies {
		classpath 'com.neenbedankt.gradle.plugins:android-apt:1.2+'
	}
}

apply plugin: 'android'
apply plugin: 'android-apt'

android {
	compileSdkVersion 19
		buildToolsVersion "19.0.1"

		defaultConfig {
			minSdkVersion 8
				targetSdkVersion 19
				versionCode 1
				versionName "1.0"
		}
	buildTypes {
		release {
			runProguard false
				proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
		}
	}
}

apt {
	arguments {
		androidManifestFile variant.processResources.manifestFile
			resourcePackageName "com.example.package.name"
	}
}

dependencies {
	apt "org.androidannotations:androidannotations:3.0+"
		compile "org.androidannotations:androidannotations-api:3.0+"
		compile 'com.android.support:appcompat-v7:+'
		compile fileTree(dir: 'libs', include: ['*.jar'])
}

2.修改AndroidManifest.xml

<activity
    android:name=".MainActivity_"  // 原来的Activity类加上下划线
    android:label="@string/app_name" >
    <intent-filter>
	<action android:name="android.intent.action.MAIN" />
	<category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>
]]>
Android Studio 理解 2014-05-23T00:00:00+00:00 cc191954 http://cc191954.github.io//2014/05/AndroidStudio理解 使用Android Studio也做了一个项目了,从eclipse转过来基本没费什么事,没遇到什么大问题,小问题google都能解决。一直没管Gradle是什么东西,今天决定花点时间了解一下。 C/C++编译的时候一般是用make管理的,Gradle就是Java的make,之前Java用的似乎是Maven,但是是用xml描述的,写出来都是一大坨一大坨的,相比之下,Gradle简洁明了了很多很多。 这篇文章写得非常明了:用Gradle 构建你的android程序

]]>
无奈 2014-05-22T00:00:00+00:00 cc191954 http://cc191954.github.io//2014/05/无奈 “曾经以为自己是风,风吹草到,现在我明白自己只是草,稍有风起就倒。” 觉得自己与众不同,比别人有上进心,愿意看远一点。觉得上班就是浪费生命,觉得自己是个不错的程序员,觉得自己能走一条与众不同的路。 又时而觉得自己能力一般,都毕业六年了,除了有老婆,其它的一事无成。考研没考上,英语没学好,编程水平也不见得比毕业两年的时候高到哪去。 不辞职根本就不学习,辞职了吧学的又慢腾腾的,5个月才发布了两个软件,效率实在不高,半年时间就做了两个软件。 最困难的时光过去后,后面的可能就比较轻松了吧。现在大概就是最困难的时光吧,还能比现在差吗? 当初不辞职就是好的吗?浪费生命是拿不拿工资为标准来评判的吗?整天在那里无所事事,上班就看着钟想着什么时候下班是我想过的生活吗? 那现在呢?每天忧心忡忡以后怎么办,觉得自己的软件没有销量怎么办? 办法是人想出来的,实在没有办法,接下国内的外包呗!国外赚不到钱,国内总可以吧? 接活最重要的不是自己的技术,是自己的客户资源。

]]>
xcode上调适配 2014-02-13T00:00:00+00:00 cc191954 http://cc191954.github.io//2014/02/xcode上调适配 一直都直接用iphone5s调试,今天试了下模拟器的3.5寸屏幕,发现界面不行,心中窃喜,ios你个小样也有适配的问题吧。 从网上搜资料看看怎么解决适配问题,一看真觉得心中是万马奔腾,拖拖拽拽几下,什么相对位置绝对位置都是分分钟钟搞定,还有现场预览功能。 android,你的Android Studio啥时候能出到1.0,eclipse真心比不上xcode,想起以前为了兼容那些个破分辩率,用代码调控件位置的时光,那真的是虚度光阴好不好,俺们程序员写代码是来改变世界的,不是搞民工的。

]]>
ios的惯用法 2014-02-11T00:00:00+00:00 cc191954 http://cc191954.github.io//2014/02/ios的惯用法 ios的常量推荐写法有两种,一种是用宏定义。

// Constants.h
#define kRoot @"kRoot"
#define gMax (12)

一种是用类

// Constants.h
extern NSString * const kRoot;

// Constants.m
NSString * const kRoot = @"kRoot";
]]>
自问自答总结ios编程学习 2014-01-29T00:00:00+00:00 cc191954 http://cc191954.github.io//2014/01/自问自答总结ios编程学习 1.xcode与eclipse操作最不同的地方在于哪里? xcode里面拖拖拽拽是一种很有效的编程方式,可以减少很多代码量,eclipse里面代码最好都用手工敲。

2.页面以什么为单位? ios里面,Nav是顶层容器,里面存放着UIViewController,UIViewController里面存放UIView。 android里面,FragmentActivity是顶层容器,里面存放Fragment,Fragment里面存放View。

3.ios程序和android程序在设计思想上最大的不同是什么? ios里面一个程序就是一个程序,android里面只有一个任务的概念,一个任务可能由多个进程组成。 最简单的例子就是写一个邮箱程序,从这个程序里面选取一封有照片的邮件,然后查看照片,ios必须由程序员自己完成查看照片的功能,android上则可以发出打开照片的请求,然后系统列出可以打开照片的程序,由用户选择用哪个程序打开照片,用户看完照片后可以按后退再回到邮箱程序里来。

]]>
ios各组件的生命周期 2013-12-13T00:00:00+00:00 cc191954 http://cc191954.github.io//2013/12/ios各组件的生命周期 Android入门最基本的就是Activity的生命周期,现在学习ios,自然也想看看ios组件的生命周期。 Android的Application在ios中对应对象可以说就是AppDelegate。

@interface ZoeAppDelegate : UIResponder <UIApplicationDelegate>

我用根据Log总结出了

程序启动

application
viewDidLoad
viewWillAppear
applicationDidBecomeActive
viewDidAppear

进入任务管理器

applicationWillResignActive

打开其它程序

applicationDidEnterBackground

再次进入程序

applicationWillEnterForeground
applicationDidBecomeActive

对于AppDelegate来说,第一次打开是

application
applicationDidBecomeActive

再次打开是

applicationWillEnterForeground
applicationDidBecomeActive
]]>
Android和ios的一些比较 2013-12-12T00:00:00+00:00 cc191954 http://cc191954.github.io//2013/12/andorid和ios的比较 一个xib文件里面可以放多个UIViewController,而每个UIViewController可以成为主UIViewController的一个property,这样就省去了主动创建的麻烦。 android里面的做法是在FragmentActivity的xml描述里面包含Fragment。

ios的方式对开发者更加友好,它可以实现一个.m文件对应多个xib,而且不用写代码,直接使用可视化的方式查看,.m文件只管纯粹的逻辑,是mvc里面的c,xib文件负责外观,是mvc里面的v。 android就麻烦一些,要达到同样地效果,必须要写代码,得由FragmentActivity传值给Fragment,fragment再setContentView,完全没有ios在xib里面拖拖拽拽方便和直观。

]]>
做一个真正的产品 2013-11-07T00:00:00+00:00 cc191954 http://cc191954.github.io//2013/11/做一个真正的产品 “活动日历”这个应用没有ios客户端,正好自己想做一个有人用的app,所以就决定是它了。 首先,整体使用抽屉式设计,先在github上找了一下,选了一个支持ios7的开源库。 先安装CocoaPods。 然后照着文档[https://github.com/mutualmobile/MMDrawerController]一步一步来。

]]>
系统的开始学习ios 2013-10-22T00:00:00+00:00 cc191954 http://cc191954.github.io//2013/10/系统学习IOS 去年年底去香港的时候买了mac mini,当时就打算要学ios开发,也装了xcode,结果一直当成是看片的工具了。6月份的时候一激动,买了ios开发者账号,还看了一点objective-c的语法和几集斯坦福公开课,学了一点拖拖拽拽后又半途而废了。俗话说事不过三,这次可一定要坚持到底,毕竟就技术上来说,ios的开发比android开发好搞多了,没那一堆大小不一的屏幕要适配,也不用搞什么仿ios风格这种恶心的脏活,薪水也要高一点。这次学习下来,至少要达到能找份ios工作的水平。要成为传说中的多面手。 工欲善其事,必先利其器。mac,开发者账号,ipad都有了,就只差教材。本来打算直接看英文的,都下好了《ios6 programming cookbook》《programming ios6》,结果发现我这渣英文水平还远不到能用英文版教材入门的水平,决定还是先搞本中文书看看,系统地补下基本常识。同事推荐的是 《精通ios开发(第5版)》,看了下觉得还行,就决定是它啦。

这本书讲的很细很入门,所以也不用看得很细,一些控件的使用,写程序用到的时候再回头看就是了。目前的主要的目标是1周之内把它大致看完,并做一个简单的在线看漫画程序(ipad)。

做出来之后就买个iphone5s,自己奖励自己:-)。

]]>