Android中实用小知识

不断更新中,有好的提议的请评论提示,我会尽快补上。谢谢。

1、Edit Text改变光标的颜色、密码

光标的颜色

EditText有一个属性:android:textCursorDrawable,这个属性是用来控制光标颜色的
android:textCursorDrawable="@null","@null"作用是让光标颜色和text color一样

密码:

android:inputType="textPassword"
Edittext设置取消下划线:background="@null"
RadioButton设置默认选中
<RadioGroup
android:id="@+id/sexMenu"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/sex"
android:orientation="horizontal"
android:checkedButton="@+id/radioMan"//重点

>
<RadioButton
android:id="@id/radioMan" 
android:text="男"

/>

textView设置单行过长显示省略
android:singleLine="true"
android:maxWidth="90dp"
android:ellipsize="end" //省略号显示在结尾
android:maxEms="11" //最多显示几个字符 

2、动态加载View

第一种

<span style="white-space:pre">	</span>LinearLayout ll = (LinearLayout)findViewById(R.id.viewObj);
<span style="white-space:pre">	</span>// 将TextView 加入到LinearLayout 中
<span style="white-space:pre">	</span>TextView tv = new TextView(this);
<span style="white-space:pre">	</span>tv.setText(Hello World);
<span style="white-space:pre">	</span>ll. addView ( tv );

第二种

//在布局中新建一个相对布局
                RelativeLayout relative = new RelativeLayout(MainActivity.this);
                //设置背景颜色
                relative.setBackgroundColor(Color.BLUE);
                //设置布局的长宽,如果父布局是LinearLayout,就用LinearLayout.LayoutParams
                LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
                //设置Margin 参数:左上右下
                params.setMargins(80,10,10,10);
                //将参数填入相对布局中
                relative.setLayoutParams(params);
                //在相对布局中添加一个textView
                TextView tv = new TextView(this);
                //textView 的参数,因为父布局是相对布局,所以用RelativeLayout.Params
                RelativeLayout.LayoutParams p = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);
                //margin参数
                p.setMargins(100,0,0,0);
                //设置textView在RelativeLayout中的位置
                p.addRule(RelativeLayout.CENTER_IN_PARENT);
                //写入参数
                tv.setLayoutParams(p);
                //设置文字
                tv.setText("ZJH");
                //设置文字颜色
                tv.setTextColor(Color.WHITE);
                //将textView添加到相对布局中
                relative.addView(tv);
                //将相对布局添加到最外层的LinearLayout中
                count.addView(relative);


3、调用系统相机

 //调用相机
    File mPhotoFile = new File(folder,filename);
    Intent captureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    Uri fileUri = Uri.fromFile(mPhotoFile);
    captureIntent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri);
    mActivity.startActivityForResult(captureIntent, CAPTURE_PHOTO_REQUEST_CODE);
 /**
     * 判断系统中是否存在可以启动的相机应用
     *
     * @return 存在返回true,不存在返回false
     */
    public boolean hasCamera() {
        PackageManager packageManager = mActivity.getPackageManager();
        Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        List list = packageManager.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);
        return list.size() > 0;
    }


4、调用相册

//中拿到照片
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == CapturePhotoHelper.CAPTURE_PHOTO_REQUEST_CODE & resultCode == RESULT_OK) {
            File photoFile = mCapturePhotoHelper.getPhoto();//获取拍完的照片
            if (photoFile != null) {
                PhotoPreviewActivity.preview(this, photoFile);//跳转到预览界面
            }
            finish();
        } else {
            super.onActivityResult(requestCode, resultCode, data);
        }
    }

 

 /**
     * 获取图片的旋转角度
     *
     * @param path 图片绝对路径
     * @return 图片的旋转角度
     */
    public static int getBitmapDegree(String path) {
        int degree = 0;
        try {
            // 从指定路径下读取图片,并获取其EXIF信息
            ExifInterface exifInterface = new ExifInterface(path);
            // 获取图片的旋转信息
            int orientation = exifInterface.getAttributeInt(ExifInterface.TAG_ORIENTATION, ExifInterface.ORIENTATION_NORMAL);
            switch (orientation) {
                case ExifInterface.ORIENTATION_ROTATE_90:
                    degree = 90;
                    break;
                case ExifInterface.ORIENTATION_ROTATE_180:
                    degree = 180;
                    break;
                case ExifInterface.ORIENTATION_ROTATE_270:
                    degree = 270;
                    break;
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        return degree;
    }
 
    /**
     * 将图片按照指定的角度进行旋转
     *
     * @param bitmap 需要旋转的图片
     * @param degree 指定的旋转角度
     * @return 旋转后的图片
     */
    public static Bitmap rotateBitmapByDegree(Bitmap bitmap, int degree) {
        // 根据旋转角度,生成旋转矩阵
        Matrix matrix = new Matrix();
        matrix.postRotate(degree);
        // 将原始图片按照旋转矩阵进行旋转,并得到新的图片
        Bitmap newBitmap = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), matrix, true);
        if (bitmap != null & !bitmap.isRecycled()) {
            bitmap.recycle();
        }
        return newBitmap;
    }

5、进制之间的转换

// 十六进制转二进制
public String HToB(String a) {
String b = Integer.toBinaryString(Integer.valueOf(toD(a, 16)));
return b;
}
// 二进制转十六进制
public String BToH(String a) {
// 将二进制转为十进制再从十进制转为十六进制
String b = Integer.toHexString(Integer.valueOf(toD(a, 2)));
return b;
}
// 任意进制数转为十进制数
public String toD(String a, int b) {//其中b为10
int r = 0;
for (int i = 0; i < a.length(); i++) {
r = (int) (r + formatting(a.substring(i, i + 1))
* Math.pow(b, a.length() - i - 1));
}
return String.valueOf(r);
}
// 将十六进制中的字母转为对应的数字
public int formatting(String a) {
int i = 0;
for (int u = 0; u < 10; u++) {
if (a.equals(String.valueOf(u))) {
i = u;
}
}
if (a.equals("a")) {
i = 10;
}
if (a.equals("b")) {
i = 11;
}
if (a.equals("c")) {
i = 12;
}
if (a.equals("d")) {
i = 13;
}
if (a.equals("e")) {
i = 14;
}
if (a.equals("f")) {
i = 15;
}
return i;
}


// 将十进制中的数字转为十六进制对应的字母
public String formattingH(int a) {
String i = String.valueOf(a);
switch (a) {
10: i = "a";
break;
11: i = "b";
break;
12: i = "c";
break;
13: i = "d";
break;
14: i = "e";
break;
15: i = "f";
break;
}
return i;
}
6、Android获取屏幕宽度
android获取屏幕的高度和宽度用到WindowManager这个类,两种方法: 
 
1、WindowManager wm = (WindowManager) getContext()
                    .getSystemService(Context.WINDOW_SERVICE);
 
     int width = wm.getDefaultDisplay().getWidth();
     int height = wm.getDefaultDisplay().getHeight();
 
2、WindowManager wm = this.getWindowManager();
 
     int width = wm.getDefaultDisplay().getWidth();
     int height = wm.getDefaultDisplay().getHeight();







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值