Android开发中那些问题(一)


一、学习Android开发但没有手机(现在估计这样的人属于稀有动物吧,呵呵),而又嫌模拟器太慢而且功能不全:

       可以尝试第三方模拟器 genymotion  、bluestacks

二、利用Vitamio框架,如何让MediaController靠上显示(最好别用自带的MediaControler,因为据我的经验它会引起videoview抖动、拉伸等各种问题,你可以自己写一个布局覆盖到videoview上面来控制):

  其实MediaController是一个PopupWindow,说道这里到家应该有点思路了。看一下MediaController这个类里面的mWindow.showAtLocation(mAnchor, Gravity.NO_GRAVITY, anchorRect.left, anchorRect.top);    改为Gravity.TOP就行,但是低版本里面即使改为Gravity.TOP也不行。最好是用高版本的Vitamio,如果用低版本的,可以把高版本中的setWindowLayoutType();这个让方法放到showAtLocation()前面,就OK

三、Logcat里面的内容为什么会瞬间就跑掉了?

  那是因为logcat达到它缓存的最大数量就要清除以前的,可以这样设置,Window ---> Preference---->Android---->Logcat,把Maximum number of Logcat Message 修改为500000,就OK

四、滑动ViewPager,里面的Fragment内容消失了,why?

  添加pager.setOffscreenPageLimit(3); 3可以改为fragment数量,因为viewpager默认保存相邻两个fragment的状态,而如果不相邻,那么fragment内容就会被清除掉

五、用vitamio开源框架时遇到android.widget.RelativeLayout$LayoutParams cannot be cast to io.vov.vitamio.widget.CenterLayout$LayoutParams问题:

  解决方法:由于调用 new CenterLayout().setLayoutParams(new RelativeLayou.LayoutParams(600,300));因此报上面的错,这是布局转化异常,但是CenterLayout外面 是RelativiLayout呀,这是为什么呢?找了好久也没找到原因,那个着急阿!后来实在没办法就把io.vov.vitamio.widget.VideoView外面套的io.vov.vitamio.widget.CenterLayout去掉就好了,也没什么影响!以前遇到过类似问题,是android.widget.RelativeLayout$LayoutParams cannot be cast to android.widget.LinearLayout$LayoutParams问题,这是为什么呢?这是由于CenterLayout外面是LinearLayout布局,改为RelativeLayout就OK啦

六、用PopupWindow时遇到android.view.WindowLeaked

    解决方法:Window Leaked大概就是说一个窗体泄漏了,也就是我们常说的内存泄漏,这是为什么呢?这是因为Android的每一个Activity都有个WindowManager窗体管理器,同样,构建在某个Activity之上的Dialog、PopupWindow也有相应的WindowManager窗体管理器。因为对话框、PopupWindow不能脱离Activity而单独存在着,所以当某个Dialog或者某个PopupWindow正在显示的时候我们去finish()了承载该Dialog(或PopupWindow)的Activity时,就会抛Window Leaked异常了,因此要在Acitivity的onDestroy()方法里把Dialog或PopupWindow  及时dismiss()掉。还有类似Cursor、Socket要及时close()掉

七. 编译源码 安装 时会出现 Failure [INSTALL_FAILED_DEXOPT]:

   解决方法:在Android.mk中添加,LOCAL_DEX_PREOPT := false,即可

八、Select at least one project解决办法

   解决方法:这个问题是在导入工程的时候出现的,这是因为有同名的工程的,进入windows->show view->project explorer 这里找出来删掉再导入工程即可。

九、怎么获取videoview的当前时间和总时间?

    private long currentPosition, totalDuration;

   videoView.setOnPreparedListener(new OnPreparedListener() {

            @Override
            public void onPrepared(MediaPlayerInterface mp) {
                currentPosition = videoView.getCurrentPosition();
              
                totalDuration = videoView.getDuration();
           
            }
        });

十、EditText设置imeOptions无效的问题

虽然通常输入法软键盘右下角会是回车按键

但我们经常会看到点击不同的编辑框,输入法软键盘右下角会有不同的图标

点击浏览器网址栏的时候,输入法软键盘右下角会变成“GO”或“前往”

而我们点击Google搜索框,输入法软键盘右下角会变成 放大镜 或者“搜索”

而决定这个图标的变换的参数就是EditText中的 android:imeOptions

android:imeOptions的值有actionGo、 actionSend 、actionSearch、actionDone等

  <EditText
        android:id="@+id/editText"
        android:layout_width="200dp"
        android:layout_height="wrap_content"
        android:imeOptions="actionSearch"
     />

而当我们设置这一切后,却发现点击输入框,输入法键盘完全没变化,还是回车键

这并不是上面的属性和方法无效,而是我们还需要设置别的属性来使它们生效

经过试验 设置下面两个属性中的一个即可使这个属性生效

1 将singleLine设置为true

2 将inputType设置为text 

  <EditText
        android:id="@+id/editText"
        android:layout_width="200dp"
        android:layout_height="wrap_content"
        android:imeOptions="actionSearch"
        android:singleLine="true"
        android:inputType="text"
     />

  

展开阅读全文
©️2020 CSDN 皮肤主题: 书香水墨 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值