• Android学习总结

    2018-08-31 16:56:41
    Android学习总结 activity是Android SDK中Activity的一个实例,负责控制各组件与用户的交互 布局定义了一系列组件,包括Button、TextView、 RecyclerView。布局和组件之间的关系可用下图表示: 常用组件和布局...

    Android学习总结

    1. activity是Android SDK中Activity的一个实例,负责控制各组件与用户的交互

    2. 布局定义了一系列组件,包括Button、TextView、 RecyclerView。布局和组件之间的关系可用下图表示:

    这里写图片描述

    常用组件和布局的继承关系如下图:
    这里写图片描述
    3. 项目的app/res/values目录下保存了一系列的资源,包括字符串资源,图片资源等,包括布局也是资源的一种。它们都通过资源ID被引用。如果控件也需要被引用,则在xml文件中定义它们时,可以加上android:id属性,为其设置ID。
    4. xml布局是如何转换为视图对象的呢?activity子类被创建后,onCreate(Bundle)方法会被调用,它再调用

    public void setContentView(int layoutRestId)

    根据传入的布局资源ID,使用LayoutInflater类实例化该布局中定义的每一个View。activity子类都需要声明在AndroidManifest.xml配置文件中,在该文件中会设置一个launcher activity,app启动时会创建该activity。
    5. MVC设计模式。MVC即模型,视图,控制,activity或者fragment(service还未学习)可以作为控制器,它们将视图即View实例对象显示在屏幕,将模型(实例类)中的数据显示更新在屏幕上。GeoQuiz项目的MVC示意图如下:
    这里写图片描述
    6. activity的生命周期。
    这里写图片描述
    在activity的各个阶段,Android系统会自动调用相应的方法。重载这些方法,添加log,切换手机横竖屏,可以通过logcat看到activity的生命周期中相应方法的调用。
    7. 保存数据以应对设备旋转。

    protected void onSaveInstanceState(Bundle outstate)

    该方法通常在onStop()方法前被调用,除非用户按了后退键。该方法的默认实现把所有activity视图状态保存在Bundle中,Bundle是一种存储键-值对的一种结构。可以通过覆盖onSaveInstanceState()方法,将一些信息保存在Bundle中:

    @Override
    public void onSaveInstanceState(Bundle savedInstanceState) {
        super.onSaveInstanceState(savedInstanceState);
        Log.i(TAG, "onSaveInstanceState");
        savedInstanceState.putInt(KEY_INDEX, mCurrentIndex);
        savedInstanceState.putBoolean(KEY_IS_CHEATER, mIsCheater);
    }

    在onCreate()方法中获取信息:

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Log.d(TAG, "onCreate(Bundle) called");
        setContentView(R.layout.activity_quiz);
    
        if (savedInstanceState != null) {
            mCurrentIndex = savedInstanceState.getInt(KEY_INDEX);
            mIsCheater = savedInstanceState.getBoolean(KEY_IS_CHEATER);
        }
        ...
    }

    还可以存BooleanArray。操作系统会将Bundle对象放入activity记录中,可以理解为暂存。覆盖onSaveInstanceState()保存当前activity的小的或状态的数据;覆盖onStop()方法,保存永久性数据,如用户编辑的文字等。(?如何理解?)
    8. tools命名空间。使用该命名空间,可以覆盖某个组件的任意属性,改属性仅在预览中生效。
    9. 启动activity并互相传递数据。一个activity启动另一个activity最简单的方式是用startActivity方法:

    public void startActivity(Intent intent)

    activity调用该方法后,调用请求发给了操作系统的ActivityManager。ActivityManager启动哪个activity呢?答案在传入的参数intent。intent有很多构造方法,其中一种为:

    public Intent(Context packageContext, Class<?> cls)

    传入的Class类型参数告诉ActivityManager要启动的activity,Context类型参数告诉ActivityManager在哪里可以找到它(?不是在manifest配置文件中声明了吗?)。可以在startActivity(Intent intent)的intent上附加上extra信息,传递给启动的activity。如同在Bundle中保存信息一样,extra信息也是一种键值对,在子activity中提供一个借口,父activity把信息通过借口传过来即可,无需关心“键”是什么样的:

    //子activity
    public static Intent newIntent(Context packageContext, boolean answerIsTrue) {
         Intent intent = new Intent(packageContext, CheatActivity.class);
         intent.putExtra(EXTRA_ANSWER_IS_TRUE, answerIsTrue);
         return intent;
    }
    //父activity
    mCheatButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            //start cheatactivity
            boolean answerIsTrue = mQuestionBank[mCurrentIndex].isAnswerTrue();
            Intent intent = CheatActivity.newIntent(QuizActivity.this, answerIsTrue);
            startActivity(intent);
        }
    });

    子activity在onCreate方法中就可以获取该extra信息:

    mAnswerIsTrue = getIntent().getBooleanExtra(EXTRA_ANSWER_IS_TRUE, false);

    可以用intent传递更多的信息,使用多参数版本的intent构造函数即可(还未实践)。

    以上是父activity传递信息给子activity,要获取子activity的信息,可以修改startActivity方法:

    startActivityForResult(intent, REQUEST_CODE_CHEAT);

    子activity可以调用:

    public final void setResult(int resultCode)
    public final void setResult(int resultCode, Intent intent)

    如果子activity没有调用setResult,而父activity又是调用startActivityForResult启动子activity的,父activity会收到Activity.RESULT_CANCELLED。在项目实践中,子activity的Button监听回调被调用后,它设置了返回结果:

    private void setAnswerShownResult(boolean isAnswerShown) {
        Intent intent = new Intent();
        intent.putExtra(EXTRA_ANSWER_SHOWN, isAnswerShown);
        setResult(RESULT_OK, intent);
    }
    
    public static boolean wasAnswerShown(Intent result) {
        return result.getBooleanExtra(EXTRA_ANSWER_SHOWN, false);
    }

    父activity要重载onActivityResult()方法:

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (resultCode != Activity.RESULT_OK) {
            return;
        }
    
        if (requestCode == REQUEST_CODE_CHEAT) {
            if (data == null) {
                return;
            }
            mIsCheater = CheatActivity.wasAnswerShown(data);
        }
    }

    这里,解析信息放在了子activity定义的一个接口中,因为“键”存在子activity中,最终的还是通过intent来解析到的。
    10. Fragment。fragment与activity很类似,它也是负责创建并管理用户界面,与模型对象进行交互。fragment的生命周期与activity类似,但是fragment的生命周期方法由它的托管activity而不是操作系统调用。fragment并没有像activity一样在onCreate方法中完成布局和组件view的实例化,而是在onCreateView方法中完成的,如下:

    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View v = inflater.inflate(R.layout.fragment_crime, container, false);
    
        mTitleField = v.findViewById(R.id.crime_title);
        ...
    
        mDateButton = v.findViewById(R.id.crime_date);
        ...
    
        mSolvedCheckBox = v.findViewById(R.id.crime_solved);
        ...
    
        return v;
    }

    第二个参数是视图的父视图。以上fragment类中完成了主要的工作,但它的视图显然还无法显示出来,它需要托管给activity。Activity类中添加了FragmentManager类,它负责管理fragment并将它们的视图添加到activity的视图层级结构中。具体做法:

    public class CrimeActivity extends SingleFragmentActivity {
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_fragment);
    
            FragmentManager fm = getSupportFragmentManager();
            Fragment fragment = fm.findFragmentById(R.id.fragment_container);
    
            if (fragment == null) {
                fragment = new createFragment();
                fm.beginTransaction()
                        .add(R.id.fragment_container, fragment)
                        .commit();
            }
        }
    }

    fragment事务的add接口,第一个参数为容器视图资源ID,第二个参数是要加入的Fragment。二者视图关系可用下图表示,fragment视图要放置在activity的视图层级结构中:
    这里写图片描述
    11. RecyclerView。RecyclerView是ViewGroup的子类,每一个列表项是作为View子对象来显示的。它们的显示依赖于两个类:ViewHolder和Adapter。在控制器中重载这两个类。实践项目中RecyclerView作为fragment布局的一个组件,在onCreateView方法中要先调用:

    mCrimeRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));

    接下来,控制器把要显示的模型对象(一般是ArrayList对象?)作为参数构造了一个Adapter,然后调用:

    mCrimeRecyclerView.setAdapter(mAdapter);

    接着,Adapter调用getItemCount()方法获取要显示的列表项的个数,根据该个数,循环调用onCreateViewHolder( ViewGroup viewGroup, int i)和onBindViewHolder(CrimeHolder crimeHolder, int i)。ViewHolder的任务是什么呢?它首先会把列表项布局实例化,然后再通过各组件的ID,找到它们的引用。在onBindViewHolder,Adapter会把要显示的模型参数传递给ViewHolder,它通过组件显示在屏幕上。项目实践中相关代码示例:

    private class CrimeHolder extends RecyclerView.ViewHolder
                implements View.OnClickListener {
        ......
        public CrimeHolder(LayoutInflater inflater, ViewGroup parent) {
            super(inflater.inflate(R.layout.list_item_crime, parent, false));
    
            itemView.setOnClickListener(this);
            mTitleTextView = itemView.findViewById(R.id.crime_title);
            mDateTextView = itemView.findViewById(R.id.crime_date);
            mSolvedImageView = itemView.findViewById(R.id.crime_solved);
        }
        public void bind(Crime crime) {
            mCrime = crime;
            mTitleTextView.setText(mCrime.getTitle());
            mDateTextView.setText(mCrime.getDate().toString());
            mSolvedImageView.setVisibility(mCrime.isSolved() ? View.VISIBLE : View.GONE);
        }
        ......
    }
    
    
    @Override
    private class CrimeAdapter extends RecyclerView.Adapter<CrimeHolder> {
        ......
        public CrimeHolder onCreateViewHolder( ViewGroup viewGroup, int i) {
            LayoutInflater layoutInflater = LayoutInflater.from(getActivity());
    
            return new CrimeHolder(layoutInflater, viewGroup);
        }
    
        @Override
        public void onBindViewHolder(CrimeHolder crimeHolder, int i) {
            Crime crime = mCrimes.get(i);
            crimeHolder.bind(crime);
        }
        ......
    }
    展开全文
  • 我们很多人对Android理解只限于Android应用对andriod系统很少去了解,所以对Android应用的学习每个人都有不同的看法吧!对我个人而言想入门Android开发这行业必须先要学会Java,不要求要对Java有多深的了解,只要对...

         我们很多人对Android理解只限于Android应用对andriod系统很少去了解,所以对Android应用的学习每个人都有不同的看法吧!对我个人而言想入门Android开发这行业必须先要学会Java,不要求要对Java有多深的了解,只要对Java熟悉一定程度就能够步入Android行业了,因为在入门Android我们要了解Android的开发工具(比如IDE、SDK里面的一些工具)而会Java语言就是要学会用那些开发工具的基础,也是Android应用程序编程的基础。除了上面那些我们在刚放入Android的时候可以多看一些Android入门资料或书架,做到这些我觉得Android开发前期没有多大的困难了。

        Android 应用程序运行离不开系统,但Android系统是怎样去了解的呢!!!怎么才更容易去理解呢?这也是我们初学者遇到的难题,但是我们先要知道Android系统是基于

    Linux,而Linux主要是C语言来写的,相信大多人对C语言都不陌生吧?C语言是我们大学要学的课程,相信每个人或多或少对这门语言理解一些,会了C语言那可以浅入了解Linux,对Linux了解后那对Android系统就不会那么的陌生了,就是人们常说的Android的底层就是linux了,除了这些我们要注重的去了解Android ndk 可以说Android ndk 是Android应用层到底层桥梁,比如JNI,等一些库。当然这些是我对Android应用层到底层的一些个人见解,入门Android因人而异!!!


    展开全文
  • 1、活动类处理启动与关闭活动的相关方法及说明 方法 说明 StartActivity(intent) ... 使用参数意图启动新活动,此方法是重写Context类实现的原始版本 ... startActivityForResult(intent ...

    1、活动类处理启动与关闭活动的相关方法及说明

    方法

    说明

    StartActivity(intent)

    使用参数意图启动新活动,此方法是重写Context类实现的原始版本

    startActivityForResult(intent int)

    使用参数的意图和请求码来启动新的活动,可以取得启动新活动的返回值

    Finish()

    关闭活动

     

     

     

     

    2、活动类处理界面组件的相关方法及说明

    方法

    说明

    SetContentView(int)

    设置活动显示的界面是参数布局配置的资源索引值

    setContentView(view)

    重载方法,在活动显示的是参数的View对象

    findViewById(int)

    依据参数界面的配置资源索引来搜索界面组件

    3、activity生命周期内的各个回调方法及说明

    方法

    说明

    OnCreate()

    此方法会在活动创建时调用,可以再此方法之前运行静态活动的初始化,及创建活动的使用界面组件,我们可以将此方法视为活动的进入点

    onStart()

    此方法会在用户将要看见是调用

    onResume()

    此方法会在与用户互动时调用

    OnPause()

    此方法会在暂停目前活动时调用

    onStop()

    此方法会在用户看不见时调用,可能情况有3种,

    onRestart()

    此方法会在活动重新返回屏幕时调用,例如,收到信息,停止目前的活动。等到阅读完信息后,调用此方法返回之前的活动

    OnDestroy()

    此方法会在销毁活动前调用

     

    展开全文
  • 学习Android路上的一些感慨和总结,慢慢来,比较快! 一直想对自己的学习路程做一个总结,来告别某一个阶段的过去,迎接某一个阶段的来临,一直抽不出时间来,于是零零散散的写了点…,到现在,也已经积攒了挺多的了 ...

    学习Android路上的一些感慨和总结,慢慢来,比较快!


    一直想对自己的学习路程做一个总结,来告别某一个阶段的过去,迎接某一个阶段的来临,一直抽不出时间来,于是零零散散的写了点…,到现在,也已经积攒了挺多的了

    这篇博客分享给正陷入或者说正迷失在选择的人…

    为什么要这么说呢?首先,我们要来客观的看待一个状态,那就是——迷茫了,这种状态是什么?其实这种状态是比较其妙的,属于一种过渡期,就拿我自己来说吧,刚开始学习Android的时候,什么都不懂,。现在看来几行代码就做出来的效果当初感觉十分高大上的效果,所有一直拼命的学,在学习过程中呢,也走了不少的弯路和歧途,导致现在的底子也不是很稳定,当然,这些我也正在慢慢的弥补…

    你想比别人更优秀,你就要比别人失去更多

    很多人想听我的故事,其实我的故事是比较简单的,别人学习,我学习,别人睡觉,我学习,就是这样,天下是没有白吃的午餐,同样,也没有天生的天才,正如时间一样,学习本身就是一件十分公平的事情,没有后门,没有速成,只有兴趣和狂热,大学的时候每天基本撸码都超过了14个小时吧感觉,但是都没有太深入的去了解,所有学得很快,别人还在学四大组件的时候我就已经在写小项目了,还记得三国里面评价诸葛亮那段话:

    “史书《三国志》记载:诸葛亮与徐庶、石广元等好友的读书方法不同。徐、石等读书“务于精熟”,诸葛亮则“独观大略”。诸葛亮的“独观大略”,就是读书不纠缠在细枝末节,不纠缠在文词风格,而是跳出书本,带着思考把握书中的精义。”

    我大概就是这种状态,但是我指出这种学习方式并不是推荐你也这样,而在这里告诫大家,我深深的为此买了一笔大单,所有还是有一些小后悔的,这个我们后面再详细再说!

    学如逆水行舟,不进则退

    还记得当初在国企实习的时候学了段时间的C#,那个时候虽然说不上会,但是起码能看能说,但是出来工作回归老本行之后,没过几个月就忘得一干二净了,你要问我这是啥,“what are you 弄啥咧?”,事实就是如此,学习也是一样,我很早就发现了这一点,所以才开始写博客,通过日积月累的方式,把这些代码或者说思想融入到我的生活中,便不会那么容易忘记了,所以才有了我这个CSDN的博客号,不过技术的迭代太快,所以要抓紧的学习咯,真的,至少你在前期不能有一丁点的松懈,比如你可以制定一个计划或者说自学的课程,又或者像我一样用印象笔记

    有条理的计划会让你事半功倍

    我之前也是看到什么就学什么,就像张三丰的太极拳一样,毫无章法可言,但是一直觉得没什么进步,一会想学这个,一会人想学那个,时间一下子就磨掉了,而且这样极有可能会给自己找借口,让自己松懈下来, 我给自己找了一个应对的法子,就是每天下班的时候在印象笔记比写下:“今天晚上干什么”,然后给自己理一理大概晚上有多少时间,在时间的允许下我能学多少东西,衡量一下哪个学习的优先级,然后回到家就知道要学什么了,而且时间控制的也比较好,到现在,印象笔记里林林总总已经有三百多篇:“今天晚上要干什么的”的笔记了,再不济,自己也学习了三百多个知识点了,这些都是对自己很有帮助的事情,好的计划会让你做事情的思路十分的清晰,不过,这些估计谁都会说,也或者谁都会做,但是,很多人会说:自己坚持不下去,的确,我自己也打过很多次退堂鼓,实在是是件很难完成的事情。

    靠外在的因素影响自己

    很多人说我很能坚持,我每次都笑而不语,其实心中一万只草泥马在奔腾,说实话,我以前并不是这个样子的(狗子你变了),不然我初中,高中成绩也不会程雪崩之势下滑到谷底,那时候本来成绩好的,而且是很好的,然而我和众多葬爱家族的同胞一样,一入网吧深似海,从此妹子是路人,额.好像有点跑题了,不过我还是要说一句:你们欠我们葬爱家族一块水泥地…..(以上纯属虚构)我来分享一下怎么可以让自己坚持的一些方法,从这个出发点,我们可以分两个方向来说

    • 自身:

      自身的话,其实是比较少数了,不断给自己打气,给自己压力,效果并不是很大,因为人都是有自怜的情绪,什么加班到天亮,学习到通宵之类的,如果这些都算得上努力的话,那富士康流水线上每一个人都比你出色的多了,你只是看起来比较努力

    • 外在:

      我比较推崇的是外在的影响,比如你可以先问一下你自己想要什么,你可以给自己先定一个小目标,比如先挣一个亿(哈哈,玩笑),虽说人不能好高骛远,但是如果你连想都不敢相,那谈何做呢?汉高祖以前泗水亭长,朱元璋还是个和尚,你自己想是你自己的事,又碍不着别人,干嘛不去多想想,我并不觉得一个人拥有远大且看似不可及的梦想会有多荒诞,相反,他会给你无尽的动力,不过你要是只是光想想,然后呢?就没然后了,那你也就光想想就好了,千万别说出来哈,除了这些,你还可以看下你喜欢,推崇的人的一些演讲和视频,吸收点正能量,又或者每天上微信喝点纯正的鸡汤,很多人对这些不屑一顾,其实我们生活的四周到处都是鸡汤,到处都是梦想,何不借力用力给自己给一点正能量呢?在学习知识这件事情上,一定要“不择手段”,学到的才是你自己的!

    大学没有那么多奋斗史

    进入大学之后,我就意识到一个比较严重的问题了,牛人太多,没点泡妞的技术怎么行呢?听说妹子喜欢技术男?excuse me?好吧,我扯淡的,我对Android怀着无限的遐想,毕竟高中的时候搞机了三年,可能也算是比较早的接触了Android,从1.6开始就开始鼓捣,那个时候,天涯还在,天网也在,现在如果说我大天网,其实没多少人会记起,那个时候对romer充满了憧憬,感觉好高大上啊,于是学习怎么去反编译,怎么去官改,怎么去移植,条件有限,苦涩难懂,当时还买了本很厚很厚的《JAVA核心思想》忘记了卷几来着,当时就下了一个决定,大学好好学习,可是…..嘿嘿,往事不堪回首!

    我看到太多的博客大牛,都有一个大学的奋斗史,而我并没有,可能看起来是比别人更加努力,然而这些又不能说明什么,班上的几个小同学,都发展的非常不错,都是很厉害的人,我其实在想,如果自己不去争强好胜,不去当什么班长,不去当什么学生会主席,也许可以再刻苦一点,没准还能更前进一步,当然,这些都是后话,就像现在这样,每天下班之后,回到家继续Coding基本上还会持续四到五个小时,要是说给别人听,他们肯定会说你太勤奋了,而在我大学的时候,基本上除了上课就是Coding,那岂不是
    上天了,然而这些太片面,比我熬到更晚的同学大有人在!千万不要被自己感动,这就是我上面提到的自怜情绪!不付出怎么可能会有收获呢?你说是吧!

    写博客给我带来了什么好处

    我一直坚持写博客,包括这篇也会发布在博客里,其实我是非常推荐大家去写博客,而且是用心的去排版,写目录,撰文,发布,但是千万不要为了其他的东西而写,那些都是非常没有意义的东西,就比如我看到有些小同学,看到一些大牛推荐写博客,就立马心血来潮,就把自己的代码段复制粘贴上去发表了。然后回头就把链接发到群里来了,“你看,我也有写博客”,这其实就是典型的不清楚写博客到底是为了什么,在我看来,写博客是一件共赢的事情,首先你对自己技术的梳理,整理逻辑,又能分享给其他人看,何乐而不为呢?不是有那么一句话:“独乐乐不如众乐乐”吗?所有,我创建了一个群:555974449,我觉得和大家一起分享,讨论就是一件很有意思的事情,所有,我收获了很多很好的朋友,博客写多了,思考的问题也就多了,会一步步来,自己写出来的东西别人能一看就懂才是最好的一种逻辑状态,这样对我以后解决问题,为人处世,都可以有条理性,有针对性的去解决,这是非常大的帮助,而且对知识的探索越来越多,也就越能发现自己哪一块不是很了解,就比如上面我所说的诸葛亮式的学习方法,后来我还是选择重新学习了一遍JAVA和Android的基础,这也算是对我自己的告诫。所有,也就有了这个JAVA之旅

    JAVA之旅(三十五)——完结篇,终于把JAVA写完了,真感概呐!

    和这个通往Android的神奇之旅的系列视频

    通往Android的神奇之旅

    有时候收获,不要光看有形的,也要去看无形的收获,博客写多了,对自己的技术要求也越来越高了,自己提升的也很快,也找到一份自己比较满意的工作,这些收获是看不见,摸不着,但是确确实实都是存在的!

    对学习态度的建议

    学习方法可以后面讲或者不讲,但是学习态度是一定要讲,你可以学习的慢,你也可以领悟的慢,但是你一定要有始有终,就比如你今天想学习这个知识点,或者这个框架,那你就去找资料,看文章,看文档,不要一看到一大堆的文档和复杂的配置就不想去看了,如果你真想学,你就慢慢的看,但是你一定不要吝啬你的时间,当你成功的写出了一个demo来的话,你就get到一个新的技能了,如果你能用博客把他记录下来,就又加深了印象,也帮助了他人了!

    Read The Fucking Source Code

    阅读源码的重要性,就不需要我强调了,这里我帮你分清下概念,何谓源码?我以前问过来我公司的面试者,他们很大一部分回答的是google的Android源码,这让我比较诧异,源码就是指编写的最原始程序的代码,你每天写的代码,给别人看,这就是你的源码,所有,如果你在github上看到比较出色的项目,或者很有意思的小动画或者小技巧,不妨clone下来看看他们怎样写的,这也是人家的源码,当然,,确实现在看源码大多数人会想到Android的源码,如果你有一定的基础,你可以去下一份来,不需要看得特别详细,慢慢来,比较快,比如应用安装的过程,比如应用启动的过程,这些都是很有意思的知识点,希望你可以明白这一点,他不仅能帮你扩展思维,还能对你的工作有很大程度的帮助!下载源码比较庞大,这里体检几个在线可以查看源码的网站:

    快速成长的办法

    所谓的快速成长的办法并不是没有,但凡可以看到的成功例子,无外乎就是:熬夜通宵,如果时间对等的话,你如何远超别人?靠天分还是靠智力?别搞笑了,比你牛X的人比你还努力呢,这真是一个不争的时事,如何能够逆袭就是看你自己的努力了,放下就周末和休闲的时间去coding吧,没有丝毫捷径,宝宝不哭站起来继续撸!

    嘻嘻,其实说这么多就是告诉大家一个道理:学而不思则罔 思而不学则殆

    这里推荐几个学习网站,是比较赞的:

    当然还有我们最佳的Google API文档,这个就自行翻墙了

    PS,再次声明,我是男的,不是妹子….

    快来一起玩耍吧:555974449


    点击关注我的新浪微博

    QQ邮箱:748778890@qq.com

    Google邮箱:liuguilin74@gmail.com

    博客地址:http://blog.csdn.net/qq_26787115


    我的公众号,期待你的关注

    weixin

    展开全文
  • Android学习感想一

    2012-09-04 20:30:08
     我想学习Android,我想从事与Android相关的事情,我决定明确目标、制定计划、立刻行动。  或许会有人问,你为什么学习Android?我答曰,因为我喜欢,所以我选择;因为我选择,所以我坚守。或许会有人问,你如何...

            想到什么就做什么,想到哪里就去哪里,随心所欲,无拘无束。

          我想学习Android,我想从事与Android相关的事情,我决定明确目标、制定计划、立刻行动。

          或许会有人问,你为什么学习Android?我答曰,因为我喜欢,所以我选择;因为我选择,所以我坚守。或许会有人问,你如何学习Android?我答曰:学习方法千万条,寻找到适合自己的就是最好的。我一方面请教高人、牛人,另一方面,积极发挥主观能动性,自我学习、自我思考、自我实践。我想,持久的热情、谦虚的学习、空杯的心态、不懈的努力,一定能够做成事情,也一定能够达成目标。

           我想,当你决定跟人学习技艺的时候,学习之前请把自己当做一无所知、一无所有,以一张白纸去设计、布局和填写内容,一点一滴地累积,伴随着一张张白纸不再空白,预示着你在这项技艺上一点点增进。因此,指导之人所传授的需要细心体味,指导之人所交待的需要用心完成。

           指导之人给了我一个Java代码库,包括了100个Java实例,他让我从实例6开始照着原样敲打所有实例代码。我没有质问,欣然接受,并且告诉自己在规定的期限里面完成这个任务。我认为,通过这样的练习,一是可以训练准确而快速地敲打代码,二是可以平息内心的浮躁,三是可以欣赏专业人士的编码风格,四是可以增加我对代码的敏感度。

           学习和使用好Java语言,是学习和应用Android技术的重要基础。因此,对于Java语言中的重要知识,例如类与对象、抽象类与接口、IO与流、GUI、多线程、异常处理和网络编程等,应该知其原理,懂其应用,同时,还要重视各个知识点之间关联与综合和面向对象设计与编程思想的理解与领悟。Android技术涉及到很多设计模式的应用,因此,对于基于Java语言的经典设计模式也需要有所认识和实践。有时候,一些理论不是那么好把握,但是,不要灰心泄气,相反,更要知难而上,勇于实践,通过反复地编码、调试和变通,促进理解和抓住本质。

           我喜欢Android,我有一颗不断学习和不断更新的心。有些人说,技术枯燥乏味;又有些人说,技术晦涩难懂;还有些人说,技术前途未仆。我想说,不管是技术,还是其它的,感受的差异取决于个人的定位与认知。因此,在做任何事情之前,问问自己,为什么要做?做这件事情的意义何在?做这件事情预期的结果会怎么样?做这件事情需要什么?总之,不管是对于技术,还是对于生活中别的,当下一切都是最好的安排,好好珍惜、好好耕耘。

         

    展开全文
  • 学习Android一点心得

    2019-06-15 19:14:55
    学习Android开发断断续续有两年多了,而真正认真学习也就这两三个月,所以思前想后觉得有必要写下心得记录下,希望能给后来人有一定的参考作用。 刚开始接触Android时,主要是从网上下载的文档,也忘记看了些什么...
  • Android 2007年被Google收购...想要深入学习Android 应该去Google的官网下载软件和一些学习资料,在中国也有一个Android中文网,可以去看看(目前中国区域搜索的Google官网是香港的服务器,并非Google本部的服务器)...
  • Android 学习心得体会

    2014-04-26 16:22:33
    学习Android开发的过程中遇到了不少的问题,所幸的是最终经过上网查询都得到了解决。现在将我在学习Android开发过程中遇到的一些问题及解决的方法整理如下。 1.R.java不能实时更新  问题描述:在res文件中...
  • Android学习心得(二)

    2018-11-25 15:32:37
    Android存储方式 存储偏好设置 持久化数据:使应用程序运行时需要长期保存一些数据。 SharePreferences对象、文件和 SQLite数据库来存储这些持久化数据 存取活动的偏好设置 SharePreferences类属于Android....
  • Android学习心得

    2012-11-10 18:07:04
    Android学习心得 研究android也有一段时间了,单从知识点来说,也撑握了不少东西,却从未在网上发布过任何东西。为了让喜欢android的新手们(其实我也是新 手)少走弯路,从现在起,我会把我总结的(更多是整理的...
  • 我也把我摸索的过程分享给大家,希望能对其他想涉足android的朋友有所帮助,也请各路大牛对我的学习进行指导指正。 我在研究android之前只知道想开发手机程序的话可以选择android,但这东西是用java开发的,心里...
  • 差不多就是这样了
  • 学习Android开发的时候,一直是跟着团队在做项目,但是没有一个系统的学习结构,导致感觉自己哪里都有错误,哪里都不会,前几天买了本书,准备系统学习Android开发,下面记录学习中的相关心得,如果有什么不对的...
  • Android学习心得第三课

    2016-02-25 22:18:00
    今天学习Android的一个重要的控件listview,最近的学习状态和前几天相比,下降的还是比较明显的,这里要给自己提一个醒,千里之行始于足下,后面一定要珍惜时间,戒骄戒躁。 下面来对listview进行一个总结,...
  • android studio 学习心得

    2015-11-23 01:30:25
    首先得感觉是Android Studio+Genymotion的组合比以前好用太多了。以前我记得eclipse要加各种jar包,文件夹也混乱的很。 然后是关于Activity和布局、控件,感觉跟网页前端很像,布局和控件就是CSS+HTML,Activity则...
  • Android 初级学习心得

    2019-06-13 03:19:31
    学完JAVAEE 后 带着纠结的心学习Android 初级阶段,说实话对于初学者来说,我学的JAVAEE 并不好,也就是基础不牢,,所以说我很纠结。截至到今天 学习Android三天了,跟学习JAVA来说,套句步步高电读机的广告台词:...
  • Android Studio 系统学习心得第一天 一 新建的activity自带的xml文件用的是约束性布局,怎么改? 选中第二行的 android.support.constraint.ConstraintLayout删除,然后打上你想用的布局文件,记住不要删除前面的&...
  • Android学习心得(一)——绘图文章分类:移动开发做java的都知道,绘图肯定首先需要一个Canvas,然后在用Graphics在上面绘制自己想要图案。不错,Android上面也类似,你可以从一个Bitmap得到它的Canvas,进行绘制,...
  • 接触android开发整整两周,一直利用下班时间学习这方面的内容。在这段时间里主要以《第一行代码Android》为教材进行学习,这本书写的调理清晰,通俗易懂,让我在这短短的半个月时间里,对Android开发有了一个比较...
  • cocos2d android学习心得

    2016-08-17 11:18:17
    CCDirector 是继承Renderer的接口, public void setRenderer(Renderer renderer) {  checkRenderThreadState(); ... if (mEGLConfigChooser == null) { ... mEGLConfigChooser = new SimpleEGL
1 2 3 4 5 ... 20
收藏数 12,083
精华内容 4,833