精华内容
下载资源
问答
  • android v7依赖

    2017-12-06 20:29:46
    android v7依赖android v7依赖android v7依赖android v7依赖
  • 由于gradle工程越来越流行,eclipse相关源码反而找不到了,特意上传完整v7库eclipse工程源码给大家,支持MaterialDesign风格。
  • 安卓支持v4,v7,v13,v17

    2018-10-18 09:44:46
    安卓支持,v4,v7,v13,v17.
  • Android最全的v7库

    2017-02-22 10:15:55
    开发必备v7库
  • H3CSE题库2018-V7

    2018-11-03 12:59:44
    H3CSE题库2018V7版本,覆盖路由,园区和安全三个,答案含解析。
  • 一些java项目配置文件报错,可能是缺少v7库
  • 本资源主要包括XILINX高端芯片 7系列芯片的原理图库,可减少原理图设计开发时间,希望对硬件开发人员有益
  • 华三S5130 v7系列交换机mib文件oid 需要自己在zabbix 添加监控项,可以查询此文件,无需专业软件打开,txt文件,建议用文本编辑软件打开方便搜索查询,如notepad++等
  • 针对Android平台编译好的FFmpeg 3.4.5的动态链接.so文件,包括armeabi-v7a arm64-v8a两个版本,包含头文件,包含x264,支持mediacodec硬解码h264,h265。可直接集成到工程中用于视频编辑、转码等。
  • 金商通华夏美食餐饮管理系统V7 库存管理模块操作说明:仓库部门:分为总仓与营业部门仓库,总仓可以根据自身库存情况分配,如果不够,则需要填写采购订单,由采购部门进行采购,对于有些物料则可以直接市场购买,当...
  • 针对Android平台编译好的FFmpeg 3.4.5的动态链接.so文件,包括armeabi-v7a arm64-v8a两个版本,包含头文件,包含x264,支持mediacodec硬解码h264,h265。可直接集成到工程中用于视频编辑、转码等。
  • android 最新v7

    2018-06-25 11:24:03
    Android开发工具包最新 android-support-v7-appcompat.jar包
  • CCNA3_V7_LabPractice 创建该存储是为了练习CCNA3 V7的实验元素
  • Android support.v7库包含控件解析

    千次阅读 2017-11-01 15:53:50
    compile 'com.android.support:appcompat-v7:24.2.1' compile 'com.android.support:design:24.2.1' compile 'com.android.support:support-v4:24.2.1' compile 'com.android.support:cardview-v7:24.2.1' compile '

    compile 'com.android.support:appcompat-v7:24.2.1'
    compile 'com.android.support:design:24.2.1'
    compile 'com.android.support:support-v4:24.2.1'
    compile 'com.android.support:cardview-v7:24.2.1'
    compile 'com.android.support:recyclerview-v7:24.2.1'

    android.support.v7.widget.Toolbar

    使用方法: 
    1.引用v7 的appcompat 包 
    2.使用Toolbar的Activity要继承AppCompatActivity 
    3.需要更改主题为NoActionbBar的主题 
    4.在布局文件中引用Toolbar , 需引用v7包中的Toolbar , 默认的Toolbar 仅支持 API >= 21 (android 5.0)的系统

    <android.support.v7.widget.Toolbar
       android:id="@+id/my_toolbar"
       android:layout_width="match_parent"
       android:layout_height="?attr/actionBarSize"
       android:background="?attr/colorPrimary"
       android:elevation="4dp"
       android:theme="@style/ThemeOverlay.AppCompat.ActionBar"
       app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/>
     
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    5.在代码中调用setSupportActionBar(toobar) 方法将Toolbar绑定到当前界面

    android.support.v7.widget.CardView

    继承自FrameLayout并实现了圆角和阴影效果,常用于ListView或RecyclerView中Item布局的根节点 
    示例代码:

    <android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:android.support.v7.cardview="http://schemas.android.com/apk/res-auto"
        android:id="@+id/item_cardView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:clickable="true"
        android:elevation="4dp"
        android:foreground="?android:attr/selectableItemBackground"
        android.support.v7.cardview:cardBackgroundColor="#999"
        android.support.v7.cardview:cardCornerRadius="15dp"
        android.support.v7.cardview:cardElevation="15dp"
        android.support.v7.cardview:contentPadding="0dp">
    
        <TextView
            android:id="@+id/item_textView"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:padding="16dp"
            android:text="@string/hello" />
    </android.support.v7.widget.CardView>
     
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    添加点击波纹效果:

      android:clickable="true"
      android:foreground="?android:attr/selectableItemBackground"

    com.android.support:recyclerview-v7包

    recyclerview

    高度解耦 , 异常灵活 , 可以用来代替ListView / GridView

    相关类介绍: 
    这里写图片描述

    使用步骤: 
    1.导包 
    2.在布局文件中添加RecyclerView 
    3.在Java代码中实现RecyclerView, 至少要添加两个属性: 
    recyclerView.setLayoutManager(new LinearLayoutManager(this));//指定布局管理器 
    recyclerView.setAdapter(adapter); //指定Adapter 
    4.Adapter的写法 
    1)创建一个自定义的ViewHolder,在里面初始化Item的每一个控件 
    2)让自定义的Adapt而继承RecyclerView.Adapter<传入自定义的ViewHolder> 
    3)实现对应的方法

    示例:

    1.布局文件

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        tools:context=".MainActivity">
    
        <android.support.v7.widget.RecyclerView
            android:id="@+id/rv"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:clickable="true"/>
    
    </RelativeLayout>
    
     
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    2.适配器类

    public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerAdapter.ViewHolder> {
        private Context context;
        private ArrayList<String> list;
    
        public RecyclerAdapter(ArrayList<String> list, Context context) {
            this.list = list;
            this.context = context;
        }
    
        @Override
        public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
            View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.recycler_item,
                    parent, false);
            ViewHolder holder = new ViewHolder(view);
            return holder;
        }
    
        @Override
        public void onBindViewHolder(ViewHolder holder, int position) {
            String s = list.get(position);
            holder.item_textView.setText(s);
        }
    
        @Override
        public int getItemCount() {
            return list.size();
        }
    
        public static class ViewHolder extends RecyclerView.ViewHolder {
            private final TextView item_textView;
    
            public ViewHolder(View itemView) {
                super(itemView);
                item_textView = (TextView) itemView.findViewById(R.id.item_textView);
            }
        }
    }
     
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37

    3.适配器用布局视图,recycler_item.xml 
    这里写图片描述

    4.活动代码

    public class MainActivity extends AppCompatActivity {
    
        private RecyclerView recyclerView;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            recyclerView = (RecyclerView) findViewById(R.id.rv);
    
            //布局管理器
            LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
            linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
    
            //设置布局管理器
            recyclerView.setLayoutManager(linearLayoutManager);
            ArrayList<String> list = new ArrayList<>();
    
            //模拟数据
            for (int i = 0; i < 20; i++) {
                list.add("SB---------------->>>>" + i);
            }
    
            RecyclerAdapter adapter = new RecyclerAdapter(list, this);
            recyclerView.setAdapter(adapter);//绑定适配器
        }
    }
     
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28

    com.android.support:design包

    Material Design 自定义主题常用属性值 
    这里写图片描述

    1.FloatingActionButton

    漂浮的Button,该控件父类为ImageView,所以拥有ImageView的所有属性

    效果: 
    这里写图片描述

    常用属性 
    android.support.design:fabSize=” ” 指定图标的大小 值:normal / mini 
    android.support.design:elevation=”” 指定阴影的深度 int 
    app:layout_anchor=” ” 指定显示坐标的锚点 
    app:layout_anchorGravity=” ” 指定锚点的对齐方式

    示例: 
    布局文件:

    <android.support.design.widget.FloatingActionButton
            android:id="@+id/fab"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@mipmap/ic_launcher"
            app:elevation = "10dp"
            android:layout_alignParentBottom="true">
    
    </android.support.design.widget.FloatingActionButton>
     
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    说明:app:elevation = “10dp”的app包名为

    xmlns:app="http://schemas.android.com/apk/res-auto"
     
    • 1

    java代码部分,将其取出

     FloatingActionButton floatingActionButton = (FloatingActionButton) findViewById(R.id.fab);
     
    • 1

    2.TextInputLayout

    用于在EditText上显示Floating提示效果的控件。该控件内部必须包括有且只有一个EditText等输入控件。

    效果: 
    这里写图片描述 
    这里写图片描述

    常用属性值: 
    这里写图片描述

    注意: 
    android:hint需要设置在EditText身上 
    改变hint的颜色需要更改主题的colorAccent 颜色值

    示例: 
    布局文件

    <android.support.design.widget.TextInputLayout
            android:id="@+id/textInputLayout"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
    
            <EditText
                android:id="@+id/edit_text"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:hint="请输入用户名"/>
    </android.support.design.widget.TextInputLayout>
    
    <android.support.design.widget.TextInputLayout
            android:id="@+id/textInputLayout2"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@+id/textInputLayout">
    
            <EditText
                android:id="@+id/edit_text2"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:hint="请输入密码"/>
    </android.support.design.widget.TextInputLayout>
     
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    java代码:

    final TextInputLayout textInputLayout = (TextInputLayout) findViewById(R.id.textInputLayout);
    TextInputLayout textInputLayout2 = (TextInputLayout) findViewById(R.id.textInputLayout2);
    EditText editText = (EditText) findViewById(R.id.edit_text);
    EditText editText2 = (EditText) findViewById(R.id.edit_text2);
    
    editText.addTextChangedListener(new TextWatcher() {
                @Override
                public void beforeTextChanged(CharSequence s, int start, int count, int after) {
    
                }
    
                @Override
                public void onTextChanged(CharSequence s, int start, int before, int count) {
    
                }
    
                @Override
                public void afterTextChanged(Editable s) {
                    String string = s.toString();
                    if (string.length() > 6) {
                        textInputLayout.setErrorEnabled(true);
                        textInputLayout.setError("输入长度不能大于6!");
                    }
                }
    });
     
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    3.Snackbar

    介于Toast和AlertDialog之间的轻量级控件,方便的实现消息的提示和动作的反馈

    效果: 
    这里写图片描述

    常用方法和属性

    Snackbar.make(View view, CharSequence text, int duration).show(); 
    Snackbar.setAction();
    Snackbar.dismiss()
     
    • 1
    • 2
    • 3

    注意事项: 
    1.构造函数中第一个参数不能是ScrollView,因为SnackBar的实现逻辑是向view中addView,而ScrollView只能有一个childView 
    2.如果用SnackBar来代替Toast,需要注意的是Toast会浮在所有View之上,包括键盘.而SnakeView是在View之上addView的,所以要注意如果有键盘的时候,一定要先调用Keyboard.hide() , 否则键盘会将SnackBar遮住 .

    示例:

    final Button button = (Button) findViewById(R.id.button);
    button.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
                    Snackbar snackbar = Snackbar.make(button, "我是Snackbar提示!",Snackbar.LENGTH_LONG);
                    snackbar.setAction("取消", new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {
                            Toast.makeText(SnackbarActivity.this, "你点了Snackbar上的取消", Toast.LENGTH_SHORT).show();
                        }
                    });
                    snackbar.show();
                }
    });
     
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    4.TabLayout

    封装好了tab页和指示器 
    效果: 
    这里写图片描述

    常用方法及属性

    addTab(TabLayout.Tab tab, boolean setSelected)    //添加Tab
    addTab(TabLayout.Tab tab, int position)
    addTab(TabLayout.Tab tab, int position, boolean setSelected)
    newTab()   //创建Tab
    setOnTabSelectedListener(TabLayout.OnTabSelectedListener onTabSelectedListener)  //设置监听
    setTabTextColors(int normalColor, int selectedColor)  //设置被选中Tab的文字的颜色
    setSelectedTabIndicatorColor(int color)   //设置被选中Tab指示条的颜色
    setSelectedTabIndicatorHeight(int height)  //设置被选中Tab指示条的高度
    setTabMode(int mode)  //设置Tab的模式  MODE_FIXED/MODE_SCROLLABLE
     
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    注意: 
    与ViewPager结合Fragment使用,PagerAdapter必须重写getPageTitle()方法 
    设置适配器:

    tabLayout.setupWithViewPager(ViewPager viewPager)  //必须在ViewPager.setAdapter() 之后调用
     
    • 1
    tabLayout.setTabsFromPagerAdapter(PagerAdapter adapter)
     
    • 1

    示例: 
    1.布局文件

    <android.support.design.widget.TabLayout
            android:id="@+id/tablayout"
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:background="@color/colorPrimary">
    
    </android.support.design.widget.TabLayout>
    
    <android.support.v4.view.ViewPager
            android:id="@+id/viewPager"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_below="@+id/tablayout">
    
    </android.support.v4.view.ViewPager>
     
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    2.ViewPager的适配器

    public class ViewPagerAdapter extends FragmentPagerAdapter {
        public ViewPagerAdapter(FragmentManager fm) {
            super(fm);
        }
    
        @Override
        public Fragment getItem(int position) {
            int p = position + 1;
            return MyFragment.getInstance("我是第" + p + "页");
        }
    
        @Override
        public int getCount() {
            return 4;
        }
    
        @Override
        public CharSequence getPageTitle(int position) {
            String title = "null";
            if (position == 0) {
                title = "Tab1";
            } else if (position == 1) {
                title = "Tab2";
            } else if (position == 2) {
                title = "Tab3";
            } else if (position == 3) {
                title = "Tab4";
            }
            return title;
        }
    }
     
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31

    3.碎片Fragment类

    public class MyFragment extends Fragment {
        public static Fragment getInstance(String s) {
            MyFragment fragment = new MyFragment();
            Bundle bundle = new Bundle();
            bundle.putString("content", s);
            fragment.setArguments(bundle);
    
            return fragment;
        }
    
        @Nullable
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
            TextView textView = new TextView(inflater.getContext());
    
            String content = getArguments().getString("content");
            textView.setText(content);
    
            return textView;
        }
    }
     
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    4.活动Activity代码

    @Override
    protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_tab_layout);
    
            TabLayout tabLayout = (TabLayout) findViewById(R.id.tablayout);
            tabLayout.addTab(tabLayout.newTab().setText("Tab1"));
            tabLayout.addTab(tabLayout.newTab().setText("Tab2"));
            tabLayout.addTab(tabLayout.newTab().setText("Tab3"));
            tabLayout.addTab(tabLayout.newTab().setText("Tab4"));
    
            ViewPager viewPager = (ViewPager) findViewById(R.id.viewPager);
            viewPager.setAdapter(new ViewPagerAdapter(getSupportFragmentManager()));
    
            tabLayout.setupWithViewPager(viewPager);
    }
     
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    5.NavigationView

    类似SlidingMenu

    效果: 
    这里写图片描述

    写法步骤: 
    1.Android studio中,创建Activity选择模板 
    这里写图片描述

    2.手动创建

    常用属性和方法

    android:layout_gravity="left"
    app:headerLayout="@layout/drawer_header"
    app:menu="@menu/drawer_menu"
    
    app:itemBackground   //指定menu背景资源
    app:itemIconTint     //指定menu Icon的颜色
    app:itemTextColor    //指定menu item的字体颜色
     
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    说明:app属性为控件持有的属性,需要导入包名xmlns:app="http://schemas.android.com/apk/res-auto"

    注意: 
    1.自动生成的代码中的Toolbar只能支持在API 21(android 5.0)以上 
    2.点击某一项后自动隐藏:drawerLayout.closeDrawers();

    示例: 
    手动创建 
    1.主布局文件,根节点标签为android.support.v4.widget.DrawerLayout

    <?xml version="1.0" encoding="utf-8"?>
    <android.support.v4.widget.DrawerLayout
        android:id="@+id/drawerLayout"
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context="com.example.administrator.supportdemo.navigationview.NaviActivity">
    
        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent">
    
            <android.support.v7.widget.Toolbar
                android:id="@+id/toolbar1"
                android:layout_width="match_parent"
                android:layout_height="?attr/actionBarSize"
                android:background="@color/colorPrimary"
                />
    
            <TextView
                android:id="@+id/textView1"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_centerInParent="true"
                android:textSize="18sp"/>
        </RelativeLayout>
    
        <android.support.design.widget.NavigationView
            android:id="@+id/navigationView"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_gravity="left"
            app:headerLayout="@layout/drawer_header"
            app:menu="@menu/drawer_menu"
            />
    
    </android.support.v4.widget.DrawerLayout>
    
     
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40

    2.头部部分布局文件,drawer_header.xml

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
                    android:layout_width="match_parent"
                    android:layout_height="150dp"
                    android:background="@color/colorPrimaryDark"
                    android:padding="15dp">
    
        <TextView
            android:id="@+id/desc"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentBottom="true"
            android:text="falhfldsa@163.com"
            android:textSize="18sp"/>
    
        <ImageView
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:layout_above="@id/desc"
            android:layout_marginBottom="30dp"
            android:src="@mipmap/ic_launcher"/>
    </RelativeLayout>
     
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    3.主体部分,Item项menu资源文件,drawer_menu.xml

    <?xml version="1.0" encoding="utf-8"?>
    <menu xmlns:android="http://schemas.android.com/apk/res/android">
        <group>
    
            <item
                android:id="@+id/bar"
                android:title="Bar"/>
            <item
                android:id="@+id/car"
                android:title="Car"/>
            <item
                android:id="@+id/Mute"
                android:title="Mute"/>
            <item
                android:id="@+id/Up"
                android:title="Up"/>
    
        </group>
        <item android:title="Settings">
            <menu>
                <item
                    android:id="@+id/Mute1"
                    android:title="Mute"/>
                <item
                    android:id="@+id/Up1"
                    android:title="Up"/>
    
            </menu>
        </item>
    </menu>
     
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30

    4.活动Activity代码

    public class NaviActivity extends AppCompatActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_navi);
    
            Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar1);
    //        setSupportActionBar(toolbar);
    
            final DrawerLayout drawerLayout = (DrawerLayout) findViewById(R.id.drawerLayout);
            final NavigationView navigationView = (NavigationView) findViewById(R.id.navigationView);
    
            final TextView textView = (TextView) findViewById(R.id.textView1);
    
            ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this, drawerLayout, toolbar, R
                    .string.app_name, R.string.app_name);
            drawerLayout.setDrawerListener(toggle);//添加监听,自动帮我们处理事项
            toggle.syncState();//异步启动
    
            navigationView.setNavigationItemSelectedListener(new NavigationView
                    .OnNavigationItemSelectedListener() {
    
                @Override
                public boolean onNavigationItemSelected(MenuItem item) {
                    CharSequence title = item.getTitle();
                    textView.setText(title);
                    drawerLayout.closeDrawers();//设置点击后自动隐藏
                    return true;
                }
            });
        }
    }
     
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33

    效果图: 
    这里写图片描述


    以下6、7、8结合使用

    6.CoordinatorLayout

    更加强大的FrameLayout。

    主要用于以下情形: 
    1.作为一个布局的根布局 
    2.作为一个为childView之间协调手势效果的协调视图

    主要属性: 
    app:layout_scrollFlags:控制那个childView可滑动 
    属性值: 
    1.scroll: 所有想滚动出屏幕的view都需要设置这个flag,没有设置这个flag的view将被固定在屏幕顶部 
    2.enterAlways: 这个flag让任意向下的滚动都会导致该view变为可见,启用快速“返回模式” 
    3.enterAlwaysCollapsed: 当你的视图已经设置minHeight属性又使用此标志时,你的视图只能以最小高度进入,只有当滚动视图到达顶部时才扩大到完整高度 
    4.exitUntilCollapsed: 滚动退出屏幕,最后折叠在顶端

    7.AppBarLayout

    一个垂直方向的LinearLayout,实现了Matrerial Design效果的App Bar,支持滑动手势操作。 
    注意事项: 
    1.必须作为CoordinatorLayout的childView使用,否则很多特效无法实现。 
    2.同级控件中,必须有一个可滚动的siblingView,不然你用我干嘛呢?

    实现滑动的步骤: 
    1.CoordinatorLayout必须作为整个布局的父布局容器 
    2.CoordinatorLayout布局下包裹一个可以滑动的布局,比如 RecyclerView,NestedScrollView(ListView,ScrollView不支持) 
    3.给AppBarLayout设置app:layout_scrollFlags=”scroll|enterAlways” 属性 
    4.给可滑动的组件,也就是RecyclerView 或者 NestedScrollView 设置如下属性:

    app:layout_behavior="@string/appbar_scrolling_view_behavior"
     
    • 1

    8.CollapsingToolbarLayout

    提供一个可折叠的Toolbar容器,对容器中的不同视图设置layout_collapseMode折叠模式,来达到不同的折叠效果

    常用属性: 
    这里写图片描述 
    这里写图片描述

    指定childView折叠模式使用

    app:layout_collapseMode
     
    • 1

    值:1.parallax 视差模式 , 需要增加 app:layout_collapseParallaxMultiplier 属性 , 属性值范围为 0.0-1.0 , 必须是float类型 
    2.pin 固定模式

    注意事项: 
    1.CollapsingToolbarLayout的高度必须是固定值而且要大于Toolbar的高度 , 不能使用wrap_content , 否则不会有折叠效果 
    2.所有需要折叠的childView必须指定app:layout_collapseMode 属性 
    3.如果要添加一个自动折叠的FloatingActionBar , 必须指定锚点,锚点需为CollapsingToolbarLayout的父容器 
    使用parallax模式的时候,app:layout_scrollFlags的属性值不能包含enterAlwaysCollapsed或enterAlways

    6、7、8示例: 
    1.布局文件

    <?xml version="1.0" encoding="utf-8"?>
    <android.support.design.widget.CoordinatorLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context="com.example.administrator.supportdemo.coordinate.CoordinateActivity">
    
        <android.support.design.widget.AppBarLayout
            android:id="@+id/appBarlayout"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            >
    
            <android.support.design.widget.CollapsingToolbarLayout
                android:layout_width="match_parent"
                android:layout_height="150dp"
                app:layout_scrollFlags="scroll|exitUntilCollapsed"
                >
    
                <ImageView
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:src="@mipmap/ic_launcher"
                    app:layout_collapseMode="parallax"
                    app:layout_collapseParallaxMultiplier="0.5"/>
    
                <android.support.v7.widget.Toolbar
                    android:id="@+id/toolbar"
                    android:layout_width="match_parent"
                    android:layout_height="?attr/actionBarSize"
                    app:layout_collapseMode="pin"
                    />
            </android.support.design.widget.CollapsingToolbarLayout>
    
        </android.support.design.widget.AppBarLayout>
    
        <android.support.v7.widget.RecyclerView
            android:id="@+id/recyclerView"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:layout_behavior="@string/appbar_scrolling_view_behavior"
            />
    
        <android.support.design.widget.FloatingActionButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            app:layout_anchor="@id/appBarlayout"
            app:layout_anchorGravity="bottom|right"
            />
    </android.support.design.widget.CoordinatorLayout>
    
     
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53

    2.活动java代码

    @Override
    protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_coordinate);
    
            Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    //        setSupportActionBar(toolbar); //Toolbar 5.0以上才支持
    
            RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recyclerView);
            ArrayList<String> list = new ArrayList<>();
    
            for (int i = 0; i < 30; i++) {
                list.add("This is " + i);
            }
            recyclerView.setLayoutManager(new LinearLayoutManager(this));
            RecyclerAdapter adapter = new RecyclerAdapter(list, this);
            recyclerView.setAdapter(adapter);
    }
     
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    另附Adapter代码

    public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerAdapter.ViewHolder> {
        private Context context;
        private ArrayList<String> list;
    
        public RecyclerAdapter(ArrayList<String> list, Context context) {
            this.list = list;
            this.context = context;
        }
    
        @Override
        public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
            View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.recycler_item,
                    parent, false);
            ViewHolder holder = new ViewHolder(view);
            return holder;
        }
    
        @Override
        public void onBindViewHolder(ViewHolder holder, int position) {
            String s = list.get(position);
            holder.item_textView.setText(s);
        }
    
        @Override
        public int getItemCount() {
            return list.size();
        }
    
        public static class ViewHolder extends RecyclerView.ViewHolder {
            private final TextView item_textView;
    
            public ViewHolder(View itemView) {
                super(itemView);
                item_textView = (TextView) itemView.findViewById(R.id.item_textView);
            }
        }
    }
     
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37

    效果: 
    这里写图片描述 
    这里写图片描述


    展开全文
  • 什么你配置不好support.v7库 其实搜索android.support.v7的配置,百度上会出来很多回答。但是按照教程上面走了,其实也配置不好support.v7库。这是为什么呢?其实不一定是教程错,也不一定是你跟错,而是教程太老...

    为什么你配置不好support.v7库

    其实搜索android.support.v7的配置,百度上会出来很多回答。但是按照教程上面走了,其实也配置不好support.v7库。这是为什么呢?其实不一定是教程错,也不一定是你跟错,而是教程太老了,和你的Android Studio版本相差太大。
    现在(我写博客的日期是2020.3.1)Android Studio是默认使用androix的,引起导入support.v7库不起作用的根本原因是下面这两句话,但是现在很多博客根本没有提到这点。要配置support.v7库,必须将其注释(配置support.v7完整过程请往后看):
    在这里插入图片描述
    下面我们介绍两种遇到support.v7库报错的解决方法吧。

    佛系做法——直接使用androidx

    我们遇到support.v7库的情况通常分为两种:

    1. 在github之类的地方拷下来了别人的整个工程,其中包含support.v7库。这种情况直接打开工程等待项目Sync完成就行了(注意要联网,联网后Android Studio会帮我们自动下载很多需要的依赖)。
    2. 在教程、书本中读到和support.v7库相关的程序片段。这个其实也好办,直接把对应的support.v7库中的内容换成androidx中对应的内容就行了。具体的替换方法:
    • Java代码中,删除所有与v7相关的import项,然后四处Alt + Enter, 系统会给你自动androix中对应的import项。比如,删除本行:

      import android.support.v7.app.AppCompatActivity;
      

      Alt + Enter后系统会加上:

      import androidx.appcompat.app.AppCompatActivity;
      
    • xml代码中,也是同样的方法,替换。直接删除原有控件名称,再输入时,系统就会自动提示androidx中对应的控件。比如,我将support.v7库中的Toolbar控件直接粘贴到使用androidx的项目中,控件是灰色的,说明不能用。
      在这里插入图片描述
      删除原有的控件名(android.support.v7.widget.Toolbar),输入Toolbar,直接Enter选择系统提供的Toolbar控件。
      在这里插入图片描述
      变白了,说明现在的控件是正确的,得到了替换。
      在这里插入图片描述
      强烈推荐直接使用androidx中的控件替换v7库中的控件,反正v7有的anroidx都有,而且v7库已经比较老了。。。不过如果你一定要配置好v7库的话,那么请往下看吧。

    注意:support.v7库中的控件所用函数会和androidx中稍有不同。

    折腾做法——support.v7库的配置

    我使用的Android Studio版本如图所示,最个版本的已经默认使用androidx中的控件了。下面我们来禁用androidx,配置support.v7。
    在这里插入图片描述

    1. 首先新建一个项目,这里就叫做TestSupportV7吧。在这里插入图片描述
    2. 尝试在项目中import android.support.v7相关的库,失败,这个时候可以看到是不行的。
      在这里插入图片描述
    3. 找到app目录下的build.gradle,替换dependencies{}中的内容。
      在这里插入图片描述
      原始的dependencies{}中有很多和androidx相关的内容,我们将其删掉:
      在这里插入图片描述
      用下面的内容替换:(顺带提一下,大家在网上可能会看到有用compile而不是implementation的,这可能是早期的设置,现在没有用compile的了)
    	implementation fileTree(dir: 'libs', include: ['*.jar'])
        implementation 'com.android.support:appcompat-v7:28.0.0'
        testImplementation 'junit:junit:4.12'
        androidTestImplementation 'com.android.support.test:runner:1.0.2'
        androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
    

    替换后内容如下,记得点击“Sync Now”更新依赖。
    在这里插入图片描述
    4. 这时候会发现support.v7库那一行标红。这是因为support.v7库能够支持的最高的sdkVersion为28,而我们现在项目中的是29。将build.gradle中android{}标签中的29都换成28即可。
    在这里插入图片描述
    5. 很多教程进行到上一步就停止了,但是我们尝试在Activity中导入support.v7库,系统仍然不会有自动提示,说明实际上配置没有成功。
    在这里插入图片描述
    6. 这时候就用到我们一开始说的能够根本原因——现在的Android Studio是默认使用androidx的,我们需要将androidx禁用才可以是使用v7库。打开gradle.properties,并注释下面两句话即可达到目的。
    gradle.properties在项目的位置
    在这里插入图片描述
    最后Sync Now:
    需要注释的两句话
    7. 尝试导入v7库,成功。这时其实v7库的导入已经成功了。
    在这里插入图片描述
    在这里插入图片描述
    8. 最后删除项目中一些标红的、和androidx有关的部分即可。
    这里有个比较隐蔽的错误,ConstrainLayout也是与androidx有关的控件,我们前面设置dependencies已经把他的依赖删除了,所以下图中界面呈现灰色(不可用),需要换成别的控件。否则即使没报错也会出错。
    在这里插入图片描述
    可以把最外层控件换成LinearLayout或者别的;下面打x的是ConstrainLayout中的特有属性,不报错,但是也需要删除:
    在这里插入图片描述
    10. 删完和androix相关的那些我们就可以运行程序啦:
    在这里插入图片描述
    最后分享一下自己之前用support.v7库的时候的一些dependencies设置吧。并非必须的设置,加进去用support.v7库写界面会比较方便。当然我们也说了,现在当然推荐默认的androidx啦。

    dependencies {
        implementation fileTree(dir: 'libs', include: ['*.jar'])
        implementation 'com.android.support:appcompat-v7:28.0.0'
        implementation 'com.android.support.constraint:constraint-layout:1.1.3'
        testImplementation 'junit:junit:4.12'
        androidTestImplementation 'androidx.test.ext:junit:1.1.1'
        androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
        implementation 'com.android.support:design:28.0.0'
        implementation 'de.hdodenhof:circleimageview:3.1.0'
        implementation 'com.android.support:recyclerview-v7:28.0.0'
        implementation 'com.android.support:cardview-v7:28.0.0'
        implementation 'com.github.bumptech.glide:glide:3.7.0'
    }
    
    展开全文
  • appcompat_v7

    千次下载 热门讨论 2014-07-23 17:49:00
    更新ADT至22.6.0版本之后,出现了这个,appcompat_v7是Google自己的一个兼容包,就是一个支持,能让2.1以上全使用上4.0版本的界面。例如使用ActionBar,不需要再使用第三方的支持了,下面就让笔者带你慢慢走近...
  • 针对Android平台编译好的FFmpeg 3.4.5的动态链接.so文件,包括armeabi-v7a arm64-v8a两个版本,包含头文件,包含x264,支持mediacodec硬解码h264,h265。可直接集成到工程中用于视频编辑、转码等。
  • openssl的android v7a版本 静态,支持openssl各种功能
  • 安卓suppost-v7兼容eclipse版,自己创建低版本安卓时,可能会创建的
  • appcompat_v7,androidJIA包

    2017-10-27 22:48:55
    其实这个可以被多个项目共用,中已经包含了v7.jar包,还有一些适配性的资源,你可以在开发多个项目时,将一些共用的代码,资源放入中,方便使用。低版本ADT建立项目时没有自动生成,不过当我们 需要时,可以...
  • #Android 支持 V7 和演示
  • Qiniu Go SDK 代码已经被迁移到 github.com/qiniu/go-sdk,当前代码 github.com/qiniu/api.v7 将不再更新,请尽快将您项目中依赖的 github.com/qiniu/api.v7/v7 直接替换为 github.com/qiniu/go-sdk/v7,该替换...
  • 用于解决elcipse-android运行时资源不匹配问题,下载完成后解压,将解压的文件夹直接放到D:\adt-bundle-windows-x86_64-20140702\sdk\extras\android\support相应位置
  • 友盟推送,最新的lib,6.0.1版本,so平台为arm64-v8a,armeabi-v7a 架构,上google 必须两个架构。项目已上线,亲测可用
  • appcompat_v7库导入出错的解决办法

    千次阅读 2015-10-10 01:56:52
    导入V7包时候我们经常会出现各种各样的错误,下面介绍两种常见错误。 第一种:V7包直接报错。这种错误一般是res中的value文件报错,比如value21 value19这样的文件夹。导致该种错误的原因是V7包所选择的android SDK...

    appcompat_v7一般是在我们创建兼容4.0以下的项目才需要使用到的一个兼容库,很多时候导入这个库都会出错,出错的原因在于更新了SDK中的Android-Support-Library。这个Android-Support-Library就是我们导入的appcompat_v7库所在,简单来说更新了Android-Support-Library,那么appcompat_v7也会被更新。

    那么这个时候,如果你的实际工程的targetSDK低于更新后的最新的appcompat_v7所需的SDK,那么就会出错。比如现在最新的appcompat_v7是需要android6.0来支持的,那么我们实际项目的targetSDK也就需要设置为22,编译SDK也需要选择android6.0。

    如果你的项目不用兼容4.0以下的设备,那么创建项目时候,选择miniSDK大于等于14就不用依赖appcompat_v7包了。

    如果你又要兼容4.0以下,但是又没有appcompat_v7所需的最新SDK,那么你就只能自己把报错的地方删掉了,手动修改项目。

    本方法适用于eclipse和android studio

    展开全文
  • 安卓支持下载v4,v7,v13,v17
  • opencv4 , 包含的arm64-v8a、armeabi-v7a、x86、x86_64的so Android可以使用的。
  • Android Support v7包下载

    2017-12-30 17:53:12
     ·Android Support v7:这个包是为了考虑照顾2.1及以上版本而设计的,但不包含更低,故如果不考虑 1.6,我们可以采用再加上这个包,另外注意,v7是要依赖v4这个包的,即,两个得同时被包含。  ·Android Support...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 43,870
精华内容 17,548
关键字:

v7库是什么

友情链接: fft.rar