美文网首页
8.《第一行代码》笔记三

8.《第一行代码》笔记三

作者: 为梦想战斗 | 来源:发表于2017-10-15 18:58 被阅读0次

十二、Material Design
1.Toolbar
在values/styles.xml中修改主题,把Theme.AppCompat.Light.DarkActionBar修改为Theme.AppCompat.Light.NoActionBar。
修改xml文件:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="?attr/colorPrimary"
        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
        android:popupTheme="@style/ThemeOverlay.AppCompat.Light"

</FrameLayout>

修改MainActivity文件:

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toolbar toolbar = (Toolbar)findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
    }
}

修改标题栏:
在Manifest中activity增加:android:label="Bob"

增加按钮:在res中新建menu文件夹,然后新建menu resource file:toolbar.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android"
      xmlns:app="http://schemas.android.com/apk/res-auto">

    <item
        android:id="@+id/backup"
        android:title="Backup"
        app:showAsAction="always" />
    <item
        android:id="@+id/delete"
        android:title="Delete"
        app:showAsAction="ifRoom" />
    <item
        android:id="@+id/settings"
        android:title="Settings"
        app:showAsAction="never" />
</menu>

 @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.toolbar,menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case R.id.backup:
                Toast.makeText(this,"haha",Toast.LENGTH_SHORT).show();
                break;
            case R.id.delete:
                Toast.makeText(this,"hahaha",Toast.LENGTH_SHORT).show();
                break;
            case R.id.settings:
                Toast.makeText(this,"heihei",Toast.LENGTH_SHORT).show();
                break;
            default:
        }
        return true;
    }

2、滑动菜单
DrawerLayout:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >


    <android.support.constraint.ConstraintLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent">

         <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:background="?attr/colorPrimary"
            android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
            app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize" />

    </android.support.constraint.ConstraintLayout>
    <TextView
        android:text="hahaha"
        android:gravity="start"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

</android.support.v4.widget.DrawerLayout>

mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
        ActionBar actionBar = getSupportActionBar();
        if (actionBar != null) {
            actionBar.setDisplayHomeAsUpEnabled(true);
            //actionBar.setHomeAsUpIndicator(R.drawable.ic_launcher_background);
        }

public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case android.R.id.home:
                mDrawerLayout.openDrawer(GravityCompat.START);
                break;

NavigationView:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <group android:checkableBehavior="single" >
        <item android:id="nav_call"
              android:title="Call" />
        <item android:id="nav_friends"
              android:title="Friends" />
        <item android:id="@+id/nav_loction"
              android:title="Location" />
    </group>
</menu>

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
                android:layout_width="match_parent"
                android:layout_height="match_parent">

    <TextView
        android:id="@+id/mail"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>

    <TextView
        android:id="@+id/username"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
</LinearLayout>

 <android.support.design.widget.NavigationView
        android:id="@+id/nav_view"
        app:menu="@menu/nav_menu"
        app:headerLayout="@layout/nav_header"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

    </android.support.design.widget.NavigationView>

</android.support.v4.widget.DrawerLayout>

NavigationView navView = (NavigationView) findViewById(R.id.nav_view);
        navView.setCheckedItem(R.id.nav_call);
        navView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
            @Override
            public boolean onNavigationItemSelected(@NonNull MenuItem item) {
                mDrawerLayout.closeDrawer();
                return true;
            }
        });

FloatingActionButton

<android.support.design.widget.FloatingActionButton
            android:id="@+id/fab"
            android:src="@mipmap/ic_launcher"
            android:layout_gravity="bottom|end"
            android:layout_margin="16dp"
            app:elevation="8dp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(MainActivity.this,"haha",Toast.LENGTH_SHORT).show();
            }
        });

Snackbar:

 Snackbar.make(v,"Data deleted",Snackbar.LENGTH_SHORT)
                        .setAction("Undo", new View.OnClickListener() {
                            @Override
                            public void onClick(View v) {
                                     Toast.makeText(MainActivity.this,"haha",Toast.LENGTH_SHORT).show();
                            }
                        })
                        .show();

CoordinatorLayout

CardView

AppBarLayout

SwipeRefreshLayout

CollapsingtoobatLayout

利用系统状态栏空间:android:fitSystemWindows="true"

十三、开发技巧:全局获取Context、Intent传递对象、日志类

  1. 全局获取Context
    创建Application类:
public class MyApplication extends Application{
private static Context context;
@override
public void onCreate(){
context = getApplicationContext();
}
public static Context getContext(){
return context;
}
}

在Manifest中application标签中初始化:
android:name="com.lewanjiang.test.MyApplication"

使用Context:
MyApplication.getContext()

如果使用LitePal和百度地图,这种配置过application的库时,可将MyApplication中修改:在onCreate方法中添加一句:
LitePalApplication.initialize(context);

2.用Intent传递对象
2.1 Serializable:

public class Book implements Serializable{ private String name;private String author;...}
Book book.setName("bob")...setAuthor
intent.putExtra("tran_data",book);

获取:

Book book=(Book)getIntent().getSerizlizableExtra("tran_data");

2.2 Parcelable:

public class Book implements Parcelable {
 name,author...
@Override
public int describeContents() {return 0;}
@Override
public void writeToParcel(Parcel dest,int flags) {
dest.writeString(name);
dest.writeInt(author);
}
public static final Parcelable.Creator<Book> CREATOR=new Parcelable.Creator<Book>() {
@Override
public Book createFromParcel(Parcel source) {
Book person = new Book();
book.name = source.readString();
book.author = source.readInt();
return person;
}
@Override
public Person[] newArray(int size) {
return new Person[size];
}
};

发送和上面一样,接收变为:

getIntent().getParcelableExtra("tran_data");

3.定制日志:

public class LogUtil {
public static final int VERBOSE = 1;
public static final int DEBUG = 2;
INFO = 3;WARN=4;ERROR=5;NOTHING=6;
public static int level = VERBOSE;
public static void v(String tag,String msg){if(level<=VERBOSE) Log.v(ta,msg); }
} 

4.调试
加断点

5.定时任务
Alarm机制
Doze模式

6.多窗口模式编程

7.Lambda表达式

十四、开发酷欧天气

相关文章

网友评论

      本文标题:8.《第一行代码》笔记三

      本文链接:https://www.haomeiwen.com/subject/heicuxtx.html