1 华为 nova真机 打印不出Log

参考资料:http://www.apkbus.com/thread-585228-1-1.html

解决:针对权限问题,我们当然也可以解决的,华为手机在你的拨号界面,请拨*#*#2846579#*#*,我们就进入了工程菜单,接下来我们就可以操作了。点击ProjectMenu,进入后台设置,很容易看到的就是LOG设置。进入LOG设置,将AP日志打钩并关闭,或许你还有顾虑,那你就全部选中然后关闭,然后重新启动手机。

2 AS 在用vivo x9手机运行程序时,出现“解析软件包时出现问题”的问题。

参考资料:https://blog.csdn.net/wl521124/article/details/80558155

解决方法:

打开as 的setting界面,把instant run 界面的 enable 前面的√去掉,如下图:

 

 

3 launching app client not ready yet

新建工程时,打包运行,没有打包,也没有报错,提示 launching app client not ready yet

这个是一个很低级的错误,因为我新建工程时选择的是no activity, java文件下都没有代码,能打包成功才怪呢,估计只有像我这种菜鸟才犯这样的低级错误吧。老鸟也是一个坑一个坑过来的,这就是成长吧

从新建了一个工程,这次选的是empty activity, 这样再打包运行就可以了

 

4 kotlin定时器的使用

protected var mCompositeDisposables: CompositeDisposable? = null
var disposable = Observable.timer(800, TimeUnit.MILLISECONDS).subscribeOn(Schedulers.io())
                    .observeOn(AndroidSchedulers.mainThread()).subscribe{mAdapter.notifyDataSetChanged()}
            mCompositeDisposables?.addAll(disposable)

上面代码表示延迟执行mAdapter.notifyDataSetChanged() 800ms

 

5 用Java代码改变xml布局中的margin 

ViewGroup.MarginLayoutParams layoutParams = (ViewGroup.MarginLayoutParams)plSupport.getLayoutParams();
                        layoutParams.bottomMargin = 0;
                        plSupport.setLayoutParams(layoutParams);

 方法二:

ImageView image = (ImageView) findViewById(R.id.main_image);
RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(image.getLayoutParams());
lp.setMargins(50, 100, 0, 0);
image.setLayoutParams(lp);

参考:Android,View设置margin

6 本地打包是好的,jenkins打包有一个弹窗显示和本地打包显示的不一样

原因:定义的bean类没实现 basebean 导致解析不了

解决,定义的bean类实现 basebean

 

7 Namwspace 'app' is not bound

主要的问题是根节点少了一个声明。

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

参考:https://blog.csdn.net/mr_hjy/article/details/87436179

 

8 用Java改变TextView中的textStyle

例 字体加粗

xxx.setTypeface(null, Typeface.BOLD);

 

9 Java 自定义路由

try {
                JSONObject param = new JSONObject();
                param.put("selectTopic", true);
                JSONObject data = new JSONObject();
                data.put("name", "topic_list");
                data.put("param", param);
                JSONObject route = new JSONObject();
                route.put("page", "flutter");
                route.put("data", data);
                .jump(route);
            }catch (Exception e){
                e.printStackTrace();
}

 

10 Android开发神器 Pandora

将pandora集成后,app只需摇一摇即可出现工具箱,包含ui、网络、沙盒(数据库等)、选择控件等功能

 

11 命令行编辑

./gradlew build (或者执行 ./gradlew assembleEnvtest 只打包测试版本)

cd build/outputs/apk/debug

adb install -r app-debug.apk 安装

 

12 【android】AudioManager音量控制

//音量控制,初始化定义

AudioManager mAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);

//最大音量

int maxVolume = mAudioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);

//当前音量

int currentVolume = mAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC);

 

直接控制音量的多少:

 

if(isSilent){

  mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC, 0, 0);

}else{

  mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC, tempVolume, 0); //tempVolume:音量绝对值

}

 

13 AudioManager(音频管理器)

https://www.runoob.com/w3cnote/android-tutorial-audiomanager.html

14 大家对HttpUrlConnection这个类并不陌生,它处于java.net包下的,是JDK支持的。它主要用来服务器端发送Http请求

 

15 EventBus发消息所在文件,不用注册EventBus,如果注册了EventBus,没有接受,就会报错

EventBusException: Subscriber class *** and its super classes have no public methods with the @Subsc

 

16 ScrollView下轮播图片加载不出来,原因是ScrollView下只有一个轮播组件

结局:ScrollView下放一个RelativeLayout或者LinearLayout,再把轮播组件放到RelativeLayout内

 

注意:ScrollView的子元素只能有一个,可以是一个View(如ImageViewTextView等) 也可以是一个ViewGroup(如LinearLayoutRelativeLayout等),其子元素内部则不再限制,否则会报以下异常。

 

17 adb导出手机日志

1 adb devices 看看有没有连接成功手机

2 adb logcat -d > log.txt 已log.txt文件名保存 

 

18 在Android开发中,常常需要调用对话框,但会遇到这样一种情况,在显示对话框的时候,点击对话框以外的屏幕其他区域,会关闭对话框。以下是解决该问题的设置:

 
AlertDialog.Builder builder = new AlertDialog.Builder(context);

 
//不关闭写法
builder.setCancelable(false); 
 
//关闭写法
builder.setCancelable(true); 

参考:https://blog.csdn.net/xiaohei5188/article/details/16827709

 

19 ImageView实现圆角效果

方法一:使用CardView包裹ImageView, CardView可以设置圆角

方法二:自定义CustomImageView继承ImageView实现圆角效果

如果想单独设置左上角,右上角2个角是圆角,另外2个角不是圆角,就要使用自定义CustomImageView

坑:为什么使用自定义CustomImageView设置的圆角不起作用,原因是高度和宽度用的是match_parent, 把高度和宽度设置成固定值就起作用了

 

20 android 重构

参考1: https://www.jianshu.com/p/28dc6e3ef59e

参考2:http://www.imooc.com/article/4095

android编码规范,参考:https://www.jianshu.com/p/f5a55dff62f0

 

21 AS 编译失败,可以删除android包下的.idea问价,然后重新build试试

 

22 透明度渐变动画

     //fromAlpha   动画开始的透明度,从0.0 --1.0 ,0.0表示全透明,1.0表示完全不透明

                //toAlpha       动画结束时的透明度,也是从0.0 --1.0 ,0.0表示全透明,1.0表示完全不透明

                alphaAnimation = new AlphaAnimation(0, 1);

                alphaAnimation.setDuration(2000);

                tvDemo.startAnimation(alphaAnimation);

 

23 TextView 代码中设置字体加粗

if (info.getMsgstatus() == 1) {
    holder.contentText.setTypeface(Typeface.defaultFromStyle(Typeface.BOLD));
//加粗
}else{
    holder.contentText.setTypeface(Typeface.defaultFromStyle(Typeface.NORMAL));
//常规
}

参考 https://blog.csdn.net/qq_33650812/article/details/76670224

 

24 设置TextView字体颜色

一、通过配置文件XML写入属性

<.......android:color="#FFFFFF"/> 
<.......android:color="@color/colorPrimary"/>  //从colors.xml读取键值
二、在Activity内设置

tv.setTextColor(0xFFFFFFFF);//前面看帖子给的是0xFFFFFF,后面用Color.GRAY才发现,Android Studio里面显示应该是8个16位数,大家输入的时候需要小心
tv.setTextColor(Color.GRAY); //使用Color的常数
tv.setTextColor(Color.rgb(255, 255, 255)); //用Color的rgb进行转换
tv.setTextColor(Color.parseColor("#FF0000"));  //用Color的parseColor进行转换
tv.setTextColor(Context.getResources().getColor(R.color.colorPrimary));//通过获取上下文,进行获取colors.xml内配置的值,一定要配置好Context
————————————————
参考:https://blog.csdn.net/sharpeha/article/details/89485353

 

24 获取TextView的行数

网上搜资料查到可以通过textView.getLineCount()获取,但是获取不到

下面方法可以获取:
1 首先定义一个StaticLayout staticLayout

2 新建StaticLayout实例

3 通过staticLayout.getLineCount()获取

private StaticLayout staticLayout;
   
staticLayout = new StaticLayout(item.getName(), tvName.getPaint(), width, Layout.Alignment.ALIGN_NORMAL, 1, 0, false);

int lineCount = staticLayout.getLineCount()

 

25 android 启动页的配置

<intent-filter>
          <action android:name="android.intent.action.MAIN" />

          <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
                    

 

26 Unable to add window -- token null is not valid; is your activity running?

在调用PopupWindow或者Dialog时,PopupWindow需要依附在一个当前创建好的Activity,如果所依赖的Activity不在running,就会出现上面的问题,解决方法有3个,可以一个一个试

1)使用的Context对象不对,使用了getApplicationContext(),解决方法用当前Activity.this替代getApplicationContext()

YourActivityName.this instead of getApplicationContext() at

Dialog dialog = new Dialog(getApplicationContext());

2)有可能当前Activity还没有渲染完成就调用,使用Handler增加一个延时可以解决,参考https://www.cnblogs.com/mochaMM/p/5098343.html

3)重写onWindowFocusChanged方法,参考https://blog.csdn.net/wuzhipeng1991/article/details/38656967

 

27 AS大小写切换键

大小写切换

Ctrl+Shift+U

 

28  java.lang.IllegalStateException

使用Rxjava导致的内存泄漏导致的问题

rxjava虽然好用,但是总所周知,容易遭层内存泄漏。也就说在订阅了事件后没有及时取阅,导致在activity或者fragment销毁后仍然占用着内存,无法释放。而disposable便是这个订阅事件,可以用来取消订阅。

参考
链接:https://www.jianshu.com/p/2a882604bbe8

 

29 java float转int,直接舍去小数后面的数字,不是四舍五入,注意,防止入坑

 

30 安装zsh后adb每次都要重新运行source ~/.bash_profile才可以使用,解决方法,在.zshrc文件的第一行加入source ~/.bash_profile,就可以解决这个问题

 

31 AIDL(Android Interface Definition Language)

 

32 

当代码库远程迁移后,修改本地代码关联的远程地址

 
git remote set-url origin http://jcode.cbpmgt.com/git/<your rep name>.git/

 

33 

java中设置ImageView的src

if(view instanceof ImageView){
     ((ImageView)view).setImageResource(getResources().getDrawable(R.drawable.xxx)
); } // 设置背景用:  viewgroup.setBackgroundResource(background);

 

34

switch case种不能对null进行switch,否则会出现
Attempt to invoke virtual method 'int java.lang.String.hashCode()' on a null object reference

 

35 GridView设置左右边距都为16,例如有4列

/**
         *  gridView的item左右边距都是16,item居中,所以
         *  gridViewMargin + (ScreenWidth - 2 * gridViewMargin - 80 * 4)/8 = 16;
         *  得出gridViewMargin = (448 - ScreenWidth) / 6;
         */

 

36 gradient angle角度方向问题

ndroid:angleInteger,代表渐变颜色的角度, 0 is left to right, 90 is bottom to top. 必须是45的整数倍. 

默认是 0.该属性只有在type=linear情况下起作用,默认的type为linear。

 默认情况下,从左到右

angle = 270, 从上到下

参考https://blog.csdn.net/l_215851356/article/details/79408848

 

37 android获取textview的行数

mTextView.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {

@Override
public void onGlobalLayout() {
// TODO Auto-generated method stub
Log.e(TAG, "行数"+mTextView.getLineCount());

 mTextView.getViewTreeObserver().removeGlobalOnLayoutListener(this);

if(mTextView.getLineCount()>0){

 mTextView.getViewTreeObserver().removeOnGlobalLayoutListener(this);

}


}
});

参考:https://blog.csdn.net/weixin_30912051/article/details/95115518?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.control

 

38 textview的文字超出屏幕宽度

textView的右边还有一个textView2,达到效果是textview2一直在textView右边,当textView2到屏幕最右边时,如果textView的文字过长,则不显示超出的问题

使用ConstraintLayout和RelativeLayout作为父控件达不到要实现的效果

暂时没有找到解决方案,因为textView必须确定左右边距才可以实现文字过长不显示的效果,但是右边界确定不了,我觉得重写textView或者改源码应该可以

 

39 kotin textView设置string中的文字

tv_do.text = resources.getString(R.string.do)

40 kotlin map 使用

val map = HashMap<String, String>()
map["topicId"] = "" + item.topicId
map["contentId"] = "" + item.id

或者
hashMapOf("Uid" to mUserId.toString()

41 检测Android应用的启动与关闭.md
参考 https://github.com/hehonghui/android-tech-frontier/blob/master/issue-8/检测Android应用的启动与关闭.md

42
android 解决getColor()方法过时
https://blog.csdn.net/bzlj2912009596/article/details/79620231