Android常用代码

Android实用技巧汇总
本文介绍了Android开发中的多项实用技巧,包括Base64字符串与图片的互转方法、ListView的美化细节、单位转换、软键盘控制及发送短信的方法等。

Base64字符串与图片互转

public Bitmap stringtoBitmap(String string){
    //将字符串转换成Bitmap类型
    Bitmap bitmap=null;
    try {
    byte[]bitmapArray;
    bitmapArray=Base64.decode(string, Base64.DEFAULT);
	bitmap=BitmapFactory.decodeByteArray(bitmapArray, 0, bitmapArray.length);
	} catch (Exception e) {
		e.printStackTrace();
	}
   
    return bitmap;
}
    
public String bitmaptoString(Bitmap bitmap){
//将Bitmap转换成字符串
    String string=null;
    ByteArrayOutputStream bStream=new ByteArrayOutputStream();
    bitmap.compress(CompressFormat.PNG,100,bStream);
    string=Base64.encodeToString(bStream.toByteArray(),Base64.DEFAULT);
    return string;
}

listview/gridview一些美化细节

1、listview在拖动的时候背景图片消失变成黑色背景,等到拖动完毕我们自己的背景图片才显示出来
解决:在XML中加入
android:scrollingCache=”false” 或 android:cacheColorHint=”#00000000″
2、listview的上边和下边有黑色的阴影
解决: android:fadingEdge=”none”
3、修改listview的Item默认选择时的黄色背景
解决:在java文件中使用listview.setSelector()方法,或使用如下代码
android:listSelector="#00000000"//这样写是透明的,也可加入Drawable图片
4、lsitview的每一项之间需要设置一个图片做为间隔
解决: android:divider=”@drawable/list_driver”


单位转换

    /**
     * 根据手机的分辨率从 dip 的单位 转成为 px(像素)
     */
    public static int dip2px(Context context, float dpValue) {
        final float scale = context.getResources().getDisplayMetrics().density;
        return (int) (dpValue * scale + 0.5f);
    }

    /**
     * 根据手机的分辨率从 px(像素) 的单位 转成为 dp
     */
    public static int px2dip(Context context, float pxValue) {
        final float scale = context.getResources().getDisplayMetrics().density;
        return (int) (pxValue / scale + 0.5f);
    }


Android 软键盘控制

1、禁止弹出软键盘

search_txt.setInputType(InputType.TYPE_NULL); // search_txt是一个EditText


2、控制软键盘的弹出和关闭

InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); 
if(imm.isActive())
{

imm.hideSoftInputFromWindow(parent_text.getWindowToken(), 0); //关闭系统软键盘

}else

{

imm.showSoftInput(parent_text, InputMethodManager.RESULT_SHOWN);

}


3、android软键盘弹出,会把原来的界面挤上去的问题

在项目的androidmanifest.xml文件中界面对应的<activity>里加入
android: windowsoftinputmode="adjustPan"
这样键盘就会覆盖屏幕。。
如果不想键盘覆盖屏幕,想让屏幕整体上移,就加入属性
android:windowsoftinputmode="stateVisible|adjustResize"

Android之发送短信的方法

android中可以通过两种方式发送短信 

第一:调起系统发短信功能;主要代码如下:

[java]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. Uri uri = Uri.parse("smsto:10010");              
  2. Intent it = new Intent(Intent.ACTION_SENDTO, uri);              
  3. it.putExtra("sms_body""102");              
  4. activity.startActivity(it);  
第二:调用系统短信接口直接发送短信;主要代码如下:

[java]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. SmsManager smsManager = SmsManager.getDefault();    
  2. List<String> divideContents = smsManager.divideMessage(content);      
  3. for (String text : divideContents) {      
  4.     smsManager.sendTextMessage("150xxxxxxxx"null, text, sentPI, deliverPI);      
  5. }   

这里主要讲解第二种方法,不跳转直接发送,对于用户体验来说是好的:

上面第一行代码,是获取短信管理器,

第二行是拆分短信内容,因为短信对于字数是有限制的

第三至五行就是真正发送短信了,

对于短信发送的参数如下:

smsManager.sendTextMessage(destinationAddress, scAddress, text, sentIntent, deliveryIntent) 

-- destinationAddress:目标电话号码,你要发给谁 
-- scAddress:短信中心号码,测试可以不填
-- text: 短信内容
-- sentIntent:发送 -->中国移动 --> 中国移动发送失败 --> 返回发送成功或失败信号 --> 后续处理  

                          即,这个意图包装了短信发送状态的信息,是否发送成功 
-- deliveryIntent: 发送 -->中国移动 --> 中国移动发送成功 --> 返回对方是否收到这个信息 --> 后续处理

                           即:这个意图包装了短信是否被对方收到的状态信息,对方是否成功接收(供应商已经发送成功,但是对方没有收到)。 

那么调用系统发送短信之后,还要处理返回的状态,代码如下:

处理返回的发送状态

[java]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. String SENT_SMS_ACTION = "SENT_SMS_ACTION";    
  2. Intent sentIntent = new Intent(SENT_SMS_ACTION);    
  3. PendingIntent sentPI = PendingIntent.getBroadcast(context, 0, sentIntent, 0);    
  4. // register the Broadcast Receivers    
  5. context.registerReceiver(new BroadcastReceiver() {    
  6.     @Override    
  7.     public void onReceive(Context _context, Intent _intent) {    
  8.         switch (getResultCode()) {    
  9.               case Activity.RESULT_OK:    
  10.                    Toast.makeText(context,    
  11.                 "短信发送成功", Toast.LENGTH_SHORT)    
  12.                 .show();    
  13.         break;    
  14.           case SmsManager.RESULT_ERROR_GENERIC_FAILURE:    
  15.         break;    
  16.           case SmsManager.RESULT_ERROR_RADIO_OFF:    
  17.         break;    
  18.           case SmsManager.RESULT_ERROR_NULL_PDU:    
  19.         break;    
  20.         }    
  21.     }    
  22. }, new IntentFilter(SENT_SMS_ACTION));    

处理返回的接收状态

[java]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. String DELIVERED_SMS_ACTION = "DELIVERED_SMS_ACTION";    
  2. // create the deilverIntent parameter    
  3. Intent deliverIntent = new Intent(DELIVERED_SMS_ACTION);    
  4. PendingIntent deliverPI = PendingIntent.getBroadcast(context, 0,    
  5.        deliverIntent, 0);    
  6. context.registerReceiver(new BroadcastReceiver() {    
  7.    @Override    
  8.    public void onReceive(Context _context, Intent _intent) {    
  9.        Toast.makeText(context,    
  10.   "收信人已经成功接收", Toast.LENGTH_SHORT)    
  11.   .show();    
  12.    }    
  13. }, new IntentFilter(DELIVERED_SMS_ACTION));   

EditText样式

当在<application>加入属性:android:theme="@android:style/Theme.NoTitleBar.Fullscreen",时,EditText的样式是这样子的:

EditText变为系统默认样式

  • 细粒度修改 在当前Activity中,更改主题样式:@android:style/Theme.DeviceDefault.NoActionBar.Fullscreen
  • 粗粒度修改,把<application>中theme属性改为:@android:style/Theme.DeviceDefault.NoActionBar.Fullscreen。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值