android开发中遇到的那些乱七八糟的方法、类

1.ComponentName

此类主要是获取是包名Activity名,以及提转到此Activity使用

        ntent.setComponent(componetName);
        startActivity(intent);


2.     startActivities(Intent[])
        startActivities(buildIntentsToViewsLists());
   我们经常用到的是startActivity(Intent),而startActivities(Intent[])的作用与之完全相同,
   无非就是将Intent[]中的三个Intent所指向的跳转目标Activity从后至前依次添加到当前Activity栈中,如果大家在点击完按钮后用“Back”键返回,
   会发现返回的顺序和Intent[]中的顺序从后至前一致。


3.去除标题栏
          requestWindowFeature(Window.FEATURE_NO_TITLE);//去掉标题栏
   //取消状态栏
          this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
          WindowManager.LayoutParams.FLAG_FULLSCREEN);


4.直接用色值给TextView上色
          Color.parseColor("#FFFFFF"));
          tv.setTextColor(Color.rgb(255, 255, 255)); 
          setTextColor(0xff737373); 

5.线程

 interrupt()方法能即可打断正在执行的线程,如果此时线程正在sleep();打断就会报错

6. 按back不退出程序返回桌面   

 Intent home = new Intent(Intent.ACTION_MAIN);   
          home.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);   
          home.addCategory(Intent.CATEGORY_HOME);   
          startActivity(home); 

7.安装SDK上的一个apk 

  public void installApk(File file) {
		Uri uri = Uri.fromFile(file);
		Intent intent = new Intent(Intent.ACTION_VIEW);
		intent.setDataAndType(uri, "application/vnd.android.package-archive");
		startActivity(intent);
	}

8.TextVIew文本中分段显示不同颜色文本

editText2.setText(Html.fromHtml(  "<font color=#E61A6B>红色代码</font> "+ "<i><font color=#1111EE>蓝色斜体代码</font></i>"+"<u><i><font color=#1111EE>蓝色斜体加粗体下划线代码</font></i></u>"));

很遗憾Html类不支持 设定字体的大小 不过可以在文本框中设置

 

9.电话拨号界面

 public void callNumber(String number) {
	Intent in2 = new Intent();
	in2.setAction(Intent.ACTION_DIAL);// 指定意图动作
	in2.setData(Uri.parse("tel:" + number));// 指定电话号码
	startActivity(in2);
    }

10.截屏

// 获取Activity的截屏,this指向一个activity
private Bitmap takeScreenShot()
{
	View view = this.getWindow().getDecorView();
	view.setDrawingCacheEnabled(true);
	view.buildDrawingCache();
	return view.getDrawingCache();
}

11.RadioButton 选择背景

android:button="@drawable/radiou_selector" //跟其他控件稍微有点不同

12.获取控件宽高

用监听的方式

 使用ViewTreeObserver的众多回调可以完成这个功能,比如使用OnGlobalLayoutListener这个接口,当view树的状态发生改变或者view树内部的view的可见性发生改变时,onGlobalLayout方法将被回调,因此这是获取view的宽高一个很好的时机。需要注意的是,伴随着view树的状态改变等,onGlobalLayout会被调用多次。

ViewTreeObserver vto2 = titleLayout.getViewTreeObserver();

	vto2.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
	    @Override
	    public void onGlobalLayout() {
		titleLayout.getViewTreeObserver().removeGlobalOnLayoutListener(
			this);
		showToast(titleLayout.getHeight()+"");
	    }
	});
mViewTreeObserver.addOnPreDrawListener(new OnPreDrawListener()
        {
            @Override
            public boolean onPreDraw()
            {
                // TODO Auto-generated method stub
                mTextView.getViewTreeObserver().removeOnPreDrawListener(this);
                System.out.println("onPreDraw width=" + mTextView.getWidth() + " height=" + mTextView.getHeight());
                return true;
            }
        });

 

onWindowFocusChanged函数的含义是:view已经初始化完毕了,宽/高已经准备好了,这个时候去获取宽高是可以成功获取的。但是需要注意的是onWindowFocusChanged函数会被调用多次,当Activity的窗口得到焦点和失去焦点时均会被调用一次,如果频繁地进行onResume和onPause,那么onWindowFocusChanged也会被频繁地调用。

public void onWindowFocusChanged(boolean hasFocus){  
    if(hasFocus){  
        int height = view.getHeight();  
        int width = view.getWidth();  
    }  
}

通过post可以将一个runnable投递到消息队列的尾部,然后等待UI线程Looper调用此runnable的时候,view也已经初始化好了

v_view1.post(new Runnable() {
    @Override
    public void run() {
        L.i("post(Runnable) : v_view1.getWidth():" + v_view1.getWidth()
                + "  v_view1.getHeight():" + v_view1.getHeight());
    }
});

 

13.获取屏幕分辨率和像素密度

1.drawable-(hdpi,mdpi,ldpi)的区别 dpi是“dot per inch”的缩写,每英寸像素数。 四种密度分类: ldpi (low), mdpi (medium), hdpi (high), and xhdpi (extra high) 一般情况下的普通屏幕:ldpi是120,mdpi是160,hdpi是240,xhdpi是320。

2.WVGA,HVGA,QVGA的区别 VGA是“Video Graphics Array”,显示标准为640*480。 WVGA(Wide VGA)分辨率为480*800 HVGA(Half VGA)即VGA的一半分辨率为320*480 QVGA(Quarter VGA)即VGA非四分之一分辨率为240*320。

3.drawable-(hdpi,mdpi,ldpi)和WVGA,HVGA,QVGA的联系 hdpi里面主要放高分辨率的图片,如WVGA (480×800),FWVGA (480×854) mdpi里面主要放中等分辨率的图片,如HVGA (320×480) ldpi里面主要放低分辨率的图片,如QVGA (240×320) 系统会根据机器的分辨率来分别到这几个文件夹里面去找对应的图片。

先适应屏幕密度再适应分辨率

 DisplayMetrics metric = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(metric);
        int width = metric.widthPixels;  // 屏幕宽度(像素)
        int height = metric.heightPixels;  // 屏幕高度(像素)
        float density = metric.density;  // 屏幕密度(0.75 / 1.0 / 1.5)
        int densityDpi = metric.densityDpi;  // 屏幕密度DPI(120 / 160 / 240)

 

14. 读写权限

  <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>

 

15.代码除法View的点击事件

btn1.performClick();

 

16.通知content provider 收录指定位置文件

   Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
                    intent.setData(Uri.fromFile(new File(capturePath)));
                    sendBroadcast(intent);

 

17.注销功能

Intent logoutIntent = new Intent(SettingActivity.this, LoginActivity.class);
                logoutIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
                startActivity(logoutIntent);

 

18.TabLayout设置分割线、防遮挡

 <TableLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:divider="@drawable/line"    //注意这里一定要用drawable 直接写色值不显示
        android:dividerPadding="1dp"
        android:orientation="horizontal"
        android:padding="10dp"
        android:showDividers="middle|end"
        android:stretchColumns="1">


以下是 line.xml的代码

<shape
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle"
    android:useLevel="false">

    <solid
        android:color="#DDDDDD"></solid>
    <size
        android:height="1dp"/>
</shape>

屏幕附近文字防止覆盖.如右侧文字当TextView设置了pading或者 margin 后会导致最右侧文字显示不全

<TableLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:divider="@drawable/line"
            android:dividerPadding="1dp"
            android:orientation="horizontal"
            android:paddingBottom="10dp"
            android:paddingLeft="10dp"
            android:paddingTop="10dp"
            android:showDividers="middle|end"
            android:stretchColumns="1"<!--伸展属性-->
            android:shrinkColumns="1"><!--收缩属性,设置后第二例文本变为多行-->

            <TableRow
                android:gravity="bottom"
                android:paddingBottom="10dp"
                android:paddingLeft="10dp"
                android:paddingTop="10dp"  <!--设置padingRight marginRight后 文本可能显示不全 -->
                >

                <TextView
                    android:gravity="bottom"
                    android:text="隐患简题*:"
                    android:textColor="@android:color/black"
                    android:textSize="18dp"/>

                <TextView
                    android:id="@+id/title"
                    android:maxLines="3"                   android:text="123456789123456789123456789123456789123456789123456789123456789123456789"
                    android:textColor="#8d8d8d"
                    android:textSize="18dp"/>
            </TableRow>

 

9. 能输入ip地址的编辑框

<EditText
            android:id="@+id/ip"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:ems="10"
            android:gravity="center"
            android:hint="请输入IP地址"
            android:inputType="number"
            android:digits="0123456789."//重点是这个属性,里面限制能输入的字符
            />

 

20. 虚线 

先写一个shape,命名为shape_line_dash.xml
  <?xml version="1.0" encoding="utf-8"?>
  <shape xmlns:android="http://schemas.android.com/apk/res/android"
         android:shape="line">

      <!--线宽为dashWith,线之间空隙dashGap,dashGap=0dp时,是实线 -->
      <stroke
          android:width="@dimen/dp1"
          android:color="#f00"
          android:dashGap="@dimen/dp2"
          android:dashWidth="@dimen/dp4"/>
  </shape>
再在布局文件中写一个View,引用第一步中的shape


  <View
      android:layerType="software"
      android:layout_width="match_parent"
      android:layout_height="@dimen/dp2"
      android:layout_marginLeft="@dimen/dp17"
      android:layout_marginRight="@dimen/dp17"
      android:background="@drawable/shape_line_dash"/>
注意: 
  1.引用的时候,View的height要大于shape中stroke的width,不然会显示不出来,或者显示不全。
  2.还要设置一个属性layerType为software,不然显示出来的是实线。

 

 

 

 

 

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
WPS文字转Word文档格式乱七八糟可能是由于以下几个原因导致的: 1. 版本兼容性问题:WPS和Word是两款不同的办公软件,它们使用的文件格式不完全相同。当你使用WPS文字转换为Word文档时,某些格式可能无法完全转换或被转换成不同的格式,导致文档格式混。 2. 复杂格式处理问题:如果原始文档包含复杂的格式,如表格、图表、插图等,WPS文字转换为Word可能无法完全保留原始格式,并且可能会出现错位、缺失或码等问题。 3. 字体兼容性问题:WPS和Word使用的字体库有所不同,如果原始文档使用了某些特殊字体,在转换过程可能会导致字体替换或无法显示的问题,进而影响整体文档的格式。 为避免格式混,你可以尝试以下方法: 1. 使用相同软件:如果可能的话,建议在同一款软件完成文档的编辑和转换,例如,在WPS编辑的文档最好在WPS进行转换。 2. 简化格式:在进行转换前,尽量避免使用过多的复杂格式和特殊字体,尽量使用常见的字体和格式,以增加转换的成功率。 3. 逐步转换:如果你的文档比较复杂,可以将文档分成多个部分进行转换,以便更好地处理格式问题。 4. 检查转换结果:在转换后,务必仔细检查文档的格式,并进行必要的调整和修复,以确保文档的可读性和准确性。 需要注意的是,由于WPS和Word是两个不同的软件,无法保证在转换过程完全保留原始文档的格式,因此可能会存在格式混的情况。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值