android新手纯做记录
UI布局
UI控件紧贴父物体右侧,或者距离父物体一定距离,调整分辨率也不会改变位置
把父物体 <LinearLayout下gravity属性设置为
android:gravity="bottom|right"
同时该空间属性
android:layout_marginTop="25dp"
Top为距离上边的尺寸,其他下左右同理
示例
快捷键
全局替换搜索
ctrl+shift+r
重命名引用shift+F6
代码自动对齐Ctrl+Alt+L
跳转界面
需要注意的是startActivity和finish的跳转方式不一样
startActivity的目标界面是从oncreate开始运行
finish返回的界面是从onRestart开始运行
直白的说,用finish回到上一页面,目标页面是继续运行,而startActivity回到目标页面,则是重新开始
具体可以看这个 https://blog.csdn.net/a2241076850/article/details/53405922
// 简单的跳转
startActivity(new Intent(this, MAinActivity.class));
//或者
finish();
----------------------------------------------------------
// 跳转页面并传参
public void test(String type)
{
Intent intent =new Intent(this,MAinActivity.class);
intent.putExtra("type",type); // 这里是个键值对,注意这里写入的key值
startActivity(intent);
}
----------------------------------------------------------
// 接收参数页面
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent intent =getIntent();
/*取出传入的参数*/
String parameter = intent.getStringExtra("type");
}
重命名包名
重命名包名
Project视窗右上角的齿轮,把第二个关掉
然后包名会分开,Shift+F6即可
Uri和Bitmap互转
// bitmap to uri
Uri uri = Uri.parse(MediaStore.Images.Media.insertImage(getContentResolver(), bitmap, null,null));
// uri to bitmap
Bitmap bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), uri);
5.1 隐藏百度地图logo
// 先地图初始化
mMapView = (MapView) findViewById(R.id.bmapView);
// 隐藏百度的LOGO
View child = mMapView.getChildAt(1);
if (child != null && (child instanceof ImageView || child instanceof ZoomControls)) {
child.setVisibility(View.INVISIBLE);
}
5.2 百度地图的多个maker点击事件
以下为部分百度地图的示例代码
// 添加多个maker
for (int i = 0; i < longitude.length; i++) {
// 坐标 纬度在前,经度在后,如果写反了会跑到地球另一端
LatLng temp = new LatLng(latitude[i], longitude[i]);
// 在生成maker的地方加bundle
mBundle = new Bundle();
mBundle.putInt("id",monsterImgNumber[i] );
addMarker(linyi, i);
}
-------------------------------------------------
// 生成maker方法
public void addMarker(LatLng latLng, int index) {
MarkerOptions markerOptionsA = new MarkerOptions().position(latLng).yOffset(30).icon(bitmapArray[index]).draggable(true);
Log.d(TAG, "设置maker");
mMarker = (Marker) mBaiduMap.addOverlay(markerOptionsA);
mMarker.setExtraInfo(mBundle);
}
--------------------------------------------------
// maker的点击事件
mBaiduMap.setOnMarkerClickListener(new BaiduMap.OnMarkerClickListener() {
@Override
public boolean onMarkerClick(Marker marker) {
Bundle bundle = marker.getExtraInfo();
// 这个id就是你点的这个maker的标识
int id = bundle.getInt("id");
return true;
}
});
java中 hashMap的简单用法
用法和C# Dictionary差不多
// 定义一个key和value都是int的hashmap
private HashMap<Integer, Integer> hashMap = new HashMap<>();
// 存入的时候用put(key,value)
hashMap.put(1,i+2));
// 取出的时候用get(key)
int value=hashMap.get(1);
Toast提示
// 记得加show(),不然会不显示
Toast.makeText(上下文,自定义内容,时长).show();
// 例子
Toast.makeText(MAinActivity.this, "试一下这个提示", Toast.LENGTH_SHORT).show();
Log打印
Log.d("这是标签,用来筛选信息","这是打印内容");
字符分割
这个和C#也差不多,区别在于某些特殊的符号如 .$|()[{^?*+\ 在表达式中有特殊意义,需要转义
其他的字符正常使用即可
例如
String teststr="118.33087429972339+35.081455883557176+2+002+1+5" ;
String[] str = teststr.split("\\+");
屏蔽返回键
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
if (event.getKeyCode() == KeyEvent.KEYCODE_BACK ) {
//这个方法屏蔽手机返回键
return true;
} else {
return super.dispatchKeyEvent(event);
}
}
引用aar包
dependencies里加入
implementation(name: ‘aar的名字’, ext: ‘aar’)
获取权限
在程序入口的onCreate里申请权限,会在APP一开始运行的时候就弹窗获取权限,如下会在开始运行时提示获取录音,相机,位置权限
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
requestPermissions(new String[]{Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.RECORD_AUDIO,
Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION}, 100);
}
}
Manifest merger failed with multiple errors, see logs
打开Terminal输入 gradlew processDebugManifest --stacktrace 显示详细信息
其中gradlew 后面填入你的报错
AS项目Git备份需要忽略的文件
可能不全,目前是用的这个gitignore
#Built application files
*.apk
*.ap_
#Files for the ART/Dalvik VM
*.dex
#Java class files
*.class
#Generated files
bin/
gen/
out/
#Gradle files
.gradle/
build/
#Local configuration file (sdk path, etc)
local.properties
#Proguard folder generated by Eclipse
proguard/
#Log Files
*.log
#Android Studio Navigation editor temp files
.navigation/
#Android Studio captures folder
captures/
#IntelliJ
.iml
.idea/workspace.xml
.idea/tasks.xml
.idea/gradle.xml
.idea/assetWizardSettings.xml
.idea/dictionaries
.idea/libraries
.idea/caches
#Keystore files
#Uncomment the following line if you do not want to check your keystore files in.
#.jks
#External native build folder generated in Android Studio 2.2 and later
.externalNativeBuild
#Google Services (e.g. APIs or Firebase)
google-services.json
#Freeline
freeline.py
freeline/
freeline_project_description.json
#fastlane
fastlane/report.xml
fastlane/Preview.html
fastlane/screenshots
fastlane/test_output
fastlane/readme.md
AS查看SHA1码
选择右边Gradle-Task-android-signingReport,双击即可