android开发中总会遇到的小问题【持续更新...】

1、当 屏幕旋转 或者 程序长时间置于后台,程序重新启动的时候,在activity中的fragment会重新绘制吗?如果有,如何处理?
     答:fragment是依赖activity的,当activity重新启动,fragment也会重新绘制,从而导致多次绘制。

           解决方案:onCreate(Bundle savedInstanceState)中判断savedInstanceState是否为null。如果为null,则重新创建fragment。

2、使用aapt dump badging *.apk可以查看这个apk文件的程序名、包名、所用的sdk,程序版本以及权限信息等等。

3、使用系统alertDialog想修改标题问题的颜色。

  
  TextView titleTxt= (TextView)dialog.findViewById(mContext.getResources()
			.getIdentifier( "alertTitle", "id", "android" ));
  titleTxt.setTextColor(0xff3D7DC4);

4、listview item上包含EditText控件,在item上设置了android:descendantFocusability="blocksDescendants"(使子控件得不到焦点)
   之后,edittext始终不能编辑。直到看到【此博客】。
5、//播放动画
  View anview = view.findViewById(R.id.view);
  anview.setBackgroundResource(R.drawable.animplay);
  AnimationDrawable drawable = (AnimationDrawable) anview.getBackground();
  drawable.start();

  其中R.drawable.animplay.xml为放在drawable目录下的动画(如下)。
  
  <?xml version="1.0" encoding="utf-8"?>
  <animation-list xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:drawable="@mipmap/v_anim1" android:duration="300"/>
    <item android:drawable="@mipmap/v_anim2" android:duration="300"/>
    <item android:drawable="@mipmap/v_anim3" android:duration="300"/>
  </animation-list>
6、仿微信语音功能中,根据音量大小,voice的动画,可根据振幅获取相应的图片,进行显示。
  (1)根据振幅获取level:
    public int getVoiceLevel(int max) {
        try {
            if (isPrepared) {
                /**
                 * recorder.getMaxAmplitude():振幅 1-32767
                 * 除以32768得到0到1的值
                 * 然后乘以 max 【7】得到0到6之间的值
                 * 再加1 得到1到7
                 */
                return max * recorder.getMaxAmplitude() / 32768 + 1;
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

        return 1;
    }
   (2)根据level显示对应图片:
     <pre name="code" class="java">    public void updateVoiceLevel(int level) {
        if (mDialog != null && mDialog.isShowing()) {

//            switch (level) {
//                case 1:
//                    iv_voice.setImageResource(R.mipmap.v1);
//                    break;
//                case 2:
//                    iv_voice.setImageResource(R.mipmap.v2);
//                    break;
//                case 3:
//                    iv_voice.setImageResource(R.mipmap.v3);
//                    break;
//                case 4:
//                    iv_voice.setImageResource(R.mipmap.v4);
//                    break;
//                case 5:
//                    iv_voice.setImageResource(R.mipmap.v5);
//                    break;
//                case 6:
//                    iv_voice.setImageResource(R.mipmap.v6);
//                    break;
//                case 7:
//                    iv_voice.setImageResource(R.mipmap.v7);
//                    break;
//            }

            int resId = mContext.getResources().getIdentifier("v" + level, "mipmap", mContext.getPackageName());
            iv_voice.setImageResource(resId);
        }
    }
7、设置app内字体不受手机设置字体大小的影响。可通过BaseActivity中设置如下代码:
<pre name="code" class="java">        @Override
	public Resources getResources() {
		Resources res = super.getResources();
		Configuration config = new Configuration();
		config.setToDefaults();
		res.updateConfiguration(config, res.getDisplayMetrics());
		return res;
	}



 
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值