Android开车第一弹-MaterialDesign设计规范

本文是Android学的一个随笔

会iOS再来学Android,一切就像行云流水一样融会贯通,从某种意义上来讲,Android比iOS简单,iOS能够实现更精细的布局,但是也更复杂。Android大条随意,这也是为什么我想学习它的原因。

本文由中南大学较为牛逼的研究生金天同学原创,欢迎转载,但是请保留这段版权信息,如果你对文章有任何疑问,欢迎微信联系我:jintianiloveu。牛逼大神一一为你解答!

自定义ToolBar

学习Android一个很重要的问题就是自定义一个美观的toolbar,而很多人不懂得设计规范,各种直接拖按钮上toolbar,太猥琐了。人家google明明有标准的规范为什么不用,非得自作聪明的乱加。 好了不多说了,自顶一个一个toolbar步骤如下: * 更改主题为NoActionBar 这是第一步,也是最重要的一步,要用toolbar,首先把Actionbar去掉。去掉的方法也很简单,直接设置styles.xml:

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="android:actionMenuTextColor">@color/colorWhite</item>
</style>

这样以来又有个问题,这里设置了主题是light,那么toolbar的文字就会变成黑色,我们进一步定义一个toolbar的theme:

<style name="ToolbarTheme" parent="@style/ThemeOverlay.AppCompat.ActionBar">
    <item name="actionMenuTextColor">@android:color/white</item>
    <item name="android:textColorPrimary">@android:color/white</item>
    <item name="android:popupMenuStyle">@style/Platform.ThemeOverlay.AppCompat.Light</item>
</style>

这里定义了toolbar主题的文字颜色。你设置了NoActionbar之后,实际上在AndroidStudio上的designer就没有ActionBar了,还需要从空间中拖入一个toolbar到actiivity_main.xml,这样的话我们就实现了,toolbar。但是只是一个toolbar我们还没有加入menu

  • 添加menu 添加menu,先不管代码,新建一个menu的布局文件,直接拖入menu即可,如果你要想menu在toolbar显示呢就设置 app:showAsAction="always" AndroidStudio现在有个好处就是都可以直接在界面上设置了,甚至不用写代码。 然后我们在activity java文件中写代码: Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); 这两行代码就设置了我们的toolbar为actionbar了。接着处理menu事件,首先导入包: import android.view.Menu; import android.view.MenuItem; 不导入包,ide不会提示你重写哪几个方法。所以还是导入一下比较好。接着我们就可以开车了: public boolean onCreateOptionsMenu(Menu menu){ getMenuInflater().inflate(R.menu.toolbar_menu, menu); return true; } public boolean onOptionsItemSelected(MenuItem item){ switch (item.getItemId()){ case R.id.settings: System.out.println("====>settings"); break; case R.id.more: System.out.println("=====>more"); break; case R.id.about: System.out.println("====>about"); break; default: break; } return true; } 这两个方法就可以实现那啥了。

使用recyclerview

学习一个移动操作系统必须得学习list的使用,在安卓中就是recyclerview,在iOS中就是tableview和collectionview。扯远了,安卓使用recyclerview其实也是很简单的。 * 在主界面中拖入一个recyclerview 这个不需要多说,有手的人都能托,而且大家的手又都这么健壮…

  • 新建一个recyclerview item的布局文件 我不得不说一下安卓跟iOS开发的巨大不同啊,iOS讲究的是精细,美观,所以布局是个很头疼的问题,而安卓就不一样,不管你怎么拖好像它都能帮你自动适配,不过安卓也很难做出iOS那样精细的页面,不过没有关系,好在我们的安卓手机屏幕都很大,加上我们的material design还是非常美观的,也非常符合这种设计语言和风格。、 布局文件随便拖入几个控件或者textview,接下来我们就写控制器来控制他们。

  • 写适配器,类似于iOS中的tableviewcellcontroller 适配器也很简单,首先你要导入包,否则不会提示你重写的方法。

    import android.content.Context;
    import android.support.v7.widget.RecyclerView;
    import android.support.v7.widget.RecyclerView.*;
    import android.view.LayoutInflater;
    

    貌似这些包都要用到。没有关系,接下来我们就重写方法了,一个完整的适配器例子如下:

    public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.MyViewHolder> {
    
    private Context context;
    private List<String> data;
    
    public RecyclerViewAdapter(Context context, List<String> data){
        this.context = context;
        this.data = data;
    }
    
    public RecyclerViewAdapter.MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType){
        View view = LayoutInflater.from(context).inflate(R.layout.list_item_layout, null);
        return new MyViewHolder(view);
    }
    
    public void onBindViewHolder(RecyclerViewAdapter.MyViewHolder holder, int position){
        String res = data.get(position);
        holder.tv1.setText("nihao");
    }
    public int getItemCount(){
        return 20;
    }
    
    
    
    class MyViewHolder extends ViewHolder{
        TextView tv1;
        public MyViewHolder(View view){
            super(view);
            tv1 = (TextView) view.findViewById(R.id.textView);
        }
    
    }
    }
    
  • 最后一部,找到recyclerview,设置适配器 最后一步很简单,直接贴代码了 ``` RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recyclerView);

ArrayList dataArray = new ArrayList(); for (int i = 1; i<50; i++){ dataArray.add(“hello”); }

LinearLayoutManager manager = new LinearLayoutManager(this); manager.setOrientation(LinearLayoutManager.VERTICAL); recyclerView.setLayoutManager(manager); recyclerView.setItemAnimator(new DefaultItemAnimator());

RecyclerViewAdapter adapter = new RecyclerViewAdapter(this, dataArray); recyclerView.setAdapter(adapter); ```

Lewis Jin avatar
About Lewis Jin
Lewis Jin is a intelligent scientist, maybe he loves make funny AI program.
comments powered by Disqus