在手机开发中,我们会遇到这样的问题,要在手机屏幕上显示很多信息,但是手机屏幕就那么小一点,当内容较多的时候如何显示呢,我们如何理用更有限的空间来显示更多的信息呢?我们可以使用安卓系统提供的SlidingDrawer类,使用SlidingDrawer类我们就可以借助SlidingDrawer实现抽屉效果,这就是传说中的安卓抽屉效果,下面看参考代码,以下代码经本站亲测,读者可以拷贝到Eclipse项目中运行。下面直接贴出代码。

首先看一下运行效果:

 

开始新建项目,首先准备几张图片,如下:
      1.handle_normal.png  下载
      2.handle_focused.png  下载
      3.handle_pressed.png  下载
      4.list_selector_background_pressed.png  下载

以上图片均放置在drawable-hdpi/drawable-ldpi/drawable-mdpi/drawable-xhdpi中。

然后我们来看代码如何写:

1.在es/drawable目录下定义一个资源文件handle.xml,参考代码如下:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android=http://schemas.android.com/apk/res/android>;
    <item android:state_window_focused="false"  android:drawable="@drawable/handle_normal" />
    <item android:state_focused="true" android:drawable="@drawable/handle_focused" />
    <item android:state_pressed="true" android:drawable="@drawable/handle_pressed" />
</selector>

2.在es/drawable目录下定义一个资源文件listview_selected.xml,参考代码如下:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android=http://schemas.android.com/apk/res/android>;
    <item android:state_pressed="true"
          android:drawable="@drawable/list_selector_background_pressed" />
</selector>

3.main.xml文件中的参考代码:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android=http://schemas.android.com/apk/res/android
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
 <SlidingDrawer 
     android:id="@+id/slidingdrawer" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:orientation="horizontal" 
     android:handle="@+id/handle" 
     android:content="@+id/content"> 
      <Button 
             android:id="@+id/handle" 
             android:layout_width="wrap_content" 
             android:layout_height="fill_parent" 
             android:background="@drawable/handle"  />
       <ListView
          android:id="@+id/content"
          android:layout_width="fill_parent" 
             android:layout_height="wrap_content" />
 </SlidingDrawer>
</LinearLayout>

4.在res/layout文件家中新建listview_layout.xml,文件参考代码:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android=http://schemas.android.com/apk/res/android
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#ffffff"    > 
    <LinearLayout
     android:orientation="vertical"
     android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:background="@drawable/listview_selected"
        android:padding="6px">
 <TextView
  android:id="@+id/webName" 
     android:layout_width="fill_parent"
     android:layout_height="wrap_content"
     android:textSize="20px"
     android:textColor="#000000"/>
 <TextView
  android:id="@+id/webDescript" 
     android:layout_width="fill_parent"
     android:layout_height="wrap_content"
     android:textSize="16px"
     android:textColor="#000000"/>
     </LinearLayout>
</LinearLayout>

5.对应java文件(本例是AndroidSlidingDrawerActivity.java)的参考代码:

public class AndroidSlidingDrawerActivity extends Activity {
    private ListView myListView;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        setupViews();
    }
    private void setupViews(){
        myListView = (ListView)findViewById(R.id.content);
        myListView.setAdapter(new ListViewAdapter());
    }
    private class ListViewAdapter extends BaseAdapter{
       //这里返回10行,ListView有多少行取决于getCount()方法
       @Override
       public int getCount() {
          return 10;
       }
       @Override
       public Object getItem(int arg0) {
          return null;
       }
       @Override
       public long getItemId(int arg0) {
          return 0;
       }
       @Override
       public View getView(int position, View v, ViewGroup parent) {
          final LayoutInflater inflater = LayoutInflater.from(getApplicationContext());
          if(v == null){
              v = inflater.inflate(R.layout.listview_layout, null);
          }   
          TextView myWebName = (TextView)v.findViewById(R.id.webName);
          TextView myWebDescript = (TextView)v.findViewById(R.id.webDescript);
          myWebName.setText("Android开发学习网" + position);
          myWebDescript.setText("slidingdrawer用法详解" + position);
          return v;
       }
    }
}

运行即可看到效果.

***************************************************************************************************************************
      在使用ListView的时候,常常用到Android自带的list布局,即simple_list_item_1、simple_list_item_2、simple_list_item_checked等。初次用起来,难免有点云里雾里。下面,就这几种list布局,做一些简单介绍:

注:适配器选用SimpleAdapter

main.xml 如下:

[html] view plaincopyprint?
  1. <span style="font-size:18px;"><?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="fill_parent"
  4. android:layout_height="fill_parent"
  5. android:orientation="vertical" >
  6. <ListView
  7. android:id="@+id/android:list"
  8. android:layout_width="fill_parent"
  9. android:layout_height="wrap_content"/>
  10. <TextView
  11. android:id="@+id/android:empty"
  12. android:layout_width="wrap_content"
  13. android:layout_height="wrap_content"
  14. android:text="对不起,没有数据显示"/>
  15. </LinearLayout></span>

包含一个id="@+id/android:list"的ListView和id="@+id/android:empty"的TextView,当ListView没有数据显示时,TextView显示出来,同时ListView会被影藏(貌似在ListActivity中才有此效果,在Activity中必须自行设置);

一、simple_list_item_1(单行显示)

此布局显示最为简单,其中只有一个TextView,id为:android.R.id.text1,直接上代码:

[java] view plaincopyprint?
  1. <span style="font-size:18px;">public class ListViewDemo extends ListActivity {
  2. private List<Map<String, String>> data = new ArrayList<Map<String,String>>();
  3. @Override
  4. public void onCreate(Bundle savedInstanceState) {
  5. super.onCreate(savedInstanceState);
  6. setContentView(R.layout.main);
  7. Map<String, String> map1 = new HashMap<String, String>();
  8. map1.put("姓名", "风晴雪");
  9. data.add(map1);
  10. Map<String, String> map2 = new HashMap<String, String>();
  11. map2.put("姓名", "悭臾");
  12. data.add(map2);
  13. setListAdapter(new SimpleAdapter(this,data,android.R.layout.simple_list_item_1,
  14. new String[]{"姓名"},            //每行显示一个姓名
  15. new int[]{android.R.id.text1}   //名字在text1上显示
  16. ));
  17. }</span>

上图:

二、simple_list_item_2、two_line_list_item(双行显示)

两种布局很相似,都有两个TextView:android.R.id.text1和android.R.id.text2,不同之处在于,前者两行字是不一样大小的,而后者

中两行字体一样大小,这里使用前者作为示例,两者的用法一样。先看simple_list_item_2.xml 布局文件:

[html] view plaincopyprint?
  1. <TwoLineListItem xmlns:android="http://schemas.android.com/apk/res/android"
  2. android:paddingTop="2dip"
  3. android:paddingBottom="2dip"
  4. android:layout_width="match_parent"
  5. android:layout_height="wrap_content"
  6. android:minHeight="?android:attr/listPreferredItemHeight"
  7. android:mode="twoLine"
  8. >
  9. <TextView android:id="@android:id/text1"
  10. android:layout_width="match_parent"
  11. android:layout_height="wrap_content"
  12. android:layout_marginLeft="6dip"
  13. android:layout_marginTop="6dip"
  14. android:textAppearance="?android:attr/textAppearanceLarge"
  15. />
  16. <TextView android:id="@android:id/text2"
  17. android:layout_width="match_parent"
  18. android:layout_height="wrap_content"
  19. android:layout_below="@android:id/text1"
  20. android:layout_alignLeft="@android:id/text1"
  21. android:textAppearance="?android:attr/textAppearanceSmall"
  22. />
  23. </TwoLineListItem>

simple_list_item_2用法跟simple_list_item_1相同,看代码:

[java] view plaincopyprint?
  1. public class ListViewDemo extends ListActivity {
  2. private List<Map<String, String>> data = new ArrayList<Map<String,String>>();
  3. @Override
  4. public void onCreate(Bundle savedInstanceState) {
  5. super.onCreate(savedInstanceState);
  6. setContentView(R.layout.main);
  7. Map<String, String> map1 = new HashMap<String, String>();
  8. map1.put("姓名", "风晴雪");
  9. map1.put("性别", "女的");
  10. data.add(map1);
  11. Map<String, String> map2 = new HashMap<String, String>();
  12. map2.put("姓名", "悭臾");
  13. map2.put("性别", "公的");
  14. data.add(map2);
  15. Map<String, String> map3 = new HashMap<String, String>();
  16. map3.put("姓名", "百里屠苏");
  17. map3.put("性别", "男的");
  18. data.add(map3);
  19. setListAdapter(new SimpleAdapter(this,data,android.R.layout.simple_list_item_2,
  20. new String[]{"姓名","性别"},            //每行显示一组姓名和性别
  21. new int[]{android.R.id.text1,android.R.id.text2}   //名字在text1上显示,性别在text2上显示
  22. ));
  23. }
  24. }

上图:simple_list_item_2

two_line_list_item

三、simple_list_item_single_choice、simple_list_item_multiple_choice、simple_list_item_checked(不同的呈现方式)

        这三种布局增加了选项,有单选和多选模式。常用方法为setChoiceMode(),getCheckedItemPositions(),getCheckedItemIds();

       

[java] view plaincopyprint?
  1. setListAdapter(new SimpleAdapter(this,data,android.R.layout.simple_list_item_multiple_choice,
  2. new String[]{"姓名"},            //每行显示一组姓名
  3. new int[]{android.R.id.text1}   //名字在text1上显示
  4. ));
  5. /*表明有选项,若不设置,缺省为none,则点击后没有反应
  6. * 选项模式有:CHOICE_MODE_SINGLE  单选--ListView中只能有一个item被选中
  7. * CHOICE_MODE_MULTIPLE  多选--允许选中多个item
  8. * CHOICE_MODE_NONE  缺省
  9. */
  10. getListView().setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);

上图:依次为simple_list_item_multiple_choice、simple_list_item_single_choice、simple_list_item_checked格式

关于ListView未完!

(((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((
前面总结了如何应用android自带的布局到ListView中去,现在如果想让自己的ListView更生动,只需要将自己定义的布局应用到ListView中,在布局中添加一些生动的元素,比如,图标。

一、为ListView每个item添加一个图标

先看效果:

首先定义一个entry.xml布局文件:

[html] view plaincopyprint?
  1. <span style="font-size:18px;">
  2. <?xml version="1.0" encoding="utf-8"?>
  3. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  4. android:layout_width="fill_parent"
  5. android:layout_height="60dp"
  6. android:orientation="horizontal" >
  7. <!-- 图标 -->
  8. <ImageView
  9. android:layout_width="48dp"
  10. android:layout_height="48dp"
  11. android:src="@drawable/preview"
  12. android:layout_gravity="center"
  13. android:layout_marginLeft="10dp"
  14. />
  15. <!-- 这里引用android自带的布局simple_list_item_1 -->
  16. <include
  17. layout="@android:layout/simple_list_item_1"
  18. />
  19. </LinearLayout>
  20. </span>

然后将此布局文件应用到ListView中去:

[java] view plaincopyprint?
  1. <span style="font-size:18px;">
  2. public class ListViewDemo extends ListActivity {
  3. private List<Map<String,String>> data = new ArrayList<Map<String,String>>();
  4. @Override
  5. public void onCreate(Bundle savedInstanceState) {
  6. super.onCreate(savedInstanceState);
  7. setContentView(R.layout.main);
  8. Map<String, String> map1 = new HashMap<String, String>();
  9. map1.put("姓名", "A君");
  10. data.add(map1);
  11. Map<String, String> map2 = new HashMap<String, String>();
  12. map2.put("姓名", "B君");
  13. data.add(map2);
  14. setListAdapter(new SimpleAdapter(this,data,R.layout.entry,
  15. new String[]{"姓名"},
  16. new int[]{android.R.id.text1}
  17. ));
  18. }
  19. </span>

二、动态设置图标

以上例子,处理的非常简单,全部图标都一样,现在要想动态设置每个item中元素,需要继承Adapter子类,通过重写getView()函数,为每个item都设置不同的风格。

下面创建BaseAdapter的子类MyAdapter:

[java] view plaincopyprint?
  1. <span style="font-size:18px;">
  2. private class MyAdapter extends SimpleAdapter{
  3. //icons存储图标的id
  4. private int[] icons = null;
  5. private Context context;
  6. public MyAdapter(Context context, List<? extends Map<String, ?>> data,
  7. int resource, String[] from, int[] to,int[] icons) {
  8. super(context, data, resource, from, to);
  9. // TODO Auto-generated constructor stub
  10. this.icons = icons;//传入存储图标id的数组
  11. this.context = context;
  12. }
  13. /* (non-Javadoc)
  14. * 重写getView函数,由于SimpleAdapter能处理TextView,仅仅是不能设置图标
  15. */所以,只需要在调用父类的getView函数的基础上,设置上相应的图标即可
  16. @Override
  17. public View getView(int position, View convertView, ViewGroup parent) {
  18. // TODO Auto-generated method stub
  19. ViewHolder holder = null;
  20. if(convertView == null){
  21. holder = new ViewHolder();
  22. convertView = super.getView(position, convertView, parent);//调用父类的getView函数,设置TextView
  23. holder.imageView = (ImageView)convertView.findViewById(R.id.myimageview);
  24. convertView.setTag(holder);
  25. }else {
  26. holder = (ViewHolder)convertView.getTag();
  27. }
  28. //从icons中随机选出一个,并设置作为item的图标
  29. Random random = new Random();
  30. int index = random.nextInt(icons.length);
  31. holder.imageView.setImageResource(icons[index]);
  32. return convertView;
  33. }
  34. private class ViewHolder{
  35. ImageView imageView;
  36. }
  37. }
  38. </span>

MyAdapter继承自SimpleAdapter,重写getView()函数,使listView中每个item的图标都是随机选择的。对MyAdapter的应用如下:

[html] view plaincopyprint?
  1. <span style="font-size:18px;">
  2. //数组存储图标id
  3. private int[] myicons = { R.drawable.preview,R.drawable.preview1,R.drawable.preview2,R.drawable.preview3};
  4. </span>
[html] view plaincopyprint?
  1. <span style="font-size:18px;">
  2. setListAdapter(new </span><span style="font-size:18px;color:#FF0000;">MyAdapter</span><span style="font-size:18px;">(this, data, R.layout.entry, new String[]{"姓名"},
  3. new int[]{android.R.id.text1},</span><span style="font-size:18px;color:#FF0000;"> myicons</span><span style="font-size:18px;">));//为ListView设置MyAdapter适配器
  4. </span>

上图:

(((********************************************************************************************
  ExpandableListView是一个two-level列表视图,一级目录可以展开显示出第二级目录,手机QQ联系人列表的实现效果就可以通过ExpandableListView来实现。现在来做一个ExpandableListView的Demo:

首先,要准备两个布局文件groups.xml和childs.xml来分别表示一级目录和二级目录视图:

一级目录groups.xml:

[html] view plaincopyprint?
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="fill_parent"
  4. android:layout_height="60dp"
  5. android:orientation="vertical" >
  6. <TextView
  7. android:id="@+id/mytextview_groups"
  8. android:layout_width="fill_parent"
  9. android:layout_height="60dp"
  10. android:paddingLeft="40dp"
  11. android:gravity="center_vertical"
  12. />
  13. </LinearLayout>

二级目录childs.xml:

[html] view plaincopyprint?
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="fill_parent"
  4. android:layout_height="60dp"
  5. android:orientation="vertical" >
  6. <TextView
  7. android:id="@+id/mytextview_childs"
  8. android:layout_width="fill_parent"
  9. android:layout_height="60dp"
  10. android:paddingLeft="10dp"
  11. android:gravity="center_vertical"
  12. />
  13. </LinearLayout>

这里两级目录均只是显示一个TextView。接下来,main.xml布局文件如下:

[html] view plaincopyprint?
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width="fill_parent"
  4. android:layout_height="fill_parent"
  5. android:orientation="vertical" >
  6. <ExpandableListView
  7. android:id="@android:id/list"
  8. android:layout_width="fill_parent"
  9. android:layout_height="fill_parent"
  10. />
  11. </LinearLayout>

然后,需要提供Adapter来为可折叠列表提供数据和视图,这里实现MyExpandableListAdapter继承自BaseExpandableListAdapter基类,主要重写两个主要方法getChildView和getGroupView,具体实现如下:

[java] view plaincopyprint?
  1. /**MyExpandableListAdapter继承自BaseExpandableListAdapter,
  2. * 为ExpandableListView提供数据和视图,一级视图和二级视图均只显示
  3. * 一个TextView
  4. * @author Administrator
  5. */
  6. public class MyExpandableListAdapter extends BaseExpandableListAdapter {
  7. private Context context;
  8. //一级目录数据
  9. private List<String> groups;
  10. //二级目录数据
  11. private List<List<String>> childs;
  12. public MyExpandableListAdapter(Context context,List<String> groups,List<List<String>> childs){
  13. this.context = context;
  14. this.groups = groups;
  15. this.childs = childs;
  16. }
  17. public Object getChild(int arg0, int arg1) {
  18. // TODO Auto-generated method stub
  19. return childs.get(arg0).get(arg1);
  20. }
  21. public long getChildId(int groupPosition, int childPosition) {
  22. // TODO Auto-generated method stub
  23. return childPosition;
  24. }
  25. /* (non-Javadoc)返回二级视图,包含一个TextView
  26. */
  27. public View getChildView(int groupPosition, int childPosition,
  28. boolean isLastChild, View convertView, ViewGroup parent) {
  29. TextView childTextView = null;
  30. if(convertView == null){
  31. convertView = LayoutInflater.from(context).inflate(R.layout.childs, null);
  32. }
  33. childTextView = (TextView)convertView.findViewById(R.id.mytextview_childs);
  34. childTextView.setText(childs.get(groupPosition).get(childPosition));
  35. return convertView;
  36. }
  37. public int getChildrenCount(int groupPosition) {
  38. // TODO Auto-generated method stub
  39. return childs.get(groupPosition).size();
  40. }
  41. public Object getGroup(int groupPosition) {
  42. // TODO Auto-generated method stub
  43. return groups.get(groupPosition);
  44. }
  45. public int getGroupCount() {
  46. // TODO Auto-generated method stub
  47. return groups.size();
  48. }
  49. public long getGroupId(int groupPosition) {
  50. // TODO Auto-generated method stub
  51. return groupPosition;
  52. }
  53. /* (non-Javadoc)一级视图,也只包含一个TextView
  54. */
  55. public View getGroupView(int groupPosition, boolean isExpanded,
  56. View convertView, ViewGroup parent) {
  57. TextView groupTextView = null;
  58. if(convertView == null){
  59. convertView = LayoutInflater.from(context).inflate(R.layout.groups, null);
  60. }
  61. groupTextView = (TextView)convertView.findViewById(R.id.mytextview_groups);
  62. groupTextView.setText(groups.get(groupPosition));
  63. return convertView;
  64. }
  65. public boolean hasStableIds() {
  66. // TODO Auto-generated method stub
  67. return false;
  68. }
  69. public boolean isChildSelectable(int groupPosition, int childPosition) {
  70. // TODO Auto-generated method stub
  71. return true;
  72. }
  73. }

最后,Activity中实现如下:

[java] view plaincopyprint?
  1. public class ExpandableListViewDemo extends Activity {
  2. private ExpandableListView expandableListView = null;
  3. private List<String> groups = new ArrayList<String>();
  4. private List<List<String>> childs = new ArrayList<List<String>>();
  5. @Override
  6. public void onCreate(Bundle savedInstanceState) {
  7. super.onCreate(savedInstanceState);
  8. setContentView(R.layout.main);
  9. expandableListView = (ExpandableListView)findViewById(android.R.id.list);
  10. groups.add("朋友");
  11. groups.add("同学");
  12. groups.add("同事");
  13. List<String> friends = new ArrayList<String>();
  14. friends.add("小明");
  15. friends.add("小红");
  16. friends.add("小强");
  17. childs.add(friends);
  18. List<String> classmates = new ArrayList<String>();
  19. classmates.add("甲");
  20. classmates.add("乙");
  21. classmates.add("丙");
  22. childs.add(classmates);
  23. List<String> colleagues = new ArrayList<String>();
  24. colleagues.add("A君");
  25. colleagues.add("B君");
  26. colleagues.add("C君");
  27. childs.add(colleagues);
  28. expandableListView.setAdapter(new MyExpandableListAdapter(ExpandableListViewDemo.this, groups, childs));
  29. }
  30. }

上图:

安卓开发SlidingDrawer实现抽屉效果相关推荐

  1. android textview抽屉滑动,Android SlidingDrawer 滑动抽屉效果

    效果如上图,想必大家已经在很多应用中看到过了,下面来看看用SlidingDrawer 实现滑动抽屉效果 从Android1.5开始,加入了android.widget.SlidingDrawer类 S ...

  2. [安卓开发]弹幕滚幕效果自定义View之BarrageView|支持点击事件|隐藏不滞留|颜色随机|大小速度范围随机

    安卓弹幕滚幕效果自定义View之BarrageView|支持点击事件|隐藏不滞留|颜色随机|大小速度范围随机 1.简介 项目地址: https://github.com/tpnet/BarrageVi ...

  3. 50个Android开发人员必备UI效果源码[转载]

    Android 仿微信之主页面实现篇 Android 仿微信之界面导航篇 Android 高仿QQ 好友分组列表 Android 高仿QQ 界面滑动效果 Android 高仿QQ 登陆界面 Andro ...

  4. 50个Android开发人员必备UI效果源码

    2019独角兽企业重金招聘Python工程师标准>>> Android 仿微信之主页面实现篇 Android 仿微信之界面导航篇 Android 高仿QQ 好友分组列表 Androi ...

  5. 安卓开发中非常炫的效果集合

    安卓开发中非常炫的效果集合 这几天开发的时候,想做一些好看而且酷炫的特效,于是又开始从网上收集各种特效资源.下面给大家一些我喜欢的把,附代码,喜欢的看源代码,然后加到自己项目去把!! 一个开源项目网站 ...

  6. iOS开发之抽屉效果实现

    说道抽屉效果在iOS中比较有名的第三方类库就是PPRevealSideViewController.一说到第三方类库就自然而然的想到我们的CocoaPods,今天的博客中用CocoaPods引入PPR ...

  7. iOS开发之抽屉效果

    2019独角兽企业重金招聘Python工程师标准>>> 在显示在窗口的控制器上添加三个view(如果只需要往一边滑动就只加2个view) 先声明三个view #import &quo ...

  8. android 实现抽屉效果

    android的UI开发确实是一件很有趣的事情,也是一件很有挑战性的事情. 本文章是将自己在开发中的项目中使用到的比较好的抽屉效果的原理以及代码整理后写上来的,以备忘记后可以查阅 抽屉效果的原理很简单 ...

  9. 安卓开发笔记——自定义广告轮播Banner(实现无限循环)

    关于广告轮播,大家肯定不会陌生,它在现手机市场各大APP出现的频率极高,它的优点在于"不占屏",可以仅用小小的固定空位来展示几个甚至几十个广告条,而且动态效果很好,具有很好的用户& ...

最新文章

  1. pg数据库开启远程连接_如何运行远程客户端连接postgresql数据库
  2. mysql数据库可以升级吗_[数据库]MySQL升级
  3. 移动前端开发之viewport,devicePixelRatio的深入理解
  4. poj3253 优先队列
  5. 让你不再害怕指针的应用-全程仿真+注解(第二部分数组)
  6. MariaDB 10的复制 集群 高可用搭建 大表拆分【持续更新中】
  7. minio 授予永久访问权限_应对 iOS 14 权限管理 应用手把手教你打开“所有照片”权限...
  8. 机器学习算法总结--K均值算法
  9. 振子天线三维方向图 matlab仿真,1阵列天线方向图的MATLAB实现
  10. 谷歌 CEO 发全员公开信:今年将放缓招聘速度
  11. 高中必备学习软件_10个适合高中生学习的网站amp;软件,完全免费,9科全覆盖!...
  12. Flutter视图基础简介--Widget、Element、RenderObject
  13. java 转 utp-8,utf8和不同的utp8有何不同?
  14. CCF NOI1066 素数对
  15. 雀巢联手京东,发布人工智能家庭营养健康助手
  16. Bex5登陆端口异常
  17. python什么字体好看_玩转python字体
  18. AURIX TC397 ASCLIN UART
  19. /proc/config.gz 是什么
  20. 7-1 过河 (15分) Java实现

热门文章

  1. 快讯:飞书玩家大会线上举行;微信支付推出“教培服务工具箱”
  2. 清醒认识数据第一步,把关数据质量
  3. mysql 每个分类前十名_一文解决所有MySQL分类排名问题
  4. 面向Web服务的游戏设计1:选择适合的Silverlight通信技术
  5. oa系统服务器地址怎么查,如何查询oa服务器地址
  6. 美通企业日报 | 牛文文称明年创业要弯腰干脏活累活;高校百英里接力赛北大清华同济前三...
  7. Windows 自启动文件夹
  8. C++ 内存泄漏调试
  9. Markdown操作之表格操作(插入,单元格内换行,居左、居右、居中)
  10. PTA 6-6 使用函数计算两个复数之积