怎么学习安卓黑马android安卓56期手机软件开发

一起学android之如何获取手机程序列表以及程序相关信息并启动指定程序
启动程序,获取程序信息:
代码如下:
创建一个AppInfo类来表示应用程序
public class AppInfo { public CharS// 程序名 public CharSequence packageN // 程序包名 I// 启动Intent public D// 程序图标 /* * 设置启动该程序的Intent */ final void setActivity(ComponentName className, int launchFlags) { intent = new Intent(Intent.ACTION_MAIN); intent.addCategory(Intent.CATEGORY_LAUNCHER); intent.setComponent(className); intent.setFlags(launchFlags); } }
创建程序列表的适配器:
* 程序列表适配器
* @author bill
public class ShowAppListAdapter extends BaseAdapter {
private ArrayList appL
private LayoutI
public ShowAppListAdapter(Context context,ArrayList appList,
PackageManager pm) {
this.appList = appL
inflater = LayoutInflater.from(context);
public int getCount() {
return appList.size();
public Object getItem(int position) {
return appList.get(position);
public long getItemId(int position) {
public View getView(int position, View convertView, ViewGroup parent) {
final AppInfo info = appList.get(position);
ViewHolder holder =
if(null == convertView){
convertView = inflater.inflate(R.layout.app_list_item, null);
holder = new ViewHolder();
holder.lv_image = (ImageView) convertView.findViewById(R.id.lv_icon);
holder.lv_name = (TextView) convertView.findViewById(R.id.lv_item_appname);
holder.lv_packname = (TextView) convertView.findViewById(R.id.lv_item_packageame);
convertView.setTag(holder);
holder = (ViewHolder) convertView.getTag();
holder.lv_image.setImageDrawable(info.icon);
final CharSequence name = info.
final CharSequence packName = info.packageN
holder.lv_name.setText(name);
holder.lv_packname.setText(packName);
return convertV
private final static
class ViewHolder{
ImageView lv_
TextView lv_
TextView lv_
public class MainActivity extends Activity {
* 应用程序集合
private ArrayList appI
private ListView lv_
* 管理应用程序包,并通过它获取程序信息
private PackageM
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.app_list);
pm = getPackageManager();
initView();
new Thread(runable).start();
private void initView(){
lv_app = (ListView) findViewById(R.id.app_list_view);
lv_app.setOnItemClickListener(new AppDetailLinster());
private final Runnable runable = new Runnable() {
public void run() {
loadApplications();
myHandler.obtainMessage().sendToTarget();
private Handler myHandler = new Handler() {
public void handleMessage(Message msg) {
lv_app.setAdapter(new ShowAppListAdapter(MainActivity.this,
appInfos, pm));
* 加载应用列表
private void loadApplications() {
PackageManager manager = this.getPackageManager();
Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);
final List apps = manager.queryIntentActivities(
mainIntent, 0);
Collections.sort(apps, new ResolveInfo.DisplayNameComparator(manager));
if (apps != null) {
final int count = apps.size();
if (appInfos == null) {
appInfos = new ArrayList(count);
appInfos.clear();
for (int i = 0; i & i++) {
AppInfo application = new AppInfo();
ResolveInfo info = apps.get(i);
application.title = info.loadLabel(manager);
application.setActivity(new ComponentName(
info.activityInfo.applicationInfo.packageName,
info.activityInfo.name), Intent.FLAG_ACTIVITY_NEW_TASK
| Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
application.icon = info.activityInfo.loadIcon(manager);
application.packageName = info.activityInfo.applicationInfo.packageN
appInfos.add(application);
* 列表监听类
* @author bill
public final class AppDetailLinster implements OnItemClickListener {
public void onItemClick(AdapterView view, View arg1,
final int position, long arg3) {
AlertDialog.Builder builder = new AlertDialog.Builder(
MainActivity.this);
builder.setTitle(选项);
builder.setItems(R.array.choice, new OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
final AppInfo appInfo = appInfos.get(position);
switch (which) {
case 0: // 启动程序
startApp(appInfo);
} catch (Exception e) {
case 1: // 详细信息
showAppDetail(appInfo);
} catch (Exception e) {
dialog.dismiss();
private void showAppDetail(AppInfo appInfo)
throws Exception {
final String packName = appInfo.packageName.toString();
final PackageInfo packInfo = getAppPackinfo(packName);
final String versionName = packInfo.versionN
final String[] apppremissions = packInfo.requestedP
final String appName = appInfo.title.toString();
Intent showDetailIntent = new Intent(MainActivity.this,
ShowAppDetailActivity.class);
Bundle bundle = new Bundle();
bundle.putString(packagename, packName);
bundle.putString(appversion, versionName);
bundle.putStringArray(apppremissions, apppremissions);
bundle.putString(appname, appName);
showDetailIntent.putExtras(bundle);
startActivity(showDetailIntent);
private void startApp(AppInfo appInfo)
throws Exception {
final String packName = appInfo.packageName.toString();
final String activityName = getActivityName(packName);
if (null == activityName) {
Toast.makeText(MainActivity.this, 程序无法启动,
Toast.LENGTH_SHORT);
Intent intent = new Intent();
intent.setComponent(new ComponentName(packName,
activityName));
startActivity(intent);
dialog = builder.create();
dialog.show();
* 获取程序信息
* @param packName
* @throws Exception
public PackageInfo getAppPackinfo(String packName) throws Exception {
return pm.getPackageInfo(packName, PackageManager.GET_ACTIVITIES
| PackageManager.GET_PERMISSIONS);
* 获取启动相关程序的Activity
* @param packName
* @throws Exception
public String getActivityName(String packName) throws Exception {
final PackageInfo packInfo = pm.getPackageInfo(packName,
PackageManager.GET_ACTIVITIES);
final ActivityInfo[] activitys = packInfo.
if (null == activitys || activitys.length &= 0) {
return activitys[0].
app_list.xml:
app_list_item.xml:
* 查看应用信息
* @author bill
public class ShowAppDetailActivity extends Activity {
private TextView tv_
private TextView tv_
private TextView tv_
private TextView tv_
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.app_detial);
tv_appname = (TextView) findViewById(R.id.detail_app_name);
tv_appversion = (TextView) findViewById(R.id.detail_app_version);
tv_packagename = (TextView) findViewById(R.id.detail_app_packname);
tv_permission = (TextView) findViewById(R.id.detail_app_permissions);
Bundle bundle = this.getIntent().getExtras();
String packagename=
bundle.getString(packagename);
String appversion = bundle.getString(appversion);
String appname = bundle.getString(appname);
String[] appPremissions = bundle.getStringArray(apppremissions);
StringBuilder sb = new StringBuilder();
for(String s : appPremissions){
sb.append(s);
sb.append(
tv_appname.setText(appname);
tv_appversion.setText(appversion);
tv_packagename.setText(packagename);
tv_permission.setText(sb.toString());如何通过自学成为一名安卓软件开发工程师?
通过自学,如何成为一名安卓软件开发工程师?需要读哪些书?
按投票排序
~日更新~今天我正式填坑~~这个坑被 N 多人吐槽了,也确实有段时间,期间尝试过不少能帮助小白入门的方法,也有所收获,后面我会一并更新到答案中~泻药~ 第一次认真回答问题,有人给点鲜花鼓励什么的没~~-----------------------------我是正式开始的分割线------------------------------------这个问题其实需要展开来说下~学习新技术都很多人来说本身就是一件比较痛苦的事情(因为学习会改变自己原有的认知,是个自我更新的过程)~所以能不能学会学好的前提条件是你是不真真愿意去学,你想学adnroid的根本出发点是什么,这个出发点是否强大到让自己完成这个学习。如果上面两点你已经认识到了,那接下来我们再来看如何自学成为一名android开发工程师~优秀的android开发工程师和普通的差别很大,而根据题主的描述,我们这里就说如何成为一名合格的android工程师(也就是入android开发的门)。学习需要静心,特别是入门的时候需要静心,我不觉得看英文的google android官方文档()或者[eoe社区组织翻译的中文文档]()想快速入门是件容易的事情;也不觉得找一些免费的视频看下去能快速的入门。因为这些东西都是入门后才合适看的。说到入门,那我要推荐一下自己策划和参与撰写的《Android开发入门于实战》这本书籍了(本书第一版是笔者参与撰写的中国大陆第一本android开发教程,现在市面上是我们刚刚撰写完成的最新的(也就是第二版),官方介绍如下《Google Android开发入门与实战》是中国大陆第一本Android开发教程。此书第一版由eoe的创始人姚尚朗和靳岩于2008年底所写,第二版由eoe众多实力派社区版主于2013年共同协作改版。此书目前已经重印超过18版本,已经是Android开发者是受欢迎的Android开发图书之一;是Android开发者学习人手一本的必备红宝书。在这里解决大家阅读过程中遇到的所有问题,勘误收集,源码下载,讨论交流,作者答疑,反馈建议等等内容均可发布,希望eoe社区这本书能成为Android入门经典标准教材,让更多人学会android开发。封面如下BTW:BTW:详细的目录在这里:紧接着,我来说说入门的步调:我个人建议的入门途径是这样的:1.第一阶段:认知上入门买一本纸质的android入门书籍,一定是入门的,比如我参与策划和编写的[Android开发入门和实战](),给自己1周完整的时间按照里面的阅读建议阅读完,第一遍不需要完全读懂,特别是代码的地方,但是你需要尽量的尝试看懂(这个阶段不需要开电脑查资料,因为电脑上诱惑太多了,你的注意力会被其他干扰的)。读完这本书后,你基本上就从认知上入门了;2.第二阶段:知识上入门认知入门后其实就比较简单了,拿过上面那本书,从环境搭建开始,到第一个例子,到书中其他的演示的例子都自己尝试跑一遍,遇到错误自己尝试解决,如果超过20分钟没解决掉,记得去这个社区问,作者会第一时间帮助你的。跑完例子基本上就有对 android 有个大体上的入门了~3.第三阶段:实战上入门有了基础认知吼,就进入到真正的 android 工程师成长轨迹中了,这个时候信息和知识就不是主要的了,这个阶段主要的按照知识点的形式来强化和实战,目的是持续学习在工作中会用到的各种技能~ 这个阶段的知识点很多,很多情况下一些人会抓不住重点,把时间花在一些另外20%的技术上去,所以按照我对 android 技术的理解和经验,推荐试试我们新发布的新产品《》,『极客学院』是我们最新的一个收费产品(真的超值,30元/月的价格可以学习里面全部的课程,android 为主,还有 cocos2d 和 c 等课程),按知识点形式对真正有用的技术进行讲解;此外,务必去『』注册一个帐号,遇到问题自己搞不定的时候去和大家讨论讨论~4.第四阶段:开发者圈子上入门前面说的很多都是自己一个人在战斗,要想更好的进入这个行业,需要有自己的开发者圈子,前面好像有同学也提到了诸如 GDG之类的活动,恩,就是这样的活动。我这里说的是 还是 eoe社区的活动(没办法,这样的活动就是我觉得开发者活动应该是这样的),我们有两类活动,一类是基于城市的『eoe 同城会』,现在在上海,北京,深圳等14个城市都有本地的组委和志愿者,会定期活动分享,例如『』,此外还有一类是诸如 eoe 每年一届的移动开发者大会。BTW:活动不要跑多了,特别是线下活动,别没事就跑去参加什么活动,挺浪费时间的~好了,坑填完了,心安一点了,有需要更多信息的给我私信吧(我争取能及时给大家回复~)~--------------我是一个很极客的分割线-------------------接下来我再给大家推荐几个『极客学院』里对这个问题可能有用的课程1小时,独立开发第一个“Hello World”4个实战项目,教你7天学会Android通过对现代网络安全的基础理论的学习,掌握和理解其核心原理。此外,还有诸如『』还有很多不错的课程,我们也在每天不断添加新的课程,我个人觉得是每个学习 android 的人必备的,超值的很~~
大家讲了论坛和知识区,我补充融入程序员圈子的部分吧。有圈子,有人有朋友,更能坚持学下去。可以去github上面找开源项目自己编译运行,并且改编成其他版本。多参加线下活动,很多免费活动的。本题里面所有图片,都是我自己拍的,或者我电脑屏幕截图。这是今晚我参加线下活动,零基础学ios开发(免费活动我说了咩?)最后真的做了一个简单iphone app出来,虽然超简单,只有一个动作。我个人最最推荐当然是GDG(Google Dev Group)所有活动。大牛非常多,活动全部免费,而且都是编程相关。加入G+圈子和邮件组后,里面全是工程师,新人到大牛都有,而且都非常乐于分享。各种国外新技术,新教程,新XXXX,第一时间都有人讨论。补充刚刚好一年前,在上海时候,GDG组织活动,也是零基础学Android开发,当时做出一个APP可惜我一直没坚持,所有软件都半途而废。认真想学,很容易加入圈子的。另外硬件相关的,另外硬件相关的, 我参加过他们线下活动,免费,教你单片机开发,很好玩。上海有新车间:看老外编程也很有趣,他超短时间开发一个社交APP,从零开始写代码,全程英文。看老外编程也很有趣,他超短时间开发一个社交APP,从零开始写代码,全程英文。这个活动是barcamp ,免费,全天,并且提供午餐。对了,我前面提到GDG大部分活动有吃有喝咩?最后贴今晚的图,免费,从零开始学ios开发,成果见最上方:最后贴今晚的图,免费,从零开始学ios开发,成果见最上方:(车库咖啡也有很多不错活动嗯嗯)对了,我有提到GDG全国都有组织咩?我个人觉得质量不错线下活动是:上海,北京GDG组织线下活动。北京Barcamp 且都是免费。创业聚会一般不错:北京创业影院,车库咖啡,3W咖啡,上海创智天地等等。线上不错的网站有: (这个我比较喜欢) ( 目前我最喜欢的,用这个学Android来着 )最后放北京GDG活动(真的是免费的,还有茶歇和零食)这是在某个酒店,后一张是创业咖啡店。以上。祝好。以上。祝好。——————补充的分割线——————说了是GDG,加入GDG有各种讨论~~ 再三提到我个人最推荐的是GDG组织。我从邮箱截图吧,上海GDG和北京GDG我都有参加。这些是Gmail邮件列表,线上和线下活动都有,够不够干货?
我正在自学Android开发,已经有半年时间了,基本上业余时间可以挤出来的,都拿来学习了由于还没有找到Android开发的工作,先占个坑,不敢擅自回答,以免误导,等找到工作了,再详细描述着一路过来的自学经历。PS:本人之前没有任何软件开发经验。**********************update:经过了八个月的自己,终于在上周五被一家公司录用了,现在遵守诺言,说说这段时间的自学经历。背景介绍:性别:男、无任何编程经验、年龄:28(大龄青年了)、学习方式:工作业余时间自学。第一阶段:学习Java
用时:一个半月一开始我使用的是Princeton大学的线上资源学习:,学习完后,觉得自己掌握的不够系统,于是找到了另外一本教程:Introduction to Java Programming, Eighth Edition,继续学习,该教程学到第30章,没有继续学习下去是因为后面的越来越难懂了,于是就学到这里,等学习Android开发的时候,有需要的,再回国头来学习。Java阶段学习的主要方式是一边学习,一边用Eclipse模拟练习,该阶段的学习持续一个半月。第二阶段:初步熟悉Android开发
用时:两个月???内容较多,稍后更新************************************不好意思,耽搁了这么久,现继续更新第二阶段:入门Android
用时:两个月(业余时间学习计算)在入门Android的时候,听从了网上一些人的发言,首先选择了google官方的文档,里面有一个trainging的资料,发现这个资料学习起来生恢难懂,而且讲得不够详细,跟着做项目也是困难重重,很不适合初学者,不建议,我也是在学习了一周后,果断放弃;然后选择了上面的Android学习资料,找到一本排名第一的,叫做Android Programming:The Big Nerd Ranch Guide,跟着一起学,由于学的有点急躁,大概花了一个月多,感觉效果是有,但是不是很好,然后在知乎上看到有人推荐TeamTreeHouse,试用了一下,感觉很好,于是注册了会员,开始学习,这个阶段的学习持续了两个月,感觉效果很明显,而且视频的里面,都把资料讲的浅显易懂,看了以后,兴趣大增,很建议选择这个作为入门的学习资源第三阶段:深入学习其实学完第二阶段,我就已经开始慢慢的投简历了,但是都没有任何回应,于是有开始了新的阶段的学习,这个时候,我选择了Udacity,里面的一个Android的学习课程,虽然说也是基础的 课程,但是讲的比TeamTreeHouse的深入许多,而且更加的贴近实际工作情况,不过讲的没有前者详细,所以在学习过程中,需要自己翻阅资料,整个过程也是持续了一个月多,我现在的这份工作,就是在这课程学完不久后找到了后记:其实通过自学,想达到用人单位的要求,其实是相当困难的,我学了快八个月了,投出去的简历,也几乎是渺无音讯,期间的打击是肯定有的,不过还好坚持了下来,我的建议是,如果选择了这条路,就一定要有足够的毅力,并且能够在简历、面试被拒绝后,心无旁骛的继续学习,直到达到目的为止,而且这个阶段没有一个固定的时间,如果不是我现在的主管看中我的一些其他品质(不是我的Android开发实力),我也不会被录用,可能还要继续的学习几个月,所以自学这条路只属于肯坚持下来的人,祝好!后后记;现在在新的公司上班,由于我也只是刚入职不久,也有许多没有上手了,做起来也没有之前想象的简单,毕竟是工作了,也容不得疏忽,于是压力也大了起来,不过毕竟现在做的是自己喜欢的工作,感觉之前的付出,值得,我希望后续想自学的人,一起努力吧。***********************update:现在上班已经有快两个月了,做个更新吧刚找到工作那家公司,是一家创业公司,我进去的时候,公司正在转型,Android开发的工作很少,我就去基本都是在看别人现成的代码,呆了一个月之后,公司突然辞退了两个Android开发的,包括我,理由是公司决定转型做平台,暂时不做Android客户端,下午四点通知,六点就走人,当时确实有点彷徨,也有点担心。回到家马不停蹄的投简历,把自己的工作经历写成了半年(实际只有一个月),四天后获得了一个面试,是一家做Android定制的,在面试的时候,我夸大了自己的开发实力,由于我渴望通过工作来增加阅历,于是进来了。新的工作开始后,让我庆幸的是,之前吹的牛皮,基本上在努力后,也基本实现了,公司需要完成的项目,也都可以按时完成,现在的进度差不多是一周的时间,就可以初步开发出一款电商类的APP,由于公司自有我一个Android开发的,不知道这种进步算什么水平。总之,很庆幸的是,很多知识都可以通过自学掌握,那些不会实现的功能,也可以通过摸索而实现,也让我信心更坚定了点,真的非常感谢前人在网上发布的博客内容,给予我的帮助真是太大了,同时我也开始自己写博客了,把工作中有价值的问题和解决方法记录下来,希望对别人有些许帮助。打算这一两天申请转正,心里还是有点忐忑啊,太盼望这一天了!!!*********************update: 这次更新的主要理由是公司终于同意我的转正了,只是工资没有预想的多,只涨了八百,现在已经基本上手了,碰到的问题很多也是都可以独立解决,而且还能抽出空余的时间,学点新的东西,这次的转正对我本人来说,意义非凡,至少证明了,我这么久的努力还是值得的,而且现在可以靠着这份手艺挣到钱,而且这份工作是我确实喜欢的。接来下我计划会是继续的加强自身的开发实力,多阅读 牛人的博客和代码,真的收货非常大,而且知道的多了,也比较清楚自己的接来下要努力的方向,所以我会朝着这些方向去努力,不过会没以前那么拼命了,之前只顾着转职,陪家人老婆的时间少了许多,现在稍微稳定点了,我想慢慢的补回来,不知学习不会放下的争取在三个月左右,再涨一次工资吧,在这里立下证据,待日后核验。******************************updata:最近的工作由于比较大的变动,于是在这里记录下首先,公司说的涨薪的八百,实际到了第二个发工资的时候,发现其实只涨了四百,期间说了各种理由,总之是这是一家不靠谱的公司,不靠谱的老板工作方面,我自己独立完成了一款APP的开发,从零开始,一直开发到上线推广,中间也碰到了种种的问题,在努力下也都一一解决了,这个是我在这家公司最大的收货,第一个项目结束后,开始试着投简历,无意中找到了一家新的公司新的公司经历了三轮面试,第一轮是人事的,我把我的工作经验说成了八个月(实际四个月),然后是项目总监,最后是老板,整个面试过程很顺利,由于公司没有安卓的开发人员,所以我那些技术上的吹嘘也都一一瞒过去了,最终被录用了,新的公司,待遇比之前的高了一千,上班时间也改成了五天7.5小时,老板跟公司的环境跟上家比,都好了许多,工作也基本上可以胜任,好歹也是有点真本事,不是完全的吹嘘,最后,总结下对个人比较有帮助的部分:1、写博客:写博客不仅可以激励自己学习新的东西,而且以后碰到类似的问题,直接从博客中copy代码,简单省事;2、把代码中重复的模块写成一个工具类,下次调用直接简单的一行代码就可以实现了,比如emptyView, viewPageIndicator。3、从github上照搬代码的时候,记得读懂里面的代码,真的帮助很大,那些大神的代码真的写的太好了,每次读完都很有收获。4、工作中碰到不懂的,切勿马上搜索答案,先查看官方api接口,寻找思路,最后再用搜索引擎暂时就这些了,其实我还只能是入门级别的,能有更深入一级的体会的时候,再来记录下。。***************************update:刚好现在有空,继续更新下吧目前的这家公司各方面感觉都还可以,虽然目前是我一个人独立负责Android的开发,基本上是上手的,在技术上是没有碰到什么解决不了的问题,碰到很多不懂的内容,在Google搜索后,基本都找到答案了,或者寻找相关的源码去了解下,也都可以一一的解决,这几个月,可以感觉到自己在技术上又有了不错的提升,现总结如下,希望有所参考;1、尽早从Eclipse迁移到Android studio。虽然去年就开始接触studio了,当也是懵懵懂懂,今年随着1.0正式版本的发布,心里就痒痒的,想迁到studio上面来,由于对Gradle的不熟悉,还有配置等各种原因,一直没有迁移,不过也有陆陆续续的练习使用,在基本熟悉了,就开始迁移目前的工作项目了,迁过来了以后,就再也回不去了,Android studio真的比Eclipse好用太多了,你越熟练使用它,它就越好用,特别是github上面很多项目都是基于Gradle的,集成到studio中很方便,总之,强烈建议迁到studio开发平台上来。2、学习使用Git。公司用的版本工具是SVN,我估计很多公司都是用这个,我试了在studio上面集成SVN,可是试了很多次都失败了,又听说git很先进,狠下心来学习了git,在Udacity上面有个Google开发的Git学习课程,免费的,粗略掌握后,就开始摸索在studio上面使用git,发现studio对git的集成太好了,虽然网上这方面的资料很少,但是基本上摸索了些就学会了,基本所有的git操作都可以在studio上进行,不用使用Git原生的命令,方便异常,另外在配合Bitbucket,简直太好了,用Android studio + Git + Bitbucket,可以天下无敌了啊,哈哈!3、代码方便维护和复用。在实际的开发过程中,发现很多方法都是相同的,特别是网络访问这块,对于相同的方法,尽量写在一个公用的BaseFragment或者BaseActivity中,这样在后期,如果接口有改动的话,不需要每个页面都改动,只要改动通用的方法就可以了,还有在每个页面的代码结构要足够清晰,多谢方法,不要很多代码写成一坨,这样后期不好维护,会看的晕头转向的。4、使用leakcanary。内存控制是我的薄弱环节,刚好最近Square出了这款工具,可以很方便的检测内存泄露,我在我的项目中一试,真的发现了好多问题,也发现了很多容易造成泄露的书写习惯,嫉妒推荐使用。5、使用AppCompatActivity。如果你的项目还在开发的话,不要用FragmentActivity了,用这个新出的,也是官方推荐使用的,可以很好的兼容5.0以上的系统,另外用了也可以让各种系统的控件Style保存一致,各种好处说不尽,用了就知道了6、BugHD,检测崩溃。并不是每次崩溃都可以被你采集到,这个工具可以采集到你开发的APP的所有的崩溃,免费试用的,关键是集成很方便,我一直在用现在基本上算是入行了,想想之前刚开始投简历的时候,发了一百多封简历,接不到一个面试电话的情况,难免有点唏嘘,虽然上手工作暂时没什么问题了,但是想要进一步的深入,还是有许多的路要走,还是继续努力吧下一步的方向应该是放在进一步研究各种api和效果实现上面,最近发现研究官方的源码,收获很大,官方的代码写的真的是太精辟,太有逻辑性了,很好的学习教材。*************************update:最近工作又有一些变动,在这里做个分享吧原有的公司,因为项目的原因,我已经空闲的快一个月了,预期接下来的几个月都没有什么开发需求,根据我这段时间的表现,公司还是希望我一直留下来的,万一有新的项目,就不用再折腾的招人了,不过空闲对于我自己是莫大的时间浪费,于是就试着看看有没有其他合适的机会,总之,挺顺利了,就找了份不错的新工作。好了,下面分享一些最近新的感悟1、 找工作的选择,我之前都是选择创业公司,很大的一部分原因是因为我的工作经验,很难进入一个大的公司,不过创业公司的失败风险真的很大,特别是那些没有天使轮的,真的很容易死亡,当然项目都的死亡,损失最大的应该是老板,不过对于我们做开发的,也因为的开发的产品没有得到市场的考验,你也不知道你开发的APP到底好不好,有没有什么问题,机型的匹配怎样。说了这么多,个人的经验是工作的选择,还是尽量选择一个靠谱的工作,有更大的用户去使用你开发的APP,这样对你的成长才是真的巨大的。2、 做开发的时候,不仅仅是实现功能,还有代码的优化,结构布局,真的很重要,我这几天看了下Picasso的源码,发现自己的代码真的写的太烂的,一看就是质量不够好的,所以尽量多看一些大神写的代码,了解他的布局和思想,然后再拿来改进自己的代码3、 开发中碰到了问题,记得自己先去思考下解决方案,或者网上Google,不要马上就到群里面去问,我最近退出了很多技术交流群,因为有很多自己都没怎么思考的问题,就抛到群里面来,其实我们做开发的,我觉得解决问题的能力比开发的技术还跟重要,等你熟练自己解决问题了,就会发现其实需要去求教别人的地方是很少的最近接触的多了,就越发现自己不懂的也多了,之前说算是入行了,现在想起来,其实还只能算是入门,如果你也是走写代码这条路,就一起猛干吧,阿门。。。。
绝大部分人说官方文档和范例()是最好的教程,如果你英语好,且有Java和XML基础,那按照官方的一路下来就算入门了。如果英语不好,可以看一些视频入门,如Mars的的。最起码得先把开发平台搭建起来吧。再结合视频做一些小练习,最基础的布局先练好,不要急。当然,看视频的话虽然通俗易懂,但是进度可能比较慢(即使我视频调至2倍速看),所以必须结合看书。但是,市面上的书大部分都跟不上Android最新的脚步。不过还是推荐两本:李刚的《》,此书大而全。《》,此书可以照着练(不要ctrlc+ctrlv)。对了,现在还有更新颖的学习方式,可以在线互动编程学习(),你可以尝试一下。总体来说,书都比较落后,Android学习主要还是靠网络。入门是最关键的,入门之后相信你自己也会找资源了。然后可以启动以项目为导向的学习方式,用到什么学什么,这样最快。但是,快并不是浮躁,别想一口气吃成胖子。况且,一入IT深似海。。。不扯淡了-_-。其他参考:StackOverFlow的Android Tag()GitHub搜Android()Google Code上的优秀APP源码()直接拿来用的Android开源代码()Android设计指南非官方简体中文版()Android开发者社区()CSDN上的优秀博客和牛人(),比如这位我现在也在慢慢学习和摸索中,望共同进步。
我也是通过自学走向Android开发的,我来回答下。 1.要对移动开发有热情,而不仅仅是为了找份工作。有热情才能保证持续的学习和在实际编码中的精益求精,不然在编程的道路上走不长。 2.Android应用层开发是用的Java语言,所以熟悉Java语言是必须的。如果以前没编程基础,推荐毕向东老师的Java视频。如果有编程基础,推荐李刚的《疯狂Java讲义》。国外的《Java编程思想》不适合初学者,《Java核心讲义》翻译不太好,不推荐。 3,掌握Android基础知识,推荐郭霖的《第一行代码》,相信我,这是最适合入门的Android书籍。 4,掌握Android进阶知识,推荐郭霖的CSDN博客,主要看关于View的绘制流程、Touch事件分发、Handle机制等。 5,熟悉常用的设计模式,先开始熟悉几个很常用的就够了,比如单例,观察者等等。学到这,Android应用开发基本入门了,学习曲线也不是很陡,加油↖(^ω^)↗。
关注 ——————学校比较渣,整个大一只教了c语言。每天刷知乎,被各种大神虐,轮子哥答案里各种看不懂的名词。满满的羞耻心啊!于是乎,在大一下学期开始自学数据结构和JAVA。整个大一下,把各种数据结构挨个实现了一遍,写成BLOG发出了。java也写了n多demo。基本理解什么是面向对象。暑假开始自己默默学android开发,《第一行代码》确实是一本非常非常适合初学者的书。基本书里的代码都打了。最后一个天气预报的小项目,一定要自己实现,这样能对书中n多的知识点加深认识。入门以后就不要再看这本书了,多逛github!多逛github!多逛github!多看android doc!还有stackoverflow!!这些都是神器!!!不解释!还有关于ide,由于《第一行代码》是使用eclipse的,我一开始也是用eclipse的,但是入门以后请立马转AS,我个人觉得好用程度不是一个级别!另外翻墙的话,淘宝随便买个vpn吧开学初,自己开始开发一个校园app,至今基本功能都已经实现。其实现在还是比较简陋的,会不断完善ing。github地址如下,我觉得这个项目还是挺适合初学者学习的。回答的比较乱,见谅。这个app界面,参考了川农助手,哈哈,侵删。————————————很多人来问我该看什么书。其实我觉得,入门不用执着于看什么书。计算机学习不是说你看了什么书就成大牛了。重要的是 “做中学” ,很简单的道理。反而熟练以后,需要加深对底层理解的时候,可以去看一些大牛的书。还有个人技术BOLG,也很重要,能不断提升你学习的动力。嗯,我认为应该这样学编程。————————————首答就有这么多赞,简直感人。。。谢谢大家。
开发android,需要掌握这些基础。①Java基础知识 ②Linux基础知识 ③数据库基础知识 ④网络协议 ⑤Android基础知识 ⑥服务器端开发知识①Java基础知识很多朋友一上手就开始学习Android,似乎太着急了一些。Android应用程序开发是以Java语言为基础的,所以没有扎实的Java基础知识,只是机械的照抄别人的代码,是没有任何意义的。万丈高楼平地而起,Java就是筑起高楼的每一块砖头。那么Java学到什么程度才算是过关呢?我个人认为至少要掌握以下两个方面的内容:
a)Java基础语法:具体的知识点列表可以在这里下载:《Java知识点列表》V1.0。这部分内容没有讨价还价的余地,必须烂熟于胸。至于具体的学习方法,可以看书或者是看视频,但是关键是要多加练习,无论是书上的练习还是视频里面的练习,都需要仔仔细细的完成;
b)设计模式:由于在Android系统的框架层当中,使用了大量的设计模式,如果没有这个方面的知识,对于Android的理解就会大打折扣。设计模式的种类非常之多,一个一个的全部掌握,是不现实的,必须首先掌握面向对象的基础设计原则,有了这些基础原则的支持,就可以举一反三。这部分内容可以在《Effective Java》和《Agile.Software.Development:Principles,Patterns.and.Practices》这两本书中找到。②Linux基础知识大家都知道,Android系统的基础是Linux操作系统。在开发过程当中,我们也需要使用到一些Linux命令。所以说一些Linux的基础知识是必须的(话说现在的程序员,不懂Linux都不好意思跟人家打招呼),推荐大家看看《鸟哥的私房菜》这本书,写的相当不错;③数据库基础知识这个比较简单,就是一个增删改查的数据库操作,可以看一下这本书:《SQL编程练习与解答》④网络协议至少需要学习两种基础的协议,HTTP协议与Socket协议;⑤Android基础知识⑥服务器端开发知识由于很多Android应用程序都需要服务器端的支持,所以掌握一些服务器端开发知识还是非常有必要的。至于选择哪一种服务器端知识进行学习,就比较麻烦了,因为技术的种类实在是太多了:
a)Java EE:就是上面邮件当中所提到的SSH—Struts+Spring+Hibernate。这种技术的优点的功能完整、强大,已经使用了很多年,而且既然大家已经非常熟悉Java了,那么学习SSH看起来也顺理成章。但是使用这种技术开发服务器端程序,非常麻烦。即使是一些简单的功能,也可能需要大量的代码和配置文件来实现;
b)PHP:简单易学,开发快速。但是我们需要多学一种语言,是否得不偿失,就要大家自己判断了;
c).NET:这项技术的特点和Java EE差不多,但是要想掌握.NET,则需要掌握c#,也是个麻烦的事情;
d)ruby on rails:这是我个人最喜欢的服务器端技术,简洁,优雅,寥寥几行代码,就可以实现很复杂的功能,但是这需要Ruby语言知识作为基础;至于选择哪一种知识,就看大家自己的判断了,毕竟每个人想法不一样,爱好也不相同。安卓开发学习书籍书的话建议买
精通Android2 ,或者 Android2高级编程 这两本书,讲解的细致,但是一定要结合sdk来看。国内的不要买。。。。(切身体会,千万别买)看完之后就可以自己动手做做项目了。对于java基础,我现在的感觉是 如果要深入学习android平台,java基础一定要好(里边包括各种java类库的用法,本地代码jni什么的)。但如果平时随便做做应用的话,会面向对象编程就完全可以了。安卓开发学习学习网站推荐你关注DevStore(主要是开发者服务商店)还有csdn和开源中国,都是开发者经常关注的网站。DevStore()主要是整合开发者会用到的服务,可以实现在线对比评测,省去自己去网上搜索寻找的过程,还有sdk配置过程,很方便的,嘿嘿,我还在这个网站上写评测挣过外快呢。csdn是 中国最大的开发者技术社区,牛人还是很多的开源中国是目前国内最大的开源技术社区,主要是软件下载,源码托管自学的话平时就多看一些官方文档,帮助文档也是一个很好的参考资料,多看看,平时多敲代码,多看住哟啊哈斯看规范,看完之后去敲代码主要是在实践过程中发现错误,多做项目自然多遇见问题,遇见问题解决问题,下次自然就知道怎么解决,在实践中发现真理。当然可以的话有一个老师还是很好的,但是要记得要是的作用只是引导,师傅领进门修行在个人。
android,需要这些技能基础。①Java基础知识 ②Linux基础知识 ③数据库基础知识 ④网络协议 ⑤Android基础知识 ⑥服务器端开发知识①Java基础知识安卓学习视频的话老罗的视频还是不错的我当初是报的培训学校学的,都是学校老师讲的,课下有时候听一些视频课程,最多的还是自己敲代码,多看官方文档,多敲代码,那段时间天天除了上课就是敲代码,改bug。推荐几个不错的学习网站,可以自己学习下。csdn它是集新闻、论坛、群组、Blog、文档、下载、读书、Tag、网摘、搜索、.NET、Java、游戏、视频、人才、外包、第二书店、《程序员》等多种项目于一体的大型综合性IT门户网站,源码只是其中的一项,但是很实用 里边有很多大牛。DevStore是一个开发者服务整合类平台,目前DevStore已汇集国内外500余款开发者服务,每个服务都有相对应的服务评测报告。开发者可以在这里提交服务、下载源码、评测、对服务进行对比并进行评论等等。交流群: 这里汇集了一大批高质量的开发者和高级评测人员。开源中国是目前国内最大的开源技术社区,由开源软件库、代码分享、资讯、翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。为开发者提供丰富多样的软件下载,源码托管等功能。自学的话平时就多看一些官方文档,帮助文档也是一个很好的参考资料,多看看,平时多敲代码,多看看注释多看规范,看完之后去敲代码主要是在实践过程中发现错误,多做项目自然多遇见问题,遇见问题解决问题,下次自然就知道怎么解决,在实践中发现真理。当然可以的话有一个老师还是很好的,但是要记得要是的作用只是引导,师傅领进门修行在个人。
我是一名iOS开发者 最近在学习android开发,以前有时间就准备学习android开发,最终还是没时间放下了。上周开始试着使用android开发一个app,花了两三天的时间+google完成一个v2ex的小的客户端,也算大致学了一些皮毛。代码在这:我个人的学习方法是,边干边学,了解主要的开发流程,从0开始写一个android app,包括打包和上线。这样可以抓住主干。了解了gradle,android studio工具。后面的知识可以一点一点的补充,android的知识体系太庞大了(iOS也差不多),不能靠看完一本书后动手写代码,那样太慢且容易停滞不前。想学习,就要立马动手开始。上周开始在公司写android客户端,主要是android客户端没人了,只有我顶上了 。。。。。
首先来说下我的背景以及这大半年来我的自学情况吧:
1.本科通信工程,非计算机科班,大一学过C语言基础,后来因为专业课程需要,学了一点汇编以及Matlab。这部分经历我认为对于我后来的编程学习只有基础语法理解方面的帮助。
2.去年11月中开始系统学习编程语言,由于想做Android开发,所以入门语言选择了Java。
3.11月中到12月中,边看传智播客的一套视频边敲里面的练习。
4.12月中到1月中,20天左右时间看了《编程之美》,并用Java实现书里百分之五十左右的算法题,剩下的题由于难度太大
或者比较复杂,当时没有深入研究下去。
5.1月中到2月中,选择了网易公开课里面的《斯坦福大学公开课—编程方法学》这套视频,同样是边看视频,边完成里面的Assignment。在这里感谢帅帅同学@王帅 推荐这套视频。里面的Assignment题都是经典题目,对于初学者来说非常适合。
6.2月底开始学习Android语言,花了1个月左右的时间,照着《第一行代码》里面的例子,敲代码进行实现。
--------------------------------------------
由于在学习编程之前就有两个小产品的构思,所以也没有想自己基础是否打扎实了,先试着去实现,看看能不能做出个可用的产品来。截止到目前为止,两个小产品都已经开发完毕了,其中一个“苹果序列号查询”已经在小米、豌豆荚、Google Play、魅族Flyme等应用市场上线并且有了一版更新(4月14日上线,到目前为止下载量已经超过1000),它是下面这个样子的:
关于开发“苹果序列号查询”具体实现逻辑介绍,请移步(最近好像需要翻墙):另一个是我的个人简历应用,仿照地图搜索的样式做的,它是下面这个样子的:
关于开发“JeffinBaoCV”这个个人简历应用的介绍,也请移步:-----------------------------------------
很多知友在其他答案中已经列了很多资料了,我自己也是通过他们介绍的资料的其中一部分来进行学习的,所以资料方面,就不多说了,想说两点看似无关但我认为又比较重要的点:
1.有自己很强烈想要实现出来的想法我在学习编程之前,上面两个应用的初步构想就已经在我脑中了,所以这半年多特别是今年2月底开始学习Android以来,我都是按照怎么去实现我脑中的想法去学习Android的。没有对于想要实现的东西有着强烈的愿望,我想我是很难坚持下来的。最终把自己的想法实现后,这种开心和一直进步的感觉,也是很鼓舞人心的。
2.“软实力”的加强Android应用呈现给用户最多的是界面,所以界面是否美观是用户会不会选择去用的一个重要因素。对于工程师来说,如何提高自己的审美,进而把自己对美的理解融入到应用当中是很重要的。这不是说工程师一定要具备专业设计师的能力,这不太现实。但是如何保持界面整洁,在字体、颜色、排版上如何规范与统一,都是工程师需要在平时去提高的。
---------------------------------------------
写了这么多,不知道有没有帮助到题主,下面我也想安利下自己的应用以及在求职中的自己:
1.小米、豌豆荚、魅族Flyme、Google Play、锤子应用商店上搜索“苹果序列号查询”,有任何问题,欢迎反馈给我丫。
2.第二个应用做的是个人简历—JeffinBaoCV,没有上线,感兴趣的朋友可以通过下面链接下载(由于身边手机不多,可能在小屏幕低版本系统的手机上会有适配问题,如果有,也欢迎反馈给我丫,多谢):.(提取码:9x6d)
3.下面是跟我有关一些主页的链接:
豆瓣主页:
主要用于记录自己读过的书和看过的电影,偶尔看看书评和影评,再偶尔写写书评并记录自己生活中的一些想法
微博主页:
主要用于关注一些自己欣赏的人的动态,看到那么多比自己厉害的人都有自己喜欢的事情去做,也不断激励我去做自己喜欢的事情
个人主页:
主要用于写技术文章和一些自己认为写得比较好的文章,刚开始用jekyll引擎不久,所以内容比较少。
GitHub主页:
主要用于托管自己的代码,寻找一些好的开源项目来学习使用。
如果你对我感兴趣,请私信我或者通过下面邮箱联系我吧,谢谢!
找本java书老老实实刷,书是没几本像样的少掺和什么线下聚会,浪费时间
我自学java和android一年多,现在是一名android工程师。总一下自己的经验,希望对你有帮助。首先我想说的是入门android一定要有java基础。我自学android的时候由于java的基础不是很好,甚至连java的基本语法和对常用类用发都很模糊,导致后面学android的时候学了一个月还是不清不楚,信心大减很受打击,无奈还是重新学一遍java再来学android,发现学习android好理解很多,所以一定要先把java的基础学扎实!然后,android跟xml的联系还是挺多的,资源文件都用到xml,所以多多少少理解一下xml的结构,基本语法对自学android也是很有帮助的。准备好学习android的基础之后,正式学习android。如果是零基础,我个人觉得最好的学习方法是以看视频教程为主(网上可以搜到很多免费的android视频教程),辅以一两本android基础的书。入门android,最大的阻力莫过于如何自己创建一个android项目进行开发,包括了解android项目的结构组成、使用什么开发工具以及基本开发步骤。很多关于android入门的书一开始一边都是讲一些关于android系统的发展过程等等这些介绍性的东西,然后在讲讲android开发的重点是什么四大组件。大多数人一般看看都能接受这些东西,但是大多数人都挂在了接下来真正学习android的环节,也就是如何自己创建一个android项目进行开发。
这个我觉得可以给点经验:
1、学习一种后台开发语言,如果是零起步,推荐java。当然,如果你学过C#或者PHP,可以看下java的语法,非常容易顺利进第二步。
2、学习面向对象思想。其实,大部分情况下这和第一步都是同时进行的。有的兄弟只是大学学过C语言,这样就找补充学习下这个。不要太深入,了解继承、接口、重写等这些基础概念就好。
3、开始编码了,环境搭建,看视频博客,控件拖拖拽拽,有两玩意可以在手机展示了。恭喜你,入门了。
4、看书。推荐《疯狂的android讲义》,其他类似也行,有点厚。看完了,理解了,那就可以了。
5、深入理解原理,书籍看懂看透,运行机制、开源代码、交流学习,优化代码,太多了不说了。应该中级了吧。本人菜鸟,太高级的我也不懂了。
每Java基础就学一下,推荐《Core Java》。有Java基础就直接动手,参考Android Develop网站上的。
Android学习之路别人整理的几个开源框架别人整理的一些Android项目
之前已经回答过了,问题貌似有点重复,直接贴链接吧。
Android学习中,以个人经历来说说吧。1.先学好JAVA,打好语言基础;2.找一本Android相关的入门教程,如《疯狂Android》之类。先弄明白Android一些特色的开发,四大开发基本组件,Activity,Service服务,Content Provider内容提供者,BroadcastReceiver广播接收器;3.做个小App,边学边做,有付出而又能看到自己的成果,能有一个正向反馈,不断进步。应用场景下的知识,才是真正有价值的;4.去各大论坛交流学习,国内可以去eoe,国外可以去。可以去code google上下载一些开源的Android项目,进行学习。前段时间,CSDN总结了一些热门的Android开源:;5.计划中:编译查看Android源码,并学习学习Linux相关。最后,重要的还是常玩Android手机了,有热爱才有动力^ _ ^
只要把这本图灵出版的《》搞掂,你就OK了!非常系统的一本Android开发好书。另外,人邮本社出版的这本《》,是国人本版Android开发书籍里最好的一本。系统性,前者略胜一筹;技巧性,后者略胜一筹。行动上,很重要的两点:1. 自己不断地去构想App,去实践、去动手做App。我觉得,App的创意,比技术重要多了;App开发技术,真的就只那么多了。2. 多参加各种活动,不管是线上、线下的,当然,线下的最好了。参加活动倒不是为了要学到什么,学 --- 当然是一方面,但参加活动更多的是为了开拓视野,并不断保有、激发自己的App开发热情。
看到很多人说有 java 基础,其实可以直接上手学习 android 了,触类旁通,遇到困难谷歌和百度,论坛发帖和图书馆查阅书籍,这都是比 java 基础重要的技能,关键还是看综合能力
前不久基本完成了一个自己构思的小项目,不知道算不算一名android开发工程师了。我的建议是:1、首先要学好java语言(注意不用去学什么框架),弄清楚继承、接口、匿名内部类等等2、编程基础比较弱的话,建议看android编程视频,编程基础好的,直接看一本android入门书。注意不要看大部头,看简明点的,快速看过。3、看《android开发范例大全》,里面很多小案例,超级推荐。请仔细看代码、运行、修改、扩展。为什么这么推荐?因为编程是一门强烈实践的技能。4、在3中碰到问题就看官方文档()里面design、guaid、trainning以上就够入门了。下一步是自己构思一个项目(可以从3中延伸而来),同时看看别人做得比较大的项目,比如新浪微博客户端、知乎客户端。

我要回帖

更多关于 黑马android安卓56期 的文章

 

随机推荐