オープンソースプロジェクトを入手し、興味のある機能コードを迅速に特定

2985 ワード

http://drakeet.me/quickly-locate-the-function-code
今ますます多くのオープンソースプロジェクトが増えて、コレクションに暇がなくて、时には相手のあるfeatureが特に好きだと思っているだけで、多くの人はそのコードを開けて半日探して肝心なところが見つからないかもしれません.実は、Android Studioが私たちに与えたいくつかの検索機能を運用すれば、新しいオープンソースコードが私たちの目の前に置かれ、興味のある機能コードを迅速に見つけることができます.
だから、今日はこの経験を共有して、世の中に幸福をもたらす2333、2つの例で説明しましょう.
一、BlackLightの「コレクション微博」機能コード
説明:BlackLightはMaterial Designのマイクロブログのお客様です.詳細は、この投稿を参照してください.Material Designのマイクロブログのお客様です. .私は一昨日そのソースコードを手に入れたので、私はその微博の情报のページの中のコレクションの微博の机能を抽出して、1つの速いコレクションの机能をしたいです......そのコードの量は小さくなくて、あなたは作者がこのページにどんなActivityという名前をつけることを知らないで、あなたはあなたがこのActivityを探し当てても、更にこの具体的な地方までどのくらいかかります(この例はoption menuに対して、もともと手動で位置決めすれば簡単ですが、ほとんどはそんなに簡単ではありません).
キーポイント1:プロジェクト全体のソースコードに対して「find in path」を行い、この機能を検索する文字列「コレクション微博」の4文字は、以下の通りです.
結果はstrings.xmlファイルで見つかりました.
キー2:このstrings.xmlファイルの「コレクション微博」の位置にダブルクリックしてカーソルを置き、マウス(またはショートカットキー)を右クリックすると「find usages」が表示され、使用されている場所が表示されます.
ああ...この「微博情報」というページを知って、作者が命名したのは「SingleActivity」です...この2、3回のクイック検索を借りなければ、あなたは考えられますか....そして、私たちは思い切って飛び越えて、SingleActivityに着いた後に直接的になりました.この機能は明らかに  onOptionsItemSelected , :それだ!
まとめ:キーは実は簡単で、手に入れるときは、まずグローバル検索(find in path)あなたが望んでいる機能の名前を探して、一般的にstrings.xmlに位置して、それからこのItemのnameに対してその使用(find usages)を探して、それが使用される場所に位置して、基本的に目標に近いです.
もし皆さんがまだはっきりしていないなら、2つ目の例を見てください.
一、EhViewerのrippleを素早く位置決めして新しいページをロードする機能:
説明:ええ、これ EhViewer まあ、紳士的なリーダーですが、私も昨日の夜友達がMDが上手だと言ってコードを見に行きました.「クリックしてもっと見て」というところがあって、クリックすると、rippleのアニメーション効果で新しいページを開いて内容が表示されて、素晴らしいと思いました.そこで、真相を探ってみましたが...
入手:依然としてグローバルを検索し、find in path 
1<stringname="click_more"> string>このclick_moreを右クリックしてfind usagesを選択し、すぐに正確に位置決めしました.
ほら、このActivityに位置づけるのはこんなに簡単で乱暴です~
過去に見てみると、ターゲットがこのアニメーション機能のコードに直接関連していないことがわかりました.ただ、このように表示されています.
1mCommentMoreText.setText(R.string.click_more);そしてあなたはこれに対して mCommentMoreText(ページ内の検索を使って、command+f)を探しても見つかりませんでした setOnClickListenerはどこにあるのか、この時もあきらめられない.目標が近いに違いないと知っているからだ.考えてみると、作者はこれについてかもしれない. mCommentMoreTextの親コンテナレイアウトでリスナーをバインドすると、
キー:findViewByIdの場所を見つけ、xmlレイアウトファイルへのジャンプを追跡
...ということでページ内検索(command+f)という mCommentMoreText、すぐにfindViewByIdにナビゲートします.
1mCommentMoreText = (TextView) findViewById(R.id.comment_more_text);commandを押してこれをクリック comment_more_text、xmlレイアウトファイルにジャンプして、親レイアウトが LinearLayout,idは detail_comment、思い切ってこのidに対して find usagesは、Javaコードの場所にジャンプします.
1mDetailComment = (LinearLayout) findViewById(R.id.detail_comment);ページ内検索 mDetailComment、やはりそれがmDetailComment.setOnTouchListener(this)にバインドされていることを手に入れました.では、次はとても直接的です.順藤は瓜を触って、私たちはすぐに行きます. onTouch(mDetailMoreですが、別の親コントロールかもしれません)、ターゲットget!:
まとめ:このラウンド、私达の肝心なのはやはりfind in path/find usagesの基础の上で、もっと多くのcommand+Fページの内で探して、普通は基本的な位置付けの后ですべて私达の手のひらを逃れることができなくて、方法は実はすべてとても简単で、一回生二回熟して、后でいかなるオープンソースのプロジェクトのコードのいかなる机能、すべて目を闭じて、急速に位置付けて、ハハハ.