欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

安卓編程小tips

http:://developer.android.com/design/index.html  //design guideline

成都創(chuàng)新互聯(lián)致力于互聯(lián)網(wǎng)網(wǎng)站建設(shè)與網(wǎng)站營銷,提供網(wǎng)站建設(shè)、網(wǎng)站設(shè)計、網(wǎng)站開發(fā)、seo優(yōu)化、網(wǎng)站排名、互聯(lián)網(wǎng)營銷、小程序開發(fā)、公眾號商城、等建站開發(fā),成都創(chuàng)新互聯(lián)網(wǎng)站建設(shè)策劃專家,為不同類型的客戶提供良好的互聯(lián)網(wǎng)應用定制解決方案,幫助客戶在新的全球化互聯(lián)網(wǎng)環(huán)境中保持優(yōu)勢。

xmlns:android = "http://schema.android.com/apk/res/android"

0、時刻記得維護好你的AndroidManifest.xml,很多錯誤就是它搞的...

     所有擁有id的View都能在橫豎屏切換等變換之后保留其狀態(tài)。

    Refactor->Extract->Method能將代碼提取為方法。

1、將所有的String放到values/string.xml文件中

2、public static Toast makeText ( Context context, int resId, int duration )

    其中第一個,如果是在監(jiān)聽器的匿名類中,記住不能直接this,而是activity.this,因為此時的this是指該匿名類

3、MVC

M:modle  此層封裝、管理數(shù)據(jù)對象,一般用class(p.s. UUID可以產(chǎn)生不重復的id)

C :controller 此層連接二者,是應用的邏輯層。處理view發(fā)送來的用戶行為,再在modle中做相應的操作,包括數(shù)據(jù)的更改以及傳輸。一般是Activity啥的Java文件

V : view  此層處理視圖界面,以及對用戶行為的反應(比如點擊事件),一般是從layout.xml 布局文件中加載來的

4、在變量的命名傳統(tǒng)中,我們一般加上前綴m,對于static變量,一般加上前綴s

5、圖片、xml文件資源名字必須小寫

6、在生命周期的方法里邊,注意先super.XXX()再做其他事情

7、Activity生命周期

    由OS掌控,在paused(仍然可見)或者stopped的狀態(tài)下有可能被回收掉,這時候onSaveInstanceState(...)就會被調(diào)用,這個Bundle是被OS記錄下來的(activity record),這個activity record會存留在OS中,即使整個應用都已經(jīng)被kill掉了。只有在用戶按下Back(用戶自己想關(guān)閉)、手機Reboot或者說隔了很長很長時間時,這個activity record也會被扔掉。

8、調(diào)試

    1. 直接看報錯,調(diào)到錯誤處

    2. 在你覺得有問題的函數(shù)里邊,使用Log.d(String tag, String message, Throwable) , 第三個參數(shù)直接new Exception(),這樣的話在logcat中能顯示你是在哪里調(diào)用這個函數(shù)的(但要注意不要在太多地方用,否則logcat會爆炸)

    3. 使用斷點

    4. 使用Lint,這個很厲害的

    5. 當R文件出錯冒紅時,嘗試一下方法

        1. 檢查xml文件中有沒有打錯字啥的

        2. Build -> Clean Project 或者 Sync Project

        3. 好好看看Lint的警告

        4. 棄療.......

9、 開啟新的Activity時使用被開啟的Activity的public static 函數(shù)

    e.g.    

        public static Intent newIntent(Context fromContext, Bundle data)

        {

            Intnet intent = new Intent(fromContext, selfActivity.class);

            intent.putExtras(data);//如果沒用到bundle,需要傳入key,也是在被打開的Activity處聲明private static final的String key,記得在Activity的開頭處寫明需要什么參數(shù)及其用途

            return intent;

        }

        有返回值的也是類似

10、在橫豎屏切換的時候,若橫豎屏的控件啥的不一樣,記住在代碼中要進行判斷(該控件是否為空,etc)

11、ActivityManager管理一個Activity的棧,存在于OS中,在它看來任何應用中的Activity都是一樣的

12、版本兼容控制

在app/build.gradle,更改后需要Sync一下gradle(一般似乎也是會自動Sync的)

    Minimum SDK version:設(shè)備的版本低于它時,拒絕安裝(當使用高于此版本的功能時,一般Lint是會提醒的)

    Target SDK version:顧名思義

    Compile SDK version:這個決定了Compiler用的是什么版本的SDK

判斷版本是否滿足要求:

    if(Build.VERSION.SDK_INT >= bUILD.VERSION_CODES.LOLLIPOP)

    {...}//前者為設(shè)備的版本,第二個為用到的功能的版本,具體要看是哪個功能(目前最新為LOLLIPOP


13、關(guān)于Fragment

    1. 所有界面(包括M與V的連接)都用Fragment來寫,不要用Activity(繼承自FragmentActivity,它只用于把Fragment召喚出來,而Fragment的生命周期也是由Activity掌控的,一般用FrameLayout來做container),原因:不這樣強迫自己,你永遠不會想要去用Fragment的,因為它確實很蛋疼——一個Activity不要使用超過3個Fragment,否則你的代碼會亂得讓你分分鐘想自行了斷(小的組成部分直接用控件就好了)


    2. 用android.support.v4.app.Fragment而不是內(nèi)置的那個(android.app.Fragment),因為support庫更新更快。注意要用support library的話,需要在Project Structure哪里添加dependency。(v4的4說明支持的最低版本是4,而Fragment本身是到API 11才出來的,這也說明用support library的話向前兼容性更強)


    3. 一個Fragment同樣包含一個layout文件和一個Java文件(繼承自Fragment,有倆版本,別選錯),跟Activity很像,而且Fragment也是有onSaveInstanceState(Bundle)的。FragmentManager用getSupportFragmentManager()。


    4. 其生命周期基本上是與Activity的一樣的

        public View onCreatView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)

            第二個參數(shù)是放置該Fragment的容器。

        LayoutInflater.inflate(...)

            第一個參數(shù)是布局文件的id,第二個是container,第三個是選擇是否在此時就把這個Fragment給放上去(一般選false,因為我們是動態(tài)地放上去的)


    5. 可以用fragmentManager.findFragmentById(container)來找出這個容器里放置的Fragment。


    6. 當重復性的創(chuàng)建開啟fragment(或者其他事情)的時候,考慮創(chuàng)建一個abstract class,這樣簡潔很多


    7. 兩個Activity之間的Fragment的傳值可以:

        1. 直接借助其寄居的Activity來實現(xiàn),用getActivity(),但是這樣的話,接受值的Fragment必須要使用其寄居的Activity的key才能獲取,這樣破壞了Fragment的encapsulation;

        2. 這種方法適用于任意兩個Fragment(一個或兩個Activity中皆可),我們將使用Fragment的argument。在接受參數(shù)的Fragment的構(gòu)造函數(shù)中,就規(guī)定好要傳入一個bundle,調(diào)用Fragment.setArguments(Bundle),然后返回該Fragment實例。取出時則用getArguments()。


    8. 同一個Activity之間的Fragment的傳值可以:

        1. 仍然是使用Intent,以及Fragment.onActivityResult(...)。

        2. 在第一個Fragment中就掉用第二個Fragment的setTargetFragment(第一個.this,requestCode),將第二個目標制定為自己,這個很像startActivityForResult(...)。而在第二個Fragment中將結(jié)果發(fā)送回來時要自己手動調(diào)用getTargetFragment().onActivityResult(getTargetRequestCode(),resultCode,intent);


14、dp是density-independent pixel,即大小是一定的;

        sp是scale-independent pixel,多考慮了user的字體大小,所以一般用它來描述text的size

        

15、先把同一級控件都分配好空間,剩下的控件再用于layout_weight的分配


16、使用單例模式是很好的。將類的constructor設(shè)為private,只在類的public static的獲取單例的函數(shù)中調(diào)用。當然啦,這個單例就是我們的類,要設(shè)為private static的。但是不要濫用單例來存儲全局變量,什么都放進去會讓你的代碼跟shi一樣,讓人搞不懂你那變量是用在哪里干什么的,也就是說破壞了封裝性。


17、RecyclerView:一個很棒的呈現(xiàn)列表的東西。它能回收利用資源,比如說,我們要展示100個item,那我們其實沒必要為100個item都創(chuàng)建View,只需要屏幕上呈現(xiàn)的那些有View就好了——RecyclerView就給我們做到了這點,它回收利用那些已經(jīng)跑出屏幕的那些item的View (實際上ListView也可以回收,但是太老了,而且不靈活,無動畫,修改數(shù)據(jù)很麻煩)

    ViewHolder:作為item的View的存放者

        e.g.

            public class ListItemHolder extends RecyclerView.ViewHolder

            {

                public ImageView mPicture;


                public ListItemHolder(View itemView)//這里這個View就是由Adapter給的,布局文件

                {

                    super(view);

                    mPicture = (ImageView)itemView.findViewById(R.id.xxx);

                }

            }

    

    Adapter:作為RecyclerView與其所展示的data之間的Controller,它做了兩點:一是create the necessary ViewHolders,二是將ViewHolder與modle層的數(shù)據(jù)相連接。類的定義是:private class xxxAdapter extends RecycleView.Adapter<Holder>{...}作為RecycleView的內(nèi)部類.

    當數(shù)據(jù)被改動需要重新加載時,使用Adapter.notifyDataSetChanged(),但這個是全部加載;使用notigyItemChanged(int position)就只更新一個。


    首先,RecyclerView向Adapter詢問一共多少項,getItemCount();接著,它調(diào)用Adapter的createViewHolder(ViewGroup parent,int)創(chuàng)建一個ViewHolder以及一個要展示的view(如果要自定義View的話就在這里把布局文件傳進去,

    return new xxxViewHolder( LayoutInflater.from( getActivity() ).inflater(布局,parent ,false);

此時view中尚未有數(shù)據(jù)),當create出來的ViewHolder足夠用時,就不再create了,回收即可;最后,它調(diào)用了onBindViewHolder(ViewHolder,int position),然后Adapter根據(jù)這個position找到數(shù)據(jù)將其填充到剛剛那個view中去。

    注意,RecyclerView在使用前必須先調(diào)用setLayoutManager(...),否則崩潰。這個LayoutManager就是被叫來把item放到合適位置上的。


18、ViewPager

    不使用FrameLayout了,轉(zhuǎn)用ViewPager來承載Fragment。ViewPager也是需要配置Adapter的,一般使用PagerAdapter的子類FragmentStatePagerAdapter(其構(gòu)造函數(shù)需要傳入一個FragmentManager作為參數(shù)...),并重寫getCount()和getItem(int)——返回一個Fragment  這兩個方法。

    找到你要展示的那一項,然后調(diào)用ViewPager.setCurrentItem(int index),否則每次都從頭開始。


    當你想要讓ViewPager顯示非Fragment的時候,你就需要自己實現(xiàn)PagerAdapter了。主要是3個方法:

        1、public Object instantiateItem(ViewGroup container, int position)

        2、public void destroyItem(ViewGroup container, int position, Object object)

        3、public abstract boolean isViewFromObject(View view, Object object)


19、AlertDialog(Dialog.AlertDialog的一個子類)

    最好是將這個AlertDialog作為一個DialogFragment來實現(xiàn)(這樣的話能將這個Dialog交給FragmentManager去管理,切換屏幕方向什么的之后它也能被重新create)——重寫其onCreateDialog(Bundle)方法。再顯現(xiàn)這個DialogFragment的時候,要調(diào)用其實例的show(FragmentManager,String tag)方法。如果使用onCreateView(Bundle),則需要自己實現(xiàn)全部布局,但是可以使用startActivityForResult(...)來傳參。

    在Dialog中調(diào)用setView(View),可以設(shè)置Dialog中間部分的視圖。

新聞標題:安卓編程小tips
文章起源:http://aaarwkj.com/article38/godssp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供自適應網(wǎng)站、搜索引擎優(yōu)化、定制網(wǎng)站、電子商務品牌網(wǎng)站制作、網(wǎng)站設(shè)計公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁設(shè)計公司
中文字幕精品高清中国| 色哟哟视频在线免费观看| 蜜桃av在线播放视频| 99热这里只有精品网址| 亚洲免费观看视频一区二区三区| 麻豆影片在线免费观看| 亚洲精品你懂的av在线| 快播av手机在线播放| 超碰在线免费视频97| 青青草国产成人自拍视频在线观看 | 一区二区精品人妻av| 97水蜜桃视频在线观看| 午夜精品国产日韩欧美在线| 国产区av中文字幕在线观看| 麻豆国产原创av色哟哟| 亚洲一区二区三区日本久久| 日韩黄片免费观看大全| 亚洲 综合 久久久| 天天做日日干夜夜操| 欧美一区二区三区中文字幕| 国产91啦中文在线观看| 夜夜草av一区二区三区| 日韩黄色一级免费在线观看| 日韩少妇人妻一区二区| 中文字幕成人乱码亚洲| 花花草草寻亲记在哪里免费看| 丝袜美腿一区二区三区动态图| 国产日韩欧美亚洲中文国| 日韩精品中文字幕免费人妻| 2020亚洲欧美日韩在线| 日韩人妻中文字幕乱码一区| 91色综合久久久久婷婷| 国产精品一区二区国产激情久久| 日本2区3区视频在线观看| 国产精品一区二区剧情熟女| 国产精品自拍午夜福利| 亚洲一区成人精品在线| 亚洲av永久国产剧情| 日韩高清中文字幕在线| 欧美国产一级二级三级| 精品视频美女肉体亚洲|