首页 > 代码库 > 低版本系统兼容的ActionBar(三)自定义Item视图+进度条的实现+下拉导航+透明ActionBar

低版本系统兼容的ActionBar(三)自定义Item视图+进度条的实现+下拉导航+透明ActionBar

      

一、自定义MenuItem的视图

custom_view.xml (就是一个单选按钮)

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="wrap_content"    android:layout_height="fill_parent"    android:gravity="left|center_vertical"    android:orientation="horizontal"    >    <RadioGroup        android:id="@+id/radio_nav"        android:orientation="horizontal"        android:layout_width="fill_parent"        android:layout_height="wrap_content"    >        <RadioButton            android:text="Custom"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:textColor="#ffffff"        />        <RadioButton            android:text="View!"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:textColor="#ffffff"        />    </RadioGroup></LinearLayout>

 

MainActivity.java

//Inflate the custom view        View customNav = LayoutInflater.from(this).inflate(R.layout.custom_view, null);        //Bind to its state change        ((RadioGroup)customNav.findViewById(R.id.radio_nav)).setOnCheckedChangeListener(new OnCheckedChangeListener() {            @Override            public void onCheckedChanged(RadioGroup group, int checkedId) {                Toast.makeText(MainActivity.this, "Navigation selection changed.", Toast.LENGTH_SHORT).show();            }        });        //Attach to the action bar        getSupportActionBar().setCustomView(customNav);        getSupportActionBar().setDisplayShowCustomEnabled(true);

 

二、添加圆形模糊进度的进度条

package com.kale.actionbar02;import android.os.Bundle;import android.support.v7.app.ActionBarActivity;import android.view.LayoutInflater;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.view.Window;import android.widget.RadioGroup;import android.widget.RadioGroup.OnCheckedChangeListener;import android.widget.Toast;public class MainActivity extends ActionBarActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        supportRequestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);        setContentView(R.layout.activity_main);        //设置actionbar上面显示进度条,true表示显示,如果是false表示不显示        setSupportProgressBarIndeterminateVisibility(true);//Attach to the action bar        getSupportActionBar().setCustomView(customNav);        getSupportActionBar().setDisplayShowCustomEnabled(true);    }}

 

三、添加有进度的横向进度条

package com.kale.actionbar02;import android.os.Bundle;import android.os.Handler;import android.support.v7.app.ActionBarActivity;import android.view.View;import android.view.Window;public class MainActivity extends ActionBarActivity {    private int mProgress = 100;    Handler mHandler = new Handler();    Runnable mProgressRunner = new Runnable() {        @Override        public void run() {            mProgress += 2;            // Normalize our progress along the progress bar‘s scale            int progress = (Window.PROGRESS_END - Window.PROGRESS_START) / 100* mProgress;            setSupportProgress(progress);            if (mProgress < 100) {                mHandler.postDelayed(mProgressRunner, 50);            }        }    };    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        supportRequestWindowFeature(Window.FEATURE_PROGRESS);        setContentView(R.layout.activity_main);        // 设置actionbar上面显示进度条,true表示显示,如果是false表示不显示        //setSupportProgressBarVisibility(true);//设置初始状态是否显示进度条,一般我们不显示。在用的时候再显示它        findViewById(R.id.button_id).setOnClickListener(                new View.OnClickListener() {                    @Override                    public void onClick(View arg0) {                        if (mProgress == 100) {                            mProgress = 0;                            mProgressRunner.run();                        }                    }                });    }}

 

四、添加下拉导航+悬浮模式

给ActionBar添加下拉导航的方法都是添加一个适配器,可以使简单的ArrayAdapter,也可以使SpinnerAdapter,添加完数据后再绑定个监听器。其实和Spinner没啥太大的区别。悬浮模式是可以让布局文件从ActionBar底下通过,可以实现透明效果。其代码就一行:

 

     // 设置ActionBar为悬浮的,就是说悬浮在布局文件上        supportRequestWindowFeature(Window.FEATURE_ACTION_BAR_OVERLAY);

 注意看一下布局的,上边距。是用的ActionBar的高度来指定的

<?xml version="1.0" encoding="utf-8"?><FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="fill_parent"    android:layout_height="fill_parent">    <ScrollView        android:layout_width="fill_parent"        android:layout_height="fill_parent">        <LinearLayout            android:layout_width="fill_parent"            android:layout_height="wrap_content"            android:paddingLeft="10dp"            android:paddingRight="10dp"            android:paddingTop="?actionBarSize"            android:orientation="vertical">            <TextView                android:id="@+id/bunch_of_text"                android:layout_width="fill_parent"                android:layout_height="wrap_content" />        </LinearLayout>    </ScrollView></FrameLayout>

 

下面是下拉导航的代码:

package com.kale.actionbar02;import android.content.Context;import android.os.Bundle;import android.support.v7.app.ActionBar;import android.support.v7.app.ActionBar.OnNavigationListener;import android.support.v7.app.ActionBarActivity;import android.view.Window;import android.widget.ArrayAdapter;import android.widget.TextView;import android.widget.Toast;public class MainActivity extends ActionBarActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        // 设置ActionBar为悬浮的,就是说悬浮在布局文件上        supportRequestWindowFeature(Window.FEATURE_ACTION_BAR_OVERLAY);        setContentView(R.layout.activity_main);        // 将ActionBar的操作模型设置为NAVIGATION_MODE_LIST        getSupportActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);        getSupportActionBar().setTitle(null);        Context context = getSupportActionBar().getThemedContext();        ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(                context, R.array.locations,                android.R.layout.simple_spinner_dropdown_item);        getSupportActionBar().setListNavigationCallbacks(adapter,                new DropDownListenser());        // Load partially transparent black background        getSupportActionBar().setBackgroundDrawable(                getResources().getDrawable(R.drawable.bar_color));        TextView bunchOfText = (TextView) findViewById(R.id.bunch_of_text);        bunchOfText.setText(builder.toString());    }    /**     * 实现 ActionBar.OnNavigationListener接口     */    class DropDownListenser implements OnNavigationListener {        // 得到和Adapter里一致的字符数组        String[] listNames = getResources().getStringArray(R.array.locations);        @Override        public boolean onNavigationItemSelected(int itemPosition, long itemId) {            Toast.makeText(getApplicationContext(), listNames[itemPosition], 0)                    .show();            return false;        }    }   }

 

values/array.xml

<?xml version="1.0" encoding="utf-8"?><resources>    <string-array name="locations">        <item>Home</item>        <item>Email</item>        <item>Calendar</item>        <item>Browser</item>        <item>Clock</item>    </string-array></resources>

 

 

全部的代码:

 

package com.kale.actionbar02;import android.content.Context;import android.os.Bundle;import android.support.v7.app.ActionBar;import android.support.v7.app.ActionBar.OnNavigationListener;import android.support.v7.app.ActionBarActivity;import android.view.Window;import android.widget.ArrayAdapter;import android.widget.TextView;import android.widget.Toast;public class MainActivity extends ActionBarActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        // 设置ActionBar为悬浮的,就是说悬浮在布局文件上        supportRequestWindowFeature(Window.FEATURE_ACTION_BAR_OVERLAY);        setContentView(R.layout.activity_main);        // 将ActionBar的操作模型设置为NAVIGATION_MODE_LIST        getSupportActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);        getSupportActionBar().setTitle(null);        Context context = getSupportActionBar().getThemedContext();        ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(                context, R.array.locations,                android.R.layout.simple_spinner_dropdown_item);        getSupportActionBar().setListNavigationCallbacks(adapter,                new DropDownListenser());        // Load partially transparent black background        getSupportActionBar().setBackgroundDrawable(                getResources().getDrawable(R.drawable.bar_color));        StringBuilder builder = new StringBuilder();        for (int i = 0; i < 3; i++) {            for (String dialog : DIALOGUE) {                builder.append(dialog).append("\n\n");            }        }        TextView bunchOfText = (TextView) findViewById(R.id.bunch_of_text);        bunchOfText.setText(builder.toString());    }    /**     * 实现 ActionBar.OnNavigationListener接口     */    class DropDownListenser implements OnNavigationListener {        // 得到和Adapter里一致的字符数组        String[] listNames = getResources().getStringArray(R.array.locations);        @Override        public boolean onNavigationItemSelected(int itemPosition, long itemId) {            Toast.makeText(getApplicationContext(), listNames[itemPosition], 0)                    .show();            return false;        }    }    public static final String[] DIALOGUE = new String[] {            "So shaken as we are, so wan with care,"                    + "Find we a time for frighted peace to pant,"                    + "And breathe short-winded accents of new broils"                    + "To be commenced in strands afar remote."                    + "No more the thirsty entrance of this soil"                    + "Shall daub her lips with her own children‘s blood;"                    + "Nor more shall trenching war channel her fields,"                    + "Nor bruise her flowerets with the armed hoofs"                    + "Of hostile paces: those opposed eyes,"                    + "Which, like the meteors of a troubled heaven,"                    + "All of one nature, of one substance bred,"                    + "Did lately meet in the intestine shock"                    + "And furious close of civil butchery"                    + "Shall now, in mutual well-beseeming ranks,"                    + "March all one way and be no more opposed"                    + "Against acquaintance, kindred and allies:"                    + "The edge of war, like an ill-sheathed knife,"                    + "No more shall cut his master. Therefore, friends,"                    + "As far as to the sepulchre of Christ,"                    + "Whose soldier now, under whose blessed cross"                    + "We are impressed and engaged to fight,"                    + "Forthwith a power of English shall we levy;"                    + "Whose arms were moulded in their mothers‘ womb"                    + "To chase these pagans in those holy fields"                    + "Over whose acres walk‘d those blessed feet"                    + "Which fourteen hundred years ago were nail‘d"                    + "For our advantage on the bitter cross."                    + "But this our purpose now is twelve month old,"                    + "And bootless ‘tis to tell you we will go:"                    + "Therefore we meet not now. Then let me hear"                    + "Of you, my gentle cousin Westmoreland,"                    + "What yesternight our council did decree"                    + "In forwarding this dear expedience.",            "Hear him but reason in divinity,"                    + "And all-admiring with an inward wish"                    + "You would desire the king were made a prelate:"                    + "Hear him debate of commonwealth affairs,"                    + "You would say it hath been all in all his study:"                    + "List his discourse of war, and you shall hear"                    + "A fearful battle render‘d you in music:"                    + "Turn him to any cause of policy,"                    + "The Gordian knot of it he will unloose,"                    + "Familiar as his garter: that, when he speaks,"                    + "The air, a charter‘d libertine, is still,"                    + "And the mute wonder lurketh in men‘s ears,"                    + "To steal his sweet and honey‘d sentences;"                    + "So that the art and practic part of life"                    + "Must be the mistress to this theoric:"                    + "Which is a wonder how his grace should glean it,"                    + "Since his addiction was to courses vain,"                    + "His companies unletter‘d, rude and shallow,"                    + "His hours fill‘d up with riots, banquets, sports,"                    + "And never noted in him any study,"                    + "Any retirement, any sequestration"                    + "From open haunts and popularity.",            "I come no more to make you laugh: things now,"                    + "That bear a weighty and a serious brow,"                    + "Sad, high, and working, full of state and woe,"                    + "Such noble scenes as draw the eye to flow,"                    + "We now present. Those that can pity, here"                    + "May, if they think it well, let fall a tear;"                    + "The subject will deserve it. Such as give"                    + "Their money out of hope they may believe,"                    + "May here find truth too. Those that come to see"                    + "Only a show or two, and so agree"                    + "The play may pass, if they be still and willing,"                    + "I‘ll undertake may see away their shilling"                    + "Richly in two short hours. Only they"                    + "That come to hear a merry bawdy play,"                    + "A noise of targets, or to see a fellow"                    + "In a long motley coat guarded with yellow,"                    + "Will be deceived; for, gentle hearers, know,"                    + "To rank our chosen truth with such a show"                    + "As fool and fight is, beside forfeiting"                    + "Our own brains, and the opinion that we bring,"                    + "To make that only true we now intend,"                    + "Will leave us never an understanding friend."                    + "Therefore, for goodness‘ sake, and as you are known"                    + "The first and happiest hearers of the town,"                    + "Be sad, as we would make ye: think ye see"                    + "The very persons of our noble story"                    + "As they were living; think you see them great,"                    + "And follow‘d with the general throng and sweat"                    + "Of thousand friends; then in a moment, see"                    + "How soon this mightiness meets misery:"                    + "And, if you can be merry then, I‘ll say"                    + "A man may weep upon his wedding-day.",            "First, heaven be the record to my speech!"                    + "In the devotion of a subject‘s love,"                    + "Tendering the precious safety of my prince,"                    + "And free from other misbegotten hate,"                    + "Come I appellant to this princely presence."                    + "Now, Thomas Mowbray, do I turn to thee,"                    + "And mark my greeting well; for what I speak"                    + "My body shall make good upon this earth,"                    + "Or my divine soul answer it in heaven."                    + "Thou art a traitor and a miscreant,"                    + "Too good to be so and too bad to live,"                    + "Since the more fair and crystal is the sky,"                    + "The uglier seem the clouds that in it fly."                    + "Once more, the more to aggravate the note,"                    + "With a foul traitor‘s name stuff I thy throat;"                    + "And wish, so please my sovereign, ere I move,"                    + "What my tongue speaks my right drawn sword may prove.",            "Now is the winter of our discontent"                    + "Made glorious summer by this sun of York;"                    + "And all the clouds that lour‘d upon our house"                    + "In the deep bosom of the ocean buried."                    + "Now are our brows bound with victorious wreaths;"                    + "Our bruised arms hung up for monuments;"                    + "Our stern alarums changed to merry meetings,"                    + "Our dreadful marches to delightful measures."                    + "Grim-visaged war hath smooth‘d his wrinkled front;"                    + "And now, instead of mounting barded steeds"                    + "To fright the souls of fearful adversaries,"                    + "He capers nimbly in a lady‘s chamber"                    + "To the lascivious pleasing of a lute."                    + "But I, that am not shaped for sportive tricks,"                    + "Nor made to court an amorous looking-glass;"                    + "I, that am rudely stamp‘d, and want love‘s majesty"                    + "To strut before a wanton ambling nymph;"                    + "I, that am curtail‘d of this fair proportion,"                    + "Cheated of feature by dissembling nature,"                    + "Deformed, unfinish‘d, sent before my time"                    + "Into this breathing world, scarce half made up,"                    + "And that so lamely and unfashionable"                    + "That dogs bark at me as I halt by them;"                    + "Why, I, in this weak piping time of peace,"                    + "Have no delight to pass away the time,"                    + "Unless to spy my shadow in the sun"                    + "And descant on mine own deformity:"                    + "And therefore, since I cannot prove a lover,"                    + "To entertain these fair well-spoken days,"                    + "I am determined to prove a villain"                    + "And hate the idle pleasures of these days."                    + "Plots have I laid, inductions dangerous,"                    + "By drunken prophecies, libels and dreams,"                    + "To set my brother Clarence and the king"                    + "In deadly hate the one against the other:"                    + "And if King Edward be as true and just"                    + "As I am subtle, false and treacherous,"                    + "This day should Clarence closely be mew‘d up,"                    + "About a prophecy, which says that ‘G‘"                    + "Of Edward‘s heirs the murderer shall be."                    + "Dive, thoughts, down to my soul: here"                    + "Clarence comes.",            "To bait fish withal: if it will feed nothing else,"                    + "it will feed my revenge. He hath disgraced me, and"                    + "hindered me half a million; laughed at my losses,"                    + "mocked at my gains, scorned my nation, thwarted my"                    + "bargains, cooled my friends, heated mine"                    + "enemies; and what‘s his reason? I am a Jew. Hath"                    + "not a Jew eyes? hath not a Jew hands, organs,"                    + "dimensions, senses, affections, passions? fed with"                    + "the same food, hurt with the same weapons, subject"                    + "to the same diseases, healed by the same means,"                    + "warmed and cooled by the same winter and summer, as"                    + "a Christian is? If you prick us, do we not bleed?"                    + "if you tickle us, do we not laugh? if you poison"                    + "us, do we not die? and if you wrong us, shall we not"                    + "revenge? If we are like you in the rest, we will"                    + "resemble you in that. If a Jew wrong a Christian,"                    + "what is his humility? Revenge. If a Christian"                    + "wrong a Jew, what should his sufferance be by"                    + "Christian example? Why, revenge. The villany you"                    + "teach me, I will execute, and it shall go hard but I"                    + "will better the instruction.",            "Virtue! a fig! ‘tis in ourselves that we are thus"                    + "or thus. Our bodies are our gardens, to the which"                    + "our wills are gardeners: so that if we will plant"                    + "nettles, or sow lettuce, set hyssop and weed up"                    + "thyme, supply it with one gender of herbs, or"                    + "distract it with many, either to have it sterile"                    + "with idleness, or manured with industry, why, the"                    + "power and corrigible authority of this lies in our"                    + "wills. If the balance of our lives had not one"                    + "scale of reason to poise another of sensuality, the"                    + "blood and baseness of our natures would conduct us"                    + "to most preposterous conclusions: but we have"                    + "reason to cool our raging motions, our carnal"                    + "stings, our unbitted lusts, whereof I take this that"                    + "you call love to be a sect or scion.",            "Blow, winds, and crack your cheeks! rage! blow!"                    + "You cataracts and hurricanoes, spout"                    + "Till you have drench‘d our steeples, drown‘d the cocks!"                    + "You sulphurous and thought-executing fires,"                    + "Vaunt-couriers to oak-cleaving thunderbolts,"                    + "Singe my white head! And thou, all-shaking thunder,"                    + "Smite flat the thick rotundity o‘ the world!"                    + "Crack nature‘s moulds, an germens spill at once,"                    + "That make ingrateful man!" };}

 

源码下载:http://download.csdn.net/detail/shark0017/7688143