小知识点总结

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() {
			@Override
			public 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转drawable
ColorDrawable 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  

 


19.RecyclerView子View宽度不能全屏的问题,在Adapter的onCreateViewHolder创建子view的时候要把parent传进去; 

 

 

正确写法

LayoutInflater.from(context).inflate(R.layout.item_view,parent,false);

错误写法

LayoutInflater.from(context).inflate(R.layout.item_view,null);

 

20、EditText中imeOptions属性使用及设置无效解决

    1 将singleLine设置为true
    或者
    2 将inputType设置为text

21、查看安装包的包名、启动activity信息等 用aapt工具。

22、webview如果height用wrap_content的话,html的div用的position的话高度为0,会看不到内容。

23、获取手机的物理尺寸

DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
double x = Math.pow(dm.widthPixels/dm.xdpi,2);
double y = Math.pow(dm.heightPixels/dm.ydpi,2);
double screenInches = Math.sqrt(x+y);

24、

 

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值