接入安卓原生的收获

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’)

扫描二维码关注公众号,回复: 9619210 查看本文章

获取权限

在程序入口的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

*.iml
.gradle
/local.properties
/.idea/caches
/.idea/libraries
/.idea/modules.xml
/.idea/workspace.xml
/.idea/navEditor.xml
/.idea/assetWizardSettings.xml
.DS_Store
/build
/captures
.externalNativeBuild
.cxx

AS查看SHA1码

选择右边Gradle-Task-android-signingReport,双击即可
在这里插入图片描述

发布了57 篇原创文章 · 获赞 22 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/Mediary/article/details/103683722
今日推荐