// banner
implementation 'com.youth.banner:banner:1.4.10'
// recyclerview
implementation 'androidx.recyclerview:recyclerview:1.0.0'
//万能适配器
implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper:3.0.0'
//3D地图so及jar
implementation 'com.amap.api:3dmap:latest.integration'
//定位功能
implementation 'com.amap.api:location:latest.integration'
//搜索功能
implementation 'com.amap.api:search:latest.integration'
//GSON
implementation 'com.squareup.retrofit2:converter-gson:2.6.2'
//OkGo
implementation 'com.lzy.net:okgo:3.0.4'
//网络框架
implementation 'com.squareup.okhttp3:okhttp:3.12.1'
//日志拦截器
implementation 'com.squareup.okhttp3:logging-interceptor:3.11.0'
//recyclerview间隔线
implementation 'com.yanyusong.y_divideritemdecoration:y_divideritemdecoration:2.0'
//recyclerview动画
implementation 'jp.wasabeef:recyclerview-animators:4.0.2'
//核心必须依赖
implementation 'com.scwang.smart:refresh-layout-kernel:2.0.3'
//经典刷新头
implementation 'com.scwang.smart:refresh-header-classics:2.0.3'
//底部菜单
implementation 'com.github.chaychan:BottomBarLayout:2.0.2'
//FlyTabLayout
implementation 'com.flyco.tablayout:FlycoTabLayout_Lib:2.1.2@aar'
//裁剪图片的快捷方法
implementation 'com.github.wildma:PictureSelector:2.1.0'
https://github.com/wildma/PictureSelector
maven { url "https://jitpack.io" }
//Glide图片框架
implementation'com.github.bumptech.glide:glide:4.5.0'
compile 'com.umeng.umsdk:common:9.4.0'//必选
compile 'com.umeng.umsdk:asms:1.2.3'//必选
implementation 'com.umeng.umsdk:share-core:7.1.5'//分享核心库,必选
implementation 'com.umeng.umsdk:share-board:7.1.5'//分享面板功能,可选
implementation 'com.umeng.umsdk:share-qq:7.1.5'//QQ完整版
implementation 'com.tencent.tauth:qqopensdk:3.53.0'//QQ官方依赖库,必选
implementation 'com.squareup.okhttp3:okhttp:3.12.12'//QQ SDK在3.53.0版本及以上时需要集成
//ARouter
android {
defaultConfig {
...
javaCompileOptions {
annotationProcessorOptions {
arguments = [AROUTER_MODULE_NAME: project.getName()]
}
}
}
}
dependencies {
// 替换成最新版本, 需要注意的是api
// 要与compiler匹配使用,均使用最新版可以保证兼容
//compile 'com.alibaba:arouter-api:x.x.x'
//annotationProcessor 'com.alibaba:arouter-compiler:x.x.x'
implementation 'com.alibaba:arouter-api:1.5.1'
annotationProcessor 'com.alibaba:arouter-compiler:1.5.1'
}
// 旧版本gradle插件(< 2.2),可以使用apt插件,配置方法见文末'其他#4'
// Kotlin配置参考文末'其他#5'
//二维码
ZXingLibrary.initDisplayOpinion(this);
//Application中执行初始化操作
ZXingLibrary.initDisplayOpinion(this);
//工具类
implementation 'com.blankj:utilcode:1.30.6'
//RXjava
api 'io.reactivex.rxjava2:rxjava:2.2.6'
api 'io.reactivex.rxjava2:rxandroid:2.1.1'
//线程异常任务调度
api 'com.squareup.retrofit2:adapter-rxjava2:2.6.2'
//网络请求封装框架
api 'com.squareup.retrofit2:retrofit:2.6.2'
//注解框架
api 'com.google.dagger:dagger:2.17'
annotationProcessor 'com.google.dagger:dagger-compiler:2.17'
专高三常用框架
PS:api是复用,注解框架不能复用
api 'com.blankj:utilcode:1.30.6'
api 'com.google.dagger:dagger:2.17'
annotationProcessor 'com.google.dagger:dagger-compiler:2.17'
api 'io.reactivex.rxjava2:rxjava:2.2.6'
api 'io.reactivex.rxjava2:rxandroid:2.1.1'
//网络框架
api 'com.squareup.okhttp3:okhttp:3.12.1'
//日志拦截器
api 'com.squareup.okhttp3:logging-interceptor:3.11.0'
//网络请求封装框架
api 'com.squareup.retrofit2:retrofit:2.6.2'
//网络请求对象解析器
api 'com.squareup.retrofit2:converter-gson:2.6.2'
//线程异常任务调度
api 'com.squareup.retrofit2:adapter-rxjava2:2.6.2'
//Glide图片框架
implementation 'com.github.bumptech.glide:glide:4.12.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.12.0'
compile 'cn.yipianfengye.android:zxing-library:2.2'
1.创建工程,创建包(命名规范)(5分)
2.SlidingMenu框架整合(5分)
3.抽屉菜单中有4个button(5分)
4.点击button1显示fragment1(5分)
5.点击button2显示fragment2(5分)
6.点击button3显示fragment3(5分)
7.点击button4显示fragment4(5分)
8.fragment显示隐藏方式切换(5分)
9.MVP架构封装(5分)
10.RX全家桶框架导入(5分)
11.单例网络框架封装RX全家桶(5分)
12.Glide框架导入(5分)
13.Fragment1请求油焖大虾接口获取数据(5分)
14.Fragment1使用recyclerview展示油焖大虾数据(5分)
15.Fragment2自定义View绘制圆(5分)
16.Fragment3自定义View绘制直线(5分)
17.Fragment4自定义View绘制一行文字为HelloWord(5分)
18.Fragment2自定义View绘制一个环形(5分)
19.Fragment3自定义View绘制三角形(5分)
20.最后结束录屏前演示效果,并代码讲解(5分)
登录
https://www.wanandroid.com/user/login
方法:POST
参数:
username,password
注册
https://www.wanandroid.com/user/register
方法:POST
参数
username,password,repassword
implementation 'com.google.android.material:material:1.1.0'
//高德地图
implementation 'com.amap.api:3dmap:latest.integration'//M
implementation 'com.amap.api:location:latest.integration'//apView
//歌词的依赖三方库
implementation 'com.github.Lauzy:LyricView:1.0.4'
maven { url 'https://jitpack.io' }
//TabLayout依赖
<com.google.android.material.tabs.TabLayout></com.google.android.material.tabs.TabLayout>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
* 获取图库:(读sd卡的权限)
* (1)uri:MediaStore.Images.Media.EXTERNAL_CONTENT_URI
* (2)字段:
requestPermissions(new String[]{
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE
Manifest.permission.RAED_SMS
Manifest.permission.RAED_CONTACTS
Manifest.permission.CALL_PHONE},100);
MediaStore.Images.Media.TITLE; 图片名称
MediaStore.Images.Media.SIZE; 大小
MediaStore.Images.Media.DATA; 地址
MediaStore.Images.Media.HEIGHT; 高
MediaStore.Images.Media.WIDTH; 宽
Insert into food values(?,?,?)
* 获取视频:(读sd卡的权限)
* (1)uri:MediaStore.Video.Media.EXTERNAL_CONTENT_URI
* (2)字段:TITLE:歌名 ARTIST 歌手 DURATION 总时长 DATA 地址 SIZE 大小
DataBeans.DataBean wtable: beans
MediaStore.Video.Media.TITLE, 歌名
MediaStore.Video.Media.ARTIST, 歌手
MediaStore.Video.Media.DURATION, 总时长
MediaStore.Video.Media.DATA, 地址
MediaStore.Audio.Media.SIZE}; 大小
Delete from cart where id = ?
*获取音频 : (读sd卡的权限) -----------///////////---------------------
* (1)uri:MediaStore.Audio.Media.EXTERNAL_CONTENT_URI
* (2)字段:TITLE:歌名 ARTIST 歌手 DURATION 总时长 DATA 地址 SIZE 大小
MediaStore.Audio.Media.TITLE, 歌名
MediaStore.Audio.Media.ARTIST, 歌手
MediaStore.Audio.Media.DURATION, 总时长
MediaStore.Audio.Media.DATA, 地址
MediaStore.Audio.Media.SIZE, 大小
MediaStore.Audio.Media.ALBUM_ID, 专辑封面的id
};
"content://media/external/audio/albums/"+专辑封面的id; 专辑封面的uri
封面字段:album_art
*获取联系人: (读联系人的权限)
* (1)uri:ContactsContract.CommonDataKinds.Phone.CONTENT_URI
* (2)字段:Phone.DISPLAY_NAME 姓名 NUMBER 电话
ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME, 姓名
ContactsContract.CommonDataKinds.Phone.NUMBER; 电话
*获取短信: (读短信的权限)
* (1)uri:Telephony.Sms.CONTENT_URI
* (2)字段:ADDRESS 地址 BODY 内容
Telephony.Sms.ADDRESS, 地址
Telephony.Sms.BODY; 内容
*通话记录:
获取通话记录:
uri:CallLog.Calls.CONTENT_URI
字段:CallLog.Calls.NUMBER:电话号码
CallLog.Calls.DATE:时间
CallLog.Calls.TYPE:类型(1.拔打 2.接听 3.错过)
CallLog.Calls.DURATION:时长
视频链接==============================
loadUrl("file:///android_asset/h5.html");
public static String[] video = {
"http://vfx.mtime.cn/Video/2019/03/18/mp4/190318214226685784.mp4",
"http://vfx.mtime.cn/Video/2019/03/19/mp4/190319104618910544.mp4",
"http://vfx.mtime.cn/Video/2019/03/19/mp4/190319125415785691.mp4",
"http://vfx.mtime.cn/Video/2019/03/17/mp4/190317150237409904.mp4",
"http://vfx.mtime.cn/Video/2019/03/14/mp4/190314223540373995.mp4",
"http://vfx.mtime.cn/Video/2019/03/14/mp4/190314102306987969.mp4",
"http://vfx.mtime.cn/Video/2019/03/13/mp4/190313094901111138.mp4",
"http://vfx.mtime.cn/Video/2019/03/12/mp4/190312143927981075.mp4",
"http://vfx.mtime.cn/Video/2019/03/12/mp4/190312083533415853.mp4",
"http://vfx.mtime.cn/Video/2019/03/09/mp4/190309153658147087.mp4",
};
清单文件中:
所有权限:
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_CONTACTS"/>
<uses-permission android:name="android.permission.READ_SMS"></uses-permission>
<uses-permission android:name="android.permission.CALL_PHONE"></uses-permission>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.CAMERA"/>
<!--允许程序打开网络套接字-->
<uses-permission android:name="android.permission.INTERNET" />
<!--允许程序获取网络状态-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!--允许程序访问WiFi网络信息-->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!--允许程序读写手机状态和身份-->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<!--允许程序访问CellID或WiFi热点来获取粗略的位置-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<!-- 定位 没有这个定位获取不到 -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
联网的权限:
<uses-permission android:name="android.permission.INTERNET"/>
写SD卡权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
读SD卡权限:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
读取联系人的权限:
<uses-permission android:name="android.permission.READ_CONTACTS"/>
读取短信的权限:
<uses-permission android:name="android.permission.READ_SMS"></uses-permission>
打电话
<uses-permission android:name="android.permission.CALL_PHONE"></uses-permission>
读取通话记录的权限:
<uses-permission android:name="android.permission.WRITE_CALL_LOG"/>
<uses-permission android:name="android.permission.READ_CALL_LOG"/>
练习的链接
http://v.juhe.cn/toutiao/index?type=top&key=e3080ff4a57ed090c999dc0d9082dce4
--------
recyclerview
implementation 'androidx.recyclerview:recyclerview:1.0.0'
----------------------
localBroadcastManager
implementation 'androidx.localbroadcastmanager:localbroadcastmanager:1.0.0'
---------------------
依赖导入
Glide
implementation 'com.github.bumptech.glide:glide:4.5.0'
Gson
implementation 'com.google.code.gson:gson:2.8.2'
picasso
implementation 'com.squareup.picasso:picasso:2.5.2'
Fastjson
implementation 'com.alibaba:fastjson:1.2.41'
导入tablayout
implementation 'com.android.support:design:30.0.0'
okhttp
implementation 'com.squareup.okhttp3:okhttp:4.1.0'
eventbus
implementation 'org.greenrobot:eventbus:3.2.0'
banner
implementation 'com.youth.banner:banner:1.4.10'
获取手机联系人,展现在ListView中并存储到数据库中
拼音转换字母
implementation 'com.github.stuxuhai:jpinyin:1.0'
添加阿里云的镜像
maven {
url "http://maven.aliyun.com/nexus/content/groups/public/"
}
大虾串
http://www.qubaobei.com/ios/cf/dish_list.php?stage_id=1&limit=20&page=1
//歌曲
关键字搜索
http://musicapi.leanapp.cn/search/suggest?keywords=邓紫棋
根据歌曲id搜索歌的地址
http://musicapi.leanapp.cn/music/url?id=1405283464
okhttp
implementation ‘com.squareup.okhttp3:okhttp:3.12.1’
一。网易云接口:
api
https://binaryify.github.io/NeteaseCloudMusicApi/#/?id=neteasecloudmusicapi
http://m10.music.126.net/20200606190736/42a96a48754a63f5c4a19242f37b69d6/ymusic/76e5/ba34/d562/2e95d6640354faee9ef0d6a384d2bc5f.mp3
关键字搜索
http://gaohui628.top:3000/search/suggest?keywords=邓紫棋
根据歌曲id搜索歌的地址
http://gaohui628.top:3000/music/url?id=36270426
http://gaohui628.top:3000/song/media?id=27955653
根据歌曲id获得评论:
http://musicapi.leanapp.cn/comment/music?id=233931&limit=10
获得歌曲id获得歌词:
http://music.163.com/api/song/media?id=27955653
根据歌曲id获得mv:
http://musicapi.leanapp.cn/mv/detail?mvid=503273
根据mvid获得mv评论:
http://musicapi.leanapp.cn/comment/mv?id=221004
轮播图
http://musicapi.leanapp.cn/banner
http://vueshop.glbuys.com/api/home/index/slide?token=1ec949a15fb709370f
//友盟的值
defaultConfig {
applicationId "com.bawei.maptest"
minSdkVersion 25
targetSdkVersion 30
versionCode 1
versionName "1.0"
ndk {
//设置支持的SO库架构(开发者可以根据需要,选择一个或多个平台的so)
abiFilters "armeabi", "armeabi-v7a", "arm64-v8a", "x86","x86_64"
}
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
manifestPlaceholders=[qqappid:""]
}
//Applocation里
// QQ设置
PlatformConfig.setQQZone("101830139","5d63ae8858f1caab67715ccd6c18d7a5");
PlatformConfig.setQQFileProvider("com.tencent.sample2.fileprovider");
UMConfigure.init(this,"自己的Key","baweiliuchangyu",UMConfigure.DEVICE_TYPE_PHONE,"");
UMConfigure.setLogEnabled(true);
友盟的值
<meta-data android:value="${UMENG_CHANNEL_VALUE}" android:name="UMENG_CHANNEL"/>
androidx的依赖
1、CardView
implementation 'androidx.cardview:cardview:1.0.0'
2、TabLayout
implementation 'com.google.android.material:material:1.0.0'
3、RecycleView
implementation 'androidx.recyclerview:recyclerview:1.0.0'
4、Snackbar
implementation 'com.google.android.material.snackbar.Snackbar:1.0.0-rc01'
5、swiperefreshlayout
implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.0.0'
6、viewpager
implementation 'androidx.viewpager:viewpager:1.0.0'
7、design ui 库
implementation 'com.google.android.material:material:1.0.0-rc01'
8、coordinatorlayout
implementation 'androidx.coordinatorlayout:coordinatorlayout:1.0.0'
9、constraintlayout 约束布局
implementation 'androidx.constraintlayout:constraintlayout:1.1.2'
10、NavigationView 侧滑
implementation 'com.google.android.material.navigation.NavigationView:1.0.
private List<DataBeans.DataBean> SelectCar() {
List<DataBeans.DataBean> list=new ArrayList<>();
SLite2 sLite2=new SLite2(getActivity(),"car09.db",null,1);
SQLiteDatabase writableDatabase = sLite2.getWritableDatabase();
Cursor cursor = writableDatabase.query("car", null, null, null, null, null, null);
while (cursor.moveToNext()){
String id = cursor.getString(cursor.getColumnIndex("id"));
String tittle = cursor.getString(cursor.getColumnIndex("tittle"));
String pic = cursor.getString(cursor.getColumnIndex("pic"));
DataBeans.DataBean dataBean=new DataBeans.DataBean();
dataBean.setId(id);
dataBean.setTitle(tittle);
dataBean.setPic(pic);
list.add(dataBean);
}
return list;
}
SLite2 sLite2=new SLite2(getActivity(),"car09.db",null,1);
SQLiteDatabase readableDatabase = sLite2.getReadableDatabase();
readableDatabase.execSQL("insert into car values(?,?,?)",new Object[]{beans.get(position).getId(),beans.get(position).getTitle(),beans.get(position).getPic()});
Toast.makeText(getActivity(), "添加成功", Toast.LENGTH_SHORT).show();
常用网址
腾讯云推拉流地址生成:https://lvb.qcloud.com/weapp/utils/get_test_pushurl
央视直播流:
http://ivi.bupt.edu.cn/hls/cctv1hd.m3u8
http://ivi.bupt.edu.cn/hls/cctv3hd.m3u8
http://ivi.bupt.edu.cn/hls/cctv5hd.m3u8
http://ivi.bupt.edu.cn/hls/cctv5phd.m3u8
http://ivi.bupt.edu.cn/hls/cctv6hd.m3u8
--------------------------------------------------------------------------------------------------------
调试版本高德地图获得SHA1序列号:keytool -v -list -keystore C:\Users\许善雄\.android\debug.keystore(换成自己的路径)
高德地图获得SHA1序列号:keytool -v -list -keystore /Users/ytx0904/.android/debug.keystore
a。生成一个密钥口令:keytool -genkey -alias key.keystore -keyalg RSA -validity 365 -keystore key.keystore
b。生成位置:在你的项目文件夹中
c。打开terminal:keytool -list -v -keystore key.keystore
--------------------------------------------------------------------------------------------------
一.百思不得姐:
http://api.budejie.com/api/api_open.php?a=list&c=data&type=1&page=1
.addHeader("User-Agent","PostmanRuntime/7.26.1")
page : 页码 (加载下一页需要)
maxtime : 获取到的最后一条数据的maxtime字段 (加载下一页需要)
https://route.showapi.com/255-1?showapi_appid=365651&showapi_sign=54519f6b92b446dabeca3a6f09966616
54519f6b92b446dabeca3a6f09966616 365651
type=1 : 全部
type=41 : 视频
type=10 : 图片
type=29 : 段子
type=31 : 声音
评论列表 http://api.budejie.com/api/api_open.php?a=dataList&c=comment&data_id=31396265&hot=1
data_id : 帖子ID
hot : 获取到最热评论需要这个字段
page : 页码 (加载下一页需要)
lastcid : 获取到的最后一条评论的ID(加载下一页需要)
http://api.yunzhancn.cn/api/app.interface.php?siteid=78703&itemid=2&act=ad_app
二。新闻
头条:http://v.juhe.cn/toutiao/index?type=top&key=3dc86b09a2ee2477a5baa80ee70fcdf5
国内:http://v.juhe.cn/toutiao/index?type=guonei&key=3dc86b09a2ee2477a5baa80ee70fcdf5
http://apibiji.damoxueyuan.top/
三。网易云接口:
关键字搜索
http://musicapi.leanapp.cn/search/suggest?keywords=邓紫棋
根据歌曲id搜索歌的地址
http://musicapi.leanapp.cn/music/url?id=1405283464
http://gaohui628.top:3000/music/url?id=36270426
http://gaohui628.top:3000/song/media?id=27955653
根据歌曲id获得评论:
http://musicapi.leanapp.cn/comment/music?id=233931&limit=10
获得歌曲id获得歌词:
http://music.163.com/api/song/media?id=27955653
根据歌曲id获得mv:
http://musicapi.leanapp.cn/mv/detail?mvid=503273
根据mvid获得mv评论:
http://musicapi.leanapp.cn/comment/mv?id=221004
轮播图
http://musicapi.leanapp.cn/banner
http://vueshop.glbuys.com/api/home/index/slide?token=1ec949a15fb709370f
四。登陆接口:要求使用okhttp完成post请求,浏览器不能测试post请求
https://www.wanandroid.com/user/login
方法:POST
参数:username,password
五。注册接口:要求使用okhttp完成post请求,浏览器不能测试post请求
https://www.wanandroid.com/user/register
方法:POST
参数:username,password,repassword
六。油焖大虾:
七。上传文件地址:http://117.51.155.210/hfs/
七。图片网址:https://dss0.bdstatic.com/70cFuHSh_Q1YnxGkpoWK1HF6hhy/it/u=2858426577,4189650377&fm=26&gp=0.jpg
八。音乐网址:http://m10.music.126.net/20190928113350/b386ce0830ba08cb5cf1f91742e7e80c/ymusic/b854/e1ff/e7c1/653c638e24580e2869184c592a370056.mp3
九。视频网址:
http://vfx.mtime.cn/Video/2019/03/18/mp4/190318214226685784.mp4
http://vfx.mtime.cn/Video/2019/03/19/mp4/190319104618910544.mp4
http://vfx.mtime.cn/Video/2019/03/19/mp4/190319125415785691.mp4
http://vfx.mtime.cn/Video/2019/03/17/mp4/190317150237409904.mp4
http://vfx.mtime.cn/Video/2019/03/14/mp4/190314223540373995.mp4
http://vfx.mtime.cn/Video/2019/03/14/mp4/190314102306987969.mp4
http://vfx.mtime.cn/Video/2019/03/13/mp4/190313094901111138.mp4
http://vfx.mtime.cn/Video/2019/03/12/mp4/190312143927981075.mp4
http://vfx.mtime.cn/Video/2019/03/12/mp4/190312083533415853.mp4
http://vfx.mtime.cn/Video/2019/03/09/mp4/190309153658147087.mp4
十。gif图:http://5b0988e595225.cdn.sohucs.com/images/20180523/93c796f46fd5417a9af7ba0b9ae87627.gif
webp图片:http://asgard.image.mucang.cn/asgard/2017/12/28/10/45ab2f68a13546c1914b61d54160b8ae.webp
十一。断点续传设置请求头:
Range:bytes=起始位置-终点位置
比如:Range:bytes=0-100
十二。上传文件:post请求
1.设置请求头信息:
Content-Length:请求体的总长度
Content-Type:multipart/form-data; boundary=7e324741816d4
2.请求体:2部分
第一部分:要有换行
-----------------------------7e324741816d4
Content-Disposition: form-data; name="file"; filename="上传到服务器的名字"
Content-Type: media/mp4或者media/mp3或者image/mp3或者image/png
空行
第二部分:需要上传的文件:边读边写