小知识点总结

来源:互联网 发布:怎么开淘宝网店挣钱 编辑:程序博客网 时间:2024/06/07 15:49

1、textview设置compoundDrawable的时候需要对设置的drawable资源设置bounds,否则不显示;

mDrawableLeft = getActivity().getResources().getDrawable(R.drawable.ic_classify_icon);mDrawableLeft.setBounds(0, 0, mDrawableLeft.getMinimumWidth(), mDrawableLeft.getMinimumHeight());tvClassfiy1.setCompoundDrawables(mDrawableLeft, null, mDrawableRigtup, null);

2、FragmentTabHost使用的时候,当realcontent在host下面的时候,tabhost的高度不能设定为固定值,否则realcontent显示不出来。

3、webview注入js

webView.loadUrl("http://www.m********ial");webView.loadUrl("javascript:" + "var UID="+user.getId() +" ;");webView.loadUrl("javascript:" + "alert( UID);");

4、webView修改跳转链接

webView.setWebViewClient(new WebViewClient() {@Overridepublic boolean shouldOverrideUrlLoading(WebView view, String url) {String mUrl =url+"?uid="+user.getId();view.loadUrl(mUrl);return true;}});

5、Android中的dispatchTouchEvent()、onInterceptTouchEvent()和onTouchEvent()

dispatchTouchEvent是处理触摸事件分发,事件(多数情况)是从Activity的dispatchTouchEvent开始的。执行super.dispatchTouchEvent(ev),事件向下分发。onInterceptTouchEvent是ViewGroup提供的方法,默认返回false,返回true表示拦截。onTouchEvent是View中提供的方法,ViewGroup也有这个方法,view中不提供onInterceptTouchEvent。view中默认返回true,表示消费了这个事件。
View里的onTouchEvent默认返回值是true,当我们手指点击屏幕时候,先调用ACTION_DOWN事件,当onTouchEvent里返回值是true的时候,onTouch会继续调用ACTION_UP事件,
如果onTouchEvent里返回值是false,那么onTouchEvent只会调用ACTION_DOWN而不调用ACTION_UP。


6、异常context启动activiity报错:android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity  context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?

解决办法:

Context中有一个startActivity方法,Activity继承自Context,重载了startActivity方法。如果使用Activity的startActivity方法,不会有任何限制,而如果使用Context的startActivity方法的话,就需要开启一个新的task,遇到上面那个异常的,都是因为使用了Context的startActivity方法。解决办法是,加一个flag。

intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);  


7.如果Activity的launchMode为singleTask、singleInstance,那么startActivityForResult将接收不到返回值,不走onActivityResult方法。

8、FragmentTabHost获取fragment实例,当前详细的fragment就是它自己,不用实例化;如:查找fragment的view直接findviewbyid

switch(mTabHost.getCurrentTab()){           case 0:{    //        TextView tv = (TextView)findViewById(R.id.tvLeftUpValue);        tv.setText(ds.getDataItemS("x00020001"));               }}


9、sqlite数据库存储操作比较耗时,利用事务可以大大提高存储效率;

public static void insertAll(List<StructureEntity> items){App.getDbHelper().getDb().beginTransaction();for (StructureEntity structureEntity : items) {insert(structureEntity);}App.getDbHelper().getDb().setTransactionSuccessful();App.getDbHelper().getDb().endTransaction();}


10.ScrollView和HorizentalScrollView滚动到顶部、底部、最左、最右;


private void scrollToRight(){/** * 需要注意的是,该方法不能直接被调用因为Android很多函数都是基于消息队列来同步,所以需要一部操作, * addView完之后,不等于马上就会显示,而是在队列中等待处理,虽然很快,但是如果立即调用fullScroll, *  view可能还没有显示出来,所以会失败应该通过handler在新线程中更新 */Handler handler = new Handler();handler.post(new  Runnable() {public void run() {hScrollView.fullScroll(ScrollView.FOCUS_RIGHT);//最右hScrollView.fullScroll(ScrollView.FOCUS_LEFT);//最左hScrollView.fullScroll(ScrollView.FOCUS_DOWN);//底部hScrollView.fullScroll(ScrollView.FOCUS_UP);//顶部}});}

11、java实现selector

StateListDrawable stateListDrawable = new StateListDrawable();//color转drawableColorDrawable drawable = new ColorDrawable(App.getColorID());stateListDrawable.addState(new int[]{android.R.attr.state_checked},drawable);stateListDrawable.addState(new int[]{0}, getResources().getDrawable(R.drawable.swich_right));

12、集合排序

  1.  Collections.sort(mLeDevices, new Comparator<iBeacon>() {  
  2.                 @Override  
  3.                 public int compare(iBeacon h1, iBeacon h2) {  
  4.                     return h2.rssi - h1.rssi;  //h1-h2,升序,h2-h1降序
  5.                 }  
  6.             });  

13、android,java代码只能字体大小

setTextSize(int unit, int size)
TypedValue.COMPLEX_UNIT_PX : Pixels
TypedValue.COMPLEX_UNIT_SP : Scaled Pixels
TypedValue.COMPLEX_UNIT_DIP : Device Independent Pixels

14、获取WebView当前页面的标题,可能通过对WebChromeClient.onReceivedTitle()方法的重写来实现

        WebChromeClient wvcc = new WebChromeClient() {              @Override              public void onReceivedTitle(WebView view, String title) {                  super.onReceivedTitle(view, title);                  Log.d("ANDROID_LAB", "TITLE=" + title);                  txtTitle.setText("ReceivedTitle:" +title);              }            };  

15、
调用android内置安装的浏览器来打开网页.    Uri uri = Uri.parse("http://google.com");      Intent it = new Intent(Intent.ACTION_VIEW, uri);      startActivity(it);


16、view的touchListener中的event的getRawX()和getRawY()是以屏幕的最左上角开始算的值;


17、IO异常“ read failed: EBADF (Bad file descriptor)”,是因为process在直行脚本的过程中没有执行完成,被destroy()的导致的。


18、当运行一个命令的时候出现rm failed for CoeeRoat.apk, Read-only file system
解决办法:挂载设备 adb shell mount -o remount rw /system  



star

tActivityForResult 没有返回结果

startActivityForResult 没有返回结果

startActivityForResult 没有返回结果


1 0
原创粉丝点击