android搜集

android搜集

转自:http://gundumw100.iteye.com/blog/825588

http://gundumw100.iteye.com/blog/1025164:textView垂直滚动

如何取得手机号码,手机串号,sim卡序列号? 

Java代码  收藏代码
  1. TelephonyManager tm = (TelephonyManager) this.getSystemService(Context.TELEPHONY_SERVICE);  
  2. String deviceid = tm.getDeviceId();   
  3. String tel = tm.getLine1Number(); //本机号码  
  4. String imei =tm.getSimSerialNumber();  
  5. String imsi =tm.getSubscriberId();  
  6. res.setText(deviceid+"#"+tel+"#"+imei+"#"+imsi);  


注:并不是所有手机都能取到本机号码,中国电信手机(133)取不到号码。 

如何让Activity失去任何按键和点击反应? 
当我们链接网络时需要显示一个ProgressBar让用户等待。 
但是这个时候点击屏幕上任何东西都是无效的,这个怎么设置?不能用ProgressDialog! 

Java代码  收藏代码
  1. @Override  
  2.     public boolean dispatchKeyEvent(KeyEvent event) {  
  3.         // TODO Auto-generated method stub  
  4.         if (progress.isShown()) {  
  5.             return true;  
  6.         } else {  
  7.             return super.dispatchKeyEvent(event);  
  8.         }  
  9.     }  
  10.   
  11.     @Override  
  12.     public boolean dispatchTouchEvent(MotionEvent ev) {  
  13.         // TODO Auto-generated method stub  
  14.         if (progress.isShown()) {  
  15.             return true;  
  16.         } else {  
  17.             return super.dispatchTouchEvent(ev);  
  18.         }  
  19.     }  
  20.     @Override  
  21.     public boolean dispatchTrackballEvent(MotionEvent ev) {  
  22.         // TODO Auto-generated method stub  
  23.         if (progress.isShown()) {  
  24.             return true;  
  25.         } else {  
  26.             return super.dispatchTrackballEvent(ev);  
  27.         }  
  28.     }  



如何将中文设置成粗体? 
在xml文件中使用android:textStyle="bold" 可以将英文设置成粗体,但是不能将中文设置成粗体,将中文设置成粗体的方法是: 
TextView tv = (TextView)findViewById(R.id.TextView01); 
TextPaint tp = tv.getPaint(); 
tp.setFakeBoldText(true); 

如何实现半透明的弹出框? 
只需要把Manifest文件中注册的activity中添加android:theme="@android:style/Theme.Dialog"就可以了。如: 
<activity android:name=".SettingActivity" android:label="@string/app_name" android:icon="@drawable/icon" android:theme="@android:style/Theme.Dialog"></activity> 

如何实现在自己的程序中点击一个按钮,然后弹出系统自带的联系人? 

Java代码  收藏代码
  1. button.setOnClickListener(new Button.OnClickListener() {  
  2.             public void onClick(View v) {  
  3.                 Intent intent = new Intent();  
  4.                 intent.setAction(Intent.ACTION_VIEW);  
  5.                 intent.setData(ContactsContract.Contacts.CONTENT_URI);//android2.X  
  6.                 startActivity(intent);  
  7.             }  
  8.         });  



如何打电话,发短信...等等? 
1,调web浏览器 
Uri myBlogUri = Uri.parse("http://xxxxx.com"); 
returnIt = new Intent(Intent.ACTION_VIEW, myBlogUri); 
2,地图 
Uri mapUri = Uri.parse("geo:38.899533,-77.036476"); 
returnIt = new Intent(Intent.ACTION_VIEW, mapUri); 
3,调拨打电话界面 
Uri telUri = Uri.parse("tel:100861"); 
returnIt = new Intent(Intent.ACTION_DIAL, telUri); 
4,直接拨打电话 
Uri callUri = Uri.parse("tel:100861"); 
returnIt = new Intent(Intent.ACTION_CALL, callUri); 
5,卸载 
Uri uninstallUri = Uri.fromParts("package", "xxx", null); 
returnIt = new Intent(Intent.ACTION_DELETE, uninstallUri); 
6,安装 
Uri installUri = Uri.fromParts("package", "xxx", null); 
returnIt = new Intent(Intent.ACTION_PACKAGE_ADDED, installUri); 
7,播放 
Uri playUri = Uri.parse("file:///sdcard/download/everything.mp3"); 
returnIt = new Intent(Intent.ACTION_VIEW, playUri); 
8,掉用发邮件 
Uri emailUri = Uri.parse("mailto:xxxx@gmail.com"); 
returnIt = new Intent(Intent.ACTION_SENDTO, emailUri); 
9,发邮件 
returnIt = new Intent(Intent.ACTION_SEND); 
String[] tos = { "xxxx@gmail.com" }; 
String[] ccs = { "xxxx@gmail.com" }; 
returnIt.putExtra(Intent.EXTRA_EMAIL, tos); 
returnIt.putExtra(Intent.EXTRA_CC, ccs); 
returnIt.putExtra(Intent.EXTRA_TEXT, "body"); 
returnIt.putExtra(Intent.EXTRA_SUBJECT, "subject"); 
returnIt.setType("message/rfc882"); 
Intent.createChooser(returnIt, "Choose Email Client"); 
10,发短信 
Uri smsUri = Uri.parse("tel:100861"); 
returnIt = new Intent(Intent.ACTION_VIEW, smsUri); 
returnIt.putExtra("sms_body", "yyyy"); 
returnIt.setType("vnd.android-dir/mms-sms"); 
11,直接发邮件 
Uri smsToUri = Uri.parse("smsto://100861"); 
returnIt = new Intent(Intent.ACTION_SENDTO, smsToUri); 
returnIt.putExtra("sms_body", "yyyy"); 
12,发彩信 
Uri mmsUri = Uri.parse("content://media/external/images/media/23"); 
returnIt = new Intent(Intent.ACTION_SEND); 
returnIt.putExtra("sms_body", "yyyy"); 
returnIt.putExtra(Intent.EXTRA_STREAM, mmsUri); 
returnIt.setType("image/png"); 
最后一步: 
startActivity(returnIt) 

如何把Button或者ImageButton的背景设为透明或者半透明? 
android:background=”@android:color/transparent” 
or 
android:background="@null" 
or 
半透明<Button android:background="#e0000000"/> 
透明<Button android:background="#00000000"/> 

如何在TextView显示HTML? 
TextView tv=(TextView)findViewById(R.id.tv); 
Spanned text = Html.fromHtml("<a href='http://www.baidu.com'>baidu</a>"); 
tv.setText(text); 
如果html中有图片,请参考这篇文章: 
http://da-en.iteye.com/blog/712415 


如何修改软键盘默认为数字输入? 
EditText editText = (EditText) findViewById(R.id.et); 
editText.setInputType(InputType.TYPE_CLASS_NUMBER); 

如何阻止EditText自动弹出输入法? 

Java代码  收藏代码
  1. //EditText有焦点阻止输入法弹出  
  2. editText.setOnTouchListener(new OnTouchListener() {  
  3.                   
  4.     public boolean onTouch(View v, MotionEvent event) {  
  5.         // TODO Auto-generated method stub  
  6.         //记住EditText的InputType现在是password   
  7.         int inType = editText.getInputType(); // backup the input type  
  8.         editText.setInputType(InputType.TYPE_NULL); // disable soft input      
  9.         editText.onTouchEvent(event); // call native handler      
  10.         editText.setInputType(inType); // restore input type     
  11.         editText.setSelection(editText.getText().length());  
  12.         return true;  
  13.                       
  14.     }  
  15. });  


还可以试试: 

Java代码  收藏代码
  1. EditText et=(EditText)findViewById(R.id.edit);  
  2. et.setInputType(InputType.TYPE_NULL);  



如何设置半透明效果? 
protected void onDraw(Canvas canvas) { 
super.onDraw(canvas); 
Paint paint = new Paint(); 
paint.setColor(Color.BLUE); 
paint.setAlpha(0x40);
canvas.drawXXX(...); 

注意setColor和setAlpha的位置不要颠倒,否则无效! 

如何让TextView中的文字居中显示? 
android:gravity="center" 

如何删除模拟器上安装的apk? 
 

android中文资源 
http://www.cnblogs.com/over140/default.html?page=1 

如何自定义标题栏? 

Java代码  收藏代码
  1. //首先需要请求对FEATURE_CUSTOM_TITLE操作  
  2. requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);  
  3. view = new SnakeView(this);  
  4. setContentView(view);  
  5. //然后设置  
  6. getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.title);  


R.layout.title对应的布局文件: 

Xml代码  收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3. android:orientation="horizontal"  
  4. android:layout_width="fill_parent"  
  5. android:layout_height="fill_parent"     >  
  6.     <TextView  
  7.     android:id="@+id/title"  
  8.     android:layout_width="fill_parent"  
  9.     android:layout_height="wrap_content"  
  10.     android:layout_weight="1"  
  11.     android:layout_gravity="center"  
  12.     android:gravity="center"   
  13.     android:text="Snake"  
  14.     android:textColor="@color/red"  
  15.     />  
  16. </LinearLayout>  


效果如下: 
 
这里需要注意,最好不要修改背景色,否则会出现标题栏不会被充满的问题(会露马脚啦:)),如果确实需要修改背景色又不漏马脚,那么请看这篇文章: 
http://www.iteye.com/topic/760314 

在View中绘制文本,如何获得文本高度和宽度? 
FontMetrics对象的四个基本坐标基准分别为: 
・FontMetrics.top 
・FontMetrics.ascent 
・FontMetrics.descent 
・FontMetrics.bottom 
 
获得高度: 
FontMetrics fm = paint.getFontMetrics();// 得到系统默认字体属性  
float fontHeight = fm.descent - fm.top;// 获得字体高度 
也可以这样: 
float fontHeight = fm.bottom - fm.top;// 获得字体高度,与上面稍微有些差别,见图。 
还可以这样: 
paint.getTextSize();// 获得字体高度,简单一点就这样啦,区别不是太大。 

获得宽度: 
paint.getTextWidths(text, widths[]),widths是每个字符的宽度,维度不小于字符数。 
还可以这样: 
paint.measureText(text) 
canvas.drawText("坐标测试", 0, 0, paint);//在屏幕上能看见吗?(不全屏的话) 
canvas.drawText("坐标测试", 0, paint.getTextSize(), paint);//这个可以看到 
canvas.drawText("坐标测试", 0, fontMetrics.bottom-fontMetrics.top, paint);//这个也可以看到 

startManagingCursor(cursor)的作用是什么? 
startManagingCursor可以让cursor也纳入到Activity的生命周期里。比如当activity stopped,就自动调用cursor.deactivate();当activity restarted,就自动调用cursor.requery()。省事! 
通常都是这样使用: 
Cursor cursor=db.query(XXX);//db为SQLiteDatabase对象 
startManagingCursor(cursor); 

startActivity(intent)和startActivityForResult(intent, requestCode)有什么区别? 
startActivity(Intent)用于界面的跳转; 
startActivityForResult()用于界面的相互跳转,比如Activity1 跳转到 Activity2,但是还需要在Activity2 再回到 Activity1呢? 可能有人说: 那我在Activity2  再使用 startActivity() 不就可以了,是的。但是startActivityForResult能够直接完成这项工作。 
其中int requestCode:用于标识该Intent 回来后确定是不是想要的返回。 
setResut(int resultCode, Intent intent) 
resultCode 如果子模块可能有几种不同的结果返回,可以用这个参数予以识别区分。如果成功可以使用 RESULT_OK 值。之后可以在回调函数 

Java代码  收藏代码
  1. protected void onActivityResult(int requestCode, int resultCode, Intent data){  
  2.      super.onActivityResult(requestCode, resultCode, data);  
  3.      switch (resultCode) {  
  4.         case RESULT_OK:  
  5.                 doSomething();  
  6.                 break;  
  7.             }  
  8. }  


中处理需要做的事情。 

ListView中getSelectedItemId()和getSelectedItemPosition()有和区别? 
getSelectedItemId()获得的是对应数据库(如果使用了sqlite)中记录的id;比如:屏幕上看到的第3项,并不一定是数据库中的第3项。getSelectedItemId()获得的就是数据库中的第几项!这个很重要!操作数据的时候不会错乱了。 
getSelectedItemPosition()获得的是绝对位置,就是指屏幕中第几项,从0开始。 

长按菜单ContextMenu中如何获得ListView中的item? 

Java代码  收藏代码
  1. public boolean onContextItemSelected(MenuItem item) {  
  2.         // TODO Auto-generated method stub  
  3.         AdapterContextMenuInfo info=(AdapterContextMenuInfo)item.getMenuInfo();//MenuItem中的信息全在AdapterContextMenuInfo中被封装  
  4.         switch (item.getItemId()) {  
  5.         case Menu.FIRST:  
  6.             doSomething(info.id);//注意这里  
  7.             return true;  
  8.         case Menu.FIRST+1:  
  9.             doOthers(info.id);  
  10.             return true;  
  11.         default:  
  12.             break;  
  13.         }  
  14.         return super.onContextItemSelected(item);  
  15.     }  



如何通过Button弹出Menu? 
this.openOptionsMenu(); 

android中如何清屏? 
canvas.drawColor(Color.BLACK); 

如何改变Dialog背景透明度? 

Java代码  收藏代码
  1. Dialog dg = new Dialog(this);  
  2. Window window = dg.getWindow();  
  3. WindowManager.LayoutParams lp = window.getAttributes();  
  4. lp.alpha = 0.5f;  
  5. window.setAttributes(lp);  
  6. //lp.alpha = 0.5f 透明度设置 其值要合理 自己反复测试  
  7. //为什么要这个技巧 因为很多人说:弹出Dialog会导致背景变暗 有Animation发生 导致性能变慢 可以用这个改变之 而且可以借助这个 使得全透明 不挡住Dialog后面内容的显示  



如何隐藏状态栏? 
隐藏 状态栏 即:最上方的信号强度 3G网络 等属性 

Java代码  收藏代码
  1. this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,  
  2.                 WindowManager.LayoutParams.FLAG_FULLSCREEN);  
  3.   
  4. 其它使用:   
  5. this.getWindow().setFlags(WindowManager.LayoutParams.TYPE_STATUS_BAR, WindowManager.LayoutParams.TYPE_STATUS_BAR);  



如何隐藏标题栏? 
即:应用程序名称的那一栏 

Java代码  收藏代码
  1. //注意:2行代码的先后顺序不能颠倒  
  2. requestWindowFeature(Window.FEATURE_NO_TITLE);  
  3. setContentView(R.layout.main);  
  4. //同时使用隐藏状态栏可以使可视面积最大化!  
  5. 或者也可以在Manifest文件中这样设置:  
  6. <application android:icon="@drawable/icon"  
  7.   android:label="@string/app_name"  
  8.   android:theme="@android:style/Theme.NoTitleBar">  



如何设置横屏? 

Java代码  收藏代码
  1. this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);  



如何取得屏幕宽高? 

Java代码  收藏代码
  1. DisplayMetrics dm=new DisplayMetrics();  
  2.         this.getWindowManager().getDefaultDisplay().getMetrics(dm);  
  3.         int screenWidth=dm.widthPixels;  
  4.         int screenHeight=dm.heightPixels;  


Android获取屏幕高度、标题高度、状态栏高度详解 
http://www.iteye.com/topic/828830 

如何设置屏幕方向? 
可以在AndroidManifest.xml 文件中,通过<activity> 标记的screenOrientation 属性进行设定,例如: 

Java代码  收藏代码
  1. <activity  
  2.     android:name=".SketchpadActivity"  
  3.     android:screenOrientation="landscape"/><!--让该Activity总是显示为横屏-->  


screenOrientations属性共有7中可选值(常量定义在 android.content.pm.ActivityInfo类中 ) : 
landscape:横屏(风景照) ,显示时宽度大于高度; 
portrait:竖屏 (肖像照) , 显示时 高 度大于 宽 度 ; 
user:用户当前的首选方向; 
behind:继承Activity堆栈中当前Activity下面的那个Activity的方向; 
sensor:由物理感应器决定显示方向,它取决于用户如何持有设备,当 设备 被旋转时方向会随之变化——在横屏与竖屏之间; 
nosensor:忽略物理感应器——即显示方向与物理感应器无关,不管用户如何旋转设备显示方向都不会随着改变("unspecified"设置除外); 
unspecified :未指定,此为默认值,由Android系统自己选择适当的方向,选择策略视具体设备的配置情况而定,因此不同的设备会有不同的方向选择; 
也可以在代码中设置屏幕方向,例如: 
this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);//设置横屏 

如何判断横竖屏? 
在activity中重写这个方法 
@Override 
public void onConfigurationChanged(Configuration newConfig) { 
    // TODO Auto-generated method stub 
    super.onConfigurationChanged(newConfig); 
    if (this.getResources().getConfiguration().orientation == 
         Configuration.ORIENTATION_PORTRAIT) {//竖屏 
         //doSomrthing 
    } else { 
        //横屏时dosomething 
    } 

每一次横屏和竖屏都会调用这个方法 

如何实现国际化? 
比如需要程序在中文和英文环境中切换, 
首先在工程res文件夹中依次新建values-en和values-zh-rCN等资源文件夹,将string.xml文件翻译成英文,放入相应的资源文件夹内。 
然后在模拟器主菜单中依次选择setting->Locale&Text->Select Locale,选择需要的语言即可。当找不到相应的语言系时,默认使用values文件夹下的string.xml 
values目录名称与改写后对应的支持语言关系如下: 
values-zh-rCN,简体中文 
values-zh-rTW,繁体中文 
values-ja,日文 
values-en,英文 
values-en-rUS,美式英文 
values-en-rUK,英式英文 

如何在程序中通过button切换中英文环境? 
基本代码如下(按了button后需要退回到主菜单,然后再进入程序语言环境就变了): 

Java代码  收藏代码
  1. locale=(Button)findViewById(R.id.locale);  
  2.         locale.setOnClickListener(new OnClickListener() {  
  3.   
  4.             @Override  
  5.             public void onClick(View v) {  
  6.                 // TODO Auto-generated method stub  
  7.                 Resources res=getResources();  
  8.                 Configuration config=res.getConfiguration();  
  9.                 if(config.locale==Locale.SIMPLIFIED_CHINESE){  
  10.                     config.locale=Locale.ENGLISH;  
  11.                 }else{  
  12.                     config.locale=Locale.SIMPLIFIED_CHINESE;  
  13.                 }  
  14.                 DisplayMetrics dm=res.getDisplayMetrics();  
  15.                 res.updateConfiguration(config, dm);  
  16.             }  
  17.               
  18.         });  



如何手动签名应用程序? 
1,打包成未签名apk包 
在工程上右击,选择Android Tools->Export Unsigned Application Package 
2,生成密钥 
打开cmd,并进入cd C:\Program Files\Java\jdk1.6.0_20\bin 
keytool -genkey -v -keystore XXX.keystore -alias XXX.keystore -keyalg RSA -validity 20000 
然后依次输入各项即可 
3,开始签名 
jarsigner -verbose -keystore XXX.keystore -signedjar 你的应用名称_signed.apk 你的应用名称.apk XXX.keystore
4,验证密钥(非必需,但建议) 
jarsigner -verify -verbose -certs 你的应用名称_signed.apk 

如何使用eclipse自动生成已验证的apk包? 
如果觉得手动签名比较麻烦,那么使用自动签名吧。 
在工程上右击,选择Android Tools->Export Application Package 
然后依次填入各项,这里特别注意Keystore selection这一步,如果已生成keystore,则选第一项;如果还没有,则选第二项。

posted @ 2015-06-01 10:23  harry_ma  阅读(247)  评论(0编辑  收藏  举报
 aa
    部分内容来自网络,如有异议,请联系我.     


      成绩来自坚持, 灵感来自激情。

                                                               感谢父母和亲朋好友的爱与支持!