android atrタグの認識

3305 ワード

システムのソースコードとソースコードを见ていると、いつもatrの使用について见ることができますが、会えばいらいらします.どういう意味ですか?今日は初歩的な勉強をしてまとめます.
まず基本的な知識を勉強します.次の二つのブログを参考にしてください.
http://googlers.iteye.com/blog/1122585
http://www.cnblogs.com/angeldevil/p/3479431.html
Butは、Android 4.4システムのsettings wifiのソースコードを見ていますが、atrの別の使い方を発見しました.今はシステムの了解ではなく、先に記録してください.
android:src=「?atr/wifignal」を見ると、これは新しい使い方で、wifi_を呼び出します.signal属性なら、wifi_signalはどこで定義されていますか?

    
    
    
    
    

    
上はwifi_です.signalの定義は、その後、themeのstyleに与えられた値で、android:src=「?atr/wifignal」に相当します.
このatrは使い方を説明しましたが、atrの使い方にも出会いました.
下はwifiですsignal_darkのファイル

    
    
上の第二篇のブログによると、私達はsettings:state_を知っています.encryped=「false」はstate_です.encrypt属性の賦値はViewではこのように使われますが、itemではこの意味ではなく、selectorがセレクタであり、state(u)であることを知っています.encryptはfalseのためのファーストアイテムであれば、trueの場合はtrueの2番目のアイテムです.
その問題が来ました.どこでstateを決めますか?encrypedはfalseですか?それともtrueですか?WifiSettingsを例にします.
    @Override
    protected void onBindView(View view) {
        super.onBindView(view);
        ImageView signal = (ImageView) view.findViewById(R.id.signal);
        if (mRssi == Integer.MAX_VALUE) {
            signal.setImageDrawable(null);
        } else {
            //             
            signal.setImageLevel(getLevel());
            //      XML android:src="?attr/wifi_signal"      
            signal.setImageDrawable(getContext().getTheme().obtainStyledAttributes(new int[] {R.attr.wifi_signal}).getDrawable(0));
            
            signal.setImageState((security != SECURITY_NONE) ? STATE_SECURED : STATE_NONE, true);
        }
    }
    private static final int[] STATE_SECURED = {
        R.attr.state_encrypted
    };
    private static final int[] STATE_NONE = {};
はsetImageStateという決定です.
理解しているところがあるかもしれません.メッセージを交換してください.これからもどんどん更新します.