老司机代码

一、ScrollView中的TextView添加滚动条监听事件(解决滑动监听冲突)

  textView = (TextView) findViewById(R.id.info_desc);
  textView.setMovementMethod(ScrollingMovementMethod.getInstance());
  textView.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                // TODO Auto-generated method stub
                if(event.getAction()==MotionEvent.ACTION_DOWN){
                    //通知父控件不要干扰
                    v.getParent().requestDisallowInterceptTouchEvent(true);
                }
                if(event.getAction()==MotionEvent.ACTION_MOVE){
                    //通知父控件不要干扰
                    v.getParent().requestDisallowInterceptTouchEvent(true);
                }
                if(event.getAction()==MotionEvent.ACTION_UP){
                    v.getParent().requestDisallowInterceptTouchEvent(false);
                }
                return false;
            }
        });

二、ViewPager+banner轮播
http://www.jianshu.com/p/2e577242fe87

三、沉浸式状态栏(状态栏最上面和app颜色一致)

SystemBarTintManager

android:fitsSystemWindows="true"
android:clipToPadding="true"

//Android4.4 沉浸模式使通知栏和app最上端颜色一致

//透明状态栏
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
//透明导航栏
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
    setTranslucentStatus(true);
    SystemBarTintManager mTintManager = new SystemBarTintManager(this);
    mTintManager.setStatusBarTintEnabled(true);
    mTintManager.setNavigationBarTintEnabled(true);
    mTintManager.setTintColor(Color.parseColor("#54AC34"));
}

//沉浸式状态栏

private void setTranslucentStatus(boolean on) {
        Window win = getWindow();
        WindowManager.LayoutParams winParams = win.getAttributes();
        final int bits = WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS;
        if (on) {
            winParams.flags |= bits;
        } else {
            winParams.flags &= ~bits;
        }
        win.setAttributes(winParams);
    }

//获取导航栏高度

       Class<?> c = null;
        Object obj = null;
        Field field = null;
        int x = 0, sbar = 0;
        try {
            c = Class.forName("com.android.internal.R$dimen");
            obj = c.newInstance();
            field = c.getField("status_bar_height");
            x = Integer.parseInt(field.get(obj).toString());
            sbar = getResources().getDimensionPixelSize(x);
            Log.v("TAG", sbar + "");
        } catch(Exception e1) {
            e1.printStackTrace();
        }

软键盘 覆盖屏

android:windowSoftInputMode="stateUnspecified|adjustPan"

向上压缩屏幕内容

android:windowSoftInputMode="adjustResize" 

动态设置hint大小,与textsize不一致

EditText editText = (EditText) rootView.findViewById(R.id.et);
// 新建一个可以添加属性的文本对象
SpannableString ss = new SpannableString("喝酒就要喝一斤!");
// 新建一个属性对象,设置文字的大小
AbsoluteSizeSpan ass = new AbsoluteSizeSpan(8,true);
// 附加属性到文本
ss.setSpan(ass, 0, ss.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
// 设置hint
editText.setHint(new SpannedString(ss)); // 一定要进行转换,否则属性会消失

空格

&#160;

倒计时60秒的button

 public static int count = 60;
    private Handler handler = new Handler(){
        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            button_sendcode.setText("已发送("+msg.what+"秒)");
            if(msg.what==0){
                button_sendcode.setEnabled(true);
                button_sendcode.setText("获取验证码");
            }
        }
    };

 public void startCount() {
        count=60;
        button_sendcode.setEnabled(false);
        timer = new Timer();
        timerTask = new TimerTask() {
            @Override
            public void run() {
                if (count >= 0) {
                    handler.sendEmptyMessage(count);
                }
                else
                {
                    timerTask.cancel();
                }
                count --;
            }
        };
        timer.schedule(timerTask,0, 1000);
    }

//弹出alertDialog

 //签收弹框
    AlertDialog builder;
    private void ifSing(final int index){
        builder = new AlertDialog.Builder(MyOrderListQuick.this).
                setMessage("是否确认签收").
                setPositiveButton("确认", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        //是否签收
                        Sing(index);
                        dialog.dismiss();
                    }
                }).
                setNegativeButton("取消", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        dialog.dismiss();
                    }
                }).create();
        builder.show();
        builder.setCanceledOnTouchOutside(false);
    }

//密码格式

<android:digits="qwertyuioplkjhgfdsazxcvbnmQWERTYUIOPLKJHGFDSAZXCVBNM1234567890_">

//查看任务栈信息

Terminal中输入:adb shell dumpsys activity activities

//只看activity

adb shell dumpsys activity activities | sed -En -e '/Running activities/,/Run #0/p'

//横竖屏切换不加载oncreate等方法

 android:configChanges="orientation|keyboardHidden|screenSize"

//Android studio ADB启动失败
1.打开cmd,输入adb kill-server,adb start-server,adb nodaemon server
启动不起来是因为adb的端口被占用了
2.输入netstat -aon|findstr “5037”,可以看到进程号为10624的进程(这个进程号因机器和时间而异)在占用5037端口(adb需要使用此端口)
3.打开任务管理器,选择“进程”选项卡,点击选项栏“查看-选择列…”,勾选“PID(进程标识符)”,点确定。会看到每个进程都会显示它们的PID了。找到进程号为10624的进程,结束这个进程。
4.在cmd中,重新adb start-server,会看到成功启动了。
5.重启Android Studio,正常启动完成。

Android studio 配置Android annotation(注解)
http://blog.csdn.net/hanhailong726188/article/details/40585057

小米monkey测试 参数

C:\Users\Administrator>adb shell monkey -v --throttle 300 --pct-touch 30 --pct-motion 20 --pct-nav 20 --pct-majornav 15 --pct-appswitch 5 --pct-anyevent 5 --pct-trackball 0 --pct-syskeys 0 -p com.enlife.store 10000
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值