• Android 博客园客户端 (一) 基本界面



     ===============================================================

    菜单main.xml

    <menu xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        tools:context="com.arlen.cnblogs.MainActivity" >
    
        <item
            android:id="@+id/action_share"
            android:icon="@drawable/ic_action_share"
            android:orderInCategory="100"
            android:showAsAction="always"
            android:title="@string/action_share">
            <menu>
                <item
                    android:id="@+id/action_share_email"
                    android:icon="@drawable/ic_action_share_email"
                    android:orderInCategory="101"
                    android:showAsAction="always"
                    android:title="@string/action_share_email"/>
                <item
                    android:id="@+id/action_share_message"
                    android:icon="@drawable/ic_action_share_message"
                    android:orderInCategory="101"
                    android:showAsAction="always"
                    android:title="@string/action_share_message"/>
                <item
                    android:id="@+id/action_share_bluetooth"
                    android:icon="@drawable/ic_action_share_bluetooth"
                    android:orderInCategory="101"
                    android:showAsAction="always"
                    android:title="@string/action_share_bluetooth"/>
                <item
                    android:id="@+id/action_share_system"
                    android:icon="@drawable/ic_action_share_system"
                    android:orderInCategory="101"
                    android:showAsAction="always"
                    android:title="@string/action_share_system"/>
            </menu>
        </item>
        <item
            android:id="@+id/action_search"
            android:icon="@drawable/ic_action_search"
            android:orderInCategory="100"
            android:showAsAction="always|collapseActionView"
            android:title="@string/action_search">
            <menu>
                <item
                    android:id="@+id/action_search_user"
                    android:icon="@drawable/ic_action_search_user"
                    android:orderInCategory="102"
                    android:showAsAction="always"
                    android:title="@string/action_search_user"/>
                <item
                    android:id="@+id/action_search_blog"
                    android:icon="@drawable/ic_action_search_blog"
                    android:orderInCategory="102"
                    android:showAsAction="always"
                    android:title="@string/action_search_blog"/>
            </menu>
        </item>
        <item
            android:id="@+id/action_refresh"
            android:icon="@drawable/ic_action_refresh"
            android:orderInCategory="100"
            android:showAsAction="always"
            android:title="@string/action_refresh"/>
    
    </menu>

    主界面布局layout_main.xml

    <android.support.v4.widget.DrawerLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/drawer_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    
        <FrameLayout
            android:id="@+id/content_frame"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />
    
        <ListView
            android:id="@+id/left_drawer"
            android:layout_width="240dp"
            android:layout_height="match_parent"
            android:layout_gravity="start"
            android:choiceMode="singleChoice"
            android:divider="@android:color/transparent"
            android:dividerHeight="0dp"
            android:background="#111"/>
    </android.support.v4.widget.DrawerLayout>

    ActivityMain.java

      1 package com.arlen.cnblogs;
      2 
      3 import com.arlen.cnblogs.fragment.AboutFragment;
      4 import com.arlen.cnblogs.fragment.BlogFragment;
      5 import com.arlen.cnblogs.fragment.HomeFragment;
      6 import com.arlen.cnblogs.fragment.NewsFragment;
      7 import com.arlen.cnblogs.fragment.SettingFragment;
      8 
      9 import android.app.Activity;
     10 import android.app.Fragment;
     11 import android.app.FragmentManager;
     12 import android.content.res.Configuration;
     13 import android.os.Bundle;
     14 import android.support.v4.app.ActionBarDrawerToggle;
     15 import android.support.v4.view.GravityCompat;
     16 import android.support.v4.widget.DrawerLayout;
     17 import android.view.Menu;
     18 import android.view.MenuInflater;
     19 import android.view.MenuItem;
     20 import android.view.View;
     21 import android.widget.AdapterView;
     22 import android.widget.ArrayAdapter;
     23 import android.widget.ListView;
     24 import android.widget.Toast;
     25 
     26 public class MainActivity extends Activity {
     27     private DrawerLayout drawerLayout;
     28     private ListView drawerList;
     29     private ActionBarDrawerToggle drawerToggle;
     30 
     31     private CharSequence drawerTitle;
     32     private CharSequence mTitle;
     33     private String[] drawerListTitles;
     34 
     35     @Override
     36     protected void onCreate(Bundle savedInstanceState) {
     37         super.onCreate(savedInstanceState);
     38         setContentView(R.layout.activity_main);
     39 
     40         mTitle = drawerTitle = getTitle();
     41         drawerListTitles = getResources().getStringArray(R.array.navigation_list);
     42         drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
     43         drawerList = (ListView) findViewById(R.id.left_drawer);
     44 
     45         // set a custom shadow that overlays the main content when the drawer opens
     46         drawerLayout.setDrawerShadow(R.drawable.drawer_shadow, GravityCompat.START);
     47         // set up the drawer's list view with items and click listener
     48         drawerList.setAdapter(new ArrayAdapter<String>(this,
     49                 R.layout.drawer_list_item, drawerListTitles));
     50         drawerList.setOnItemClickListener(new DrawerItemClickListener());
     51 
     52         // enable ActionBar app icon to behave as action to toggle nav drawer
     53         getActionBar().setDisplayHomeAsUpEnabled(true);
     54         getActionBar().setHomeButtonEnabled(true);
     55 
     56         // ActionBarDrawerToggle ties together the the proper interactions
     57         // between the sliding drawer and the action bar app icon
     58         drawerToggle = new ActionBarDrawerToggle(
     59                 this,                  /* host Activity */
     60                 drawerLayout,         /* DrawerLayout object */
     61                 R.drawable.ic_drawer,  /* nav drawer image to replace 'Up' caret */
     62                 R.string.drawer_open,  /* "open drawer" description for accessibility */
     63                 R.string.drawer_close  /* "close drawer" description for accessibility */
     64                 ) {
     65             public void onDrawerClosed(View view) {
     66                 getActionBar().setTitle(mTitle);
     67                 invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu()
     68             }
     69 
     70             public void onDrawerOpened(View drawerView) {
     71                 getActionBar().setTitle(drawerTitle);
     72                 invalidateOptionsMenu(); // creates call to onPrepareOptionsMenu()
     73             }
     74         };
     75         drawerLayout.setDrawerListener(drawerToggle);
     76 
     77         if (savedInstanceState == null) {
     78             selectItem(0);
     79         }
     80     }
     81 
     82     @Override
     83     public boolean onCreateOptionsMenu(Menu menu) {
     84         MenuInflater inflater = getMenuInflater();
     85         inflater.inflate(R.menu.main, menu);
     86         return super.onCreateOptionsMenu(menu);
     87     }
     88 
     89     /* Called whenever we call invalidateOptionsMenu() */
     90     @Override
     91     public boolean onPrepareOptionsMenu(Menu menu) {
     92         // If the nav drawer is open, hide action items related to the content view
     93         boolean drawerOpen = drawerLayout.isDrawerOpen(drawerList);
     94         menu.findItem(R.id.action_refresh).setVisible(!drawerOpen);
     95         return super.onPrepareOptionsMenu(menu);
     96     }
     97 
     98     @Override
     99     public boolean onOptionsItemSelected(MenuItem item) {
    100         
    101         if (drawerToggle.onOptionsItemSelected(item)) {
    102             return true;
    103         }
    104         
    105         int id = item.getItemId();
    106 
    107         switch (id) {
    108         case R.id.action_share:
    109             Toast.makeText(this, "分享", Toast.LENGTH_SHORT).show();
    110             return true;
    111         case R.id.action_share_email:
    112             Toast.makeText(this, "邮件分享", Toast.LENGTH_SHORT).show();
    113             return true;
    114         case R.id.action_share_message:
    115             Toast.makeText(this, "短信分享", Toast.LENGTH_SHORT).show();
    116             return true;
    117         case R.id.action_share_bluetooth:
    118             Toast.makeText(this, "蓝牙分享", Toast.LENGTH_SHORT).show();
    119             return true;
    120         case R.id.action_share_system:
    121             Toast.makeText(this, "系统分享", Toast.LENGTH_SHORT).show();
    122             return true;
    123         case R.id.action_search:
    124             Toast.makeText(this, "搜索", Toast.LENGTH_SHORT).show();
    125             return true;
    126         case R.id.action_search_user:
    127             Toast.makeText(this, "搜索博主", Toast.LENGTH_SHORT).show();
    128             return true;
    129         case R.id.action_search_blog:
    130             Toast.makeText(this, "搜索博文", Toast.LENGTH_SHORT).show();
    131             return true;
    132         case R.id.action_refresh:
    133             Toast.makeText(this, "刷新", Toast.LENGTH_SHORT).show();
    134             return true;
    135         default:
    136             return super.onOptionsItemSelected(item);
    137         }
    138     }
    139 
    140     /* The click listner for ListView in the navigation drawer */
    141     private class DrawerItemClickListener implements ListView.OnItemClickListener {
    142         @Override
    143         public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    144             selectItem(position);
    145         }
    146     }
    147 
    148     private void selectItem(int position) {
    149         // update the main content by replacing fragments
    150         Fragment fragment = null;
    151         switch (position) {
    152         case 0:
    153             fragment = new HomeFragment();
    154             break;
    155         case 1:
    156             fragment = new NewsFragment();
    157             break;
    158         case 2:
    159             fragment = new BlogFragment();
    160             break;
    161         case 3:
    162             fragment = new SettingFragment();
    163             break;
    164         case 4:
    165             fragment = new AboutFragment();
    166             break;
    167         default:
    168             fragment = new HomeFragment();
    169             break;
    170         }
    171 
    172         FragmentManager fragmentManager = getFragmentManager();
    173         fragmentManager.beginTransaction().replace(R.id.content_frame, fragment).commit();
    174 
    175         // update selected item and title, then close the drawer
    176         drawerList.setItemChecked(position, true);
    177         setTitle(drawerListTitles[position]);
    178         drawerLayout.closeDrawer(drawerList);
    179     }
    180 
    181     @Override
    182     public void setTitle(CharSequence title) {
    183         mTitle = title;
    184         getActionBar().setTitle(mTitle);
    185     }
    186 
    187     /**
    188      * When using the ActionBarDrawerToggle, you must call it during
    189      * onPostCreate() and onConfigurationChanged()...
    190      */
    191 
    192     @Override
    193     protected void onPostCreate(Bundle savedInstanceState) {
    194         super.onPostCreate(savedInstanceState);
    195         // Sync the toggle state after onRestoreInstanceState has occurred.
    196         drawerToggle.syncState();
    197     }
    198 
    199     @Override
    200     public void onConfigurationChanged(Configuration newConfig) {
    201         super.onConfigurationChanged(newConfig);
    202         // Pass any configuration change to the drawer toggls
    203         drawerToggle.onConfigurationChanged(newConfig);
    204     }
    205 }

    源码:git@github.com:ZhangTingkuo/Cnblogs.git

  • 相关阅读:
    弱鸡儿长乐爆肝旅Day8
    弱鸡儿终于没爆零Day7
    弱鸡儿长乐爆零旅Day6
    弱鸡儿长乐爆零旅Day5
    弱鸡儿长乐爆零旅Day4
    D1字符串哈希
    Tarjan算法
    弱鸡儿长乐爆零旅Day3
    弱鸡儿长乐爆零旅Day2
    弱鸡儿长乐爆零旅Day1
  • 原文地址:https://www.cnblogs.com/zhangtingkuo/p/3861157.html
Copyright © 2020-2023  润新知