Android 48个小知识

1、判断sd卡是否存在


boolean sdCardExist = Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED);

2、TextView部分文字设置颜色


TextView tv = new TextView(this);
//添加css样式
tv.setText(Html.fromHtml("<font color="#ff0000">红色</font>其它颜色"));

3、替换数据库某字段中某些字符的方法:


update table set spell=replace(spell,‘ɡ‘,‘g‘)

4、单选按钮默认选中:


mRadioGroup.check(mRadioButton_1.getId());

下拉列表默认选中:


for(int j = 0;j < cities.length;j ++){
if(months[j].equals("武汉")){
mSpinner_m.setSelection(j);
}
}

5、TextView中嵌套图片:


Drawable draw = getResources().getDrawable(R.drawable.ji_dot_nor);
textView.setCompoundDrawablesWithIntrinsicBounds(null, draw, null, null);

6、ListView去掉下拉条:


//方法一:在xml属性中设置
android:scrollbars="none"
//方法二:在代码中设置:
listView.setVerticalScrollBarEnabled(false);

7、设置Activity的风格:


//将Activity设置成半透明的效果
android:theme="@android:style/Theme.Translucent"
//将Activity设置成对话框的样式
android:theme="@android:style/Theme.Dialog" <span style="font-family: Arial, Helvetica, sans-serif; white-space: normal; "> <wbr> <wbr> </wbr></wbr></span>

8、创建一个背景模糊的Widow,且将对话框放在前景


Window window = dialog.getWindow();
window.setFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND,WindowManager.LayoutParams.FLAG_BLUR_BEHIND);

9、list滚动时出现黑色底的问题:


解决方法:
方法一:
在XML中设置android:cacheColorHint="#00000000"
方法二:
在代码中设置listView.setCacheColorHint(0);

10、编辑框中指定输入的类型,设置属性digits即可:


例:只允许输入数字
android:digits="0123456789" 或 android:digits="integer" 或 android:digits="num"

11、利用反射机制,获取drawable文件夹下的图片名称:


Field[] fields = R.drawable.class.getDeclaredFields();
for(Field field:fields){
if(!"icon".equals(field.getName())){
sb.append(field.getName() + "\t");
}
}
mTextView.setText(sb.toString());

12、缓冲流播放MP3:


MediaPlayer player = new MediaPlayer();
try {
player.setDataSource(WebMusic.this, Uri.parse("http://stream15.a8.com/a8space/2010/12/30/2010123002225125942.mp3"));
player.prepare();
player.start();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

13、下面的代码可以用来点亮屏幕:


PowerManager pm = (PowerManager)getSystemService(POWER_SERVICE);
mWakelock = pm.newWakeLock(PowerManager.ACQUIRE_CAUSES_WAKEUP |PowerManager.SCREEN_DIM_WAKE_LOCK, "SimpleTimer");
mWakelock.acquire();
...............
mWakelock.release();

下面的代码用来屏幕解锁:

KeyguardManager keyguardManager = (KeyguardManager)getSystemService(KEYGUARD_SERVICE);
KeyguardLock keyguardLock = keyguardManager.newKeyguardLock("");
BkeyguardLock.disableKeyguard();

使用这两段代码,需要在AndroidManifest文件中加入以下权限:

<uses-permission android:name="android.permission.DISABLE_KEYGUARD"></uses-permission>
<uses-permission android:name="android.permission.WAKE_LOCK"></uses-permission>

14、android 跑马灯效果做如下设置即可:


android:scrollHorizontally="true"
android:marqueeRepeatLimit="marquee_forever"
android:ellipsize="marquee"
android:focusable="true"
android:focusableInTouchMode="true"
android:singleLine="true"

15、拦截短信:
 
   当android系统接收到短信时,会发送一个广播BroadcastReceiver,这个广播是以有序广播的形式发送的。
 
   所谓的有序广播就是广播发出后,接收者是按照设置的优先级一个一个接着接收,前面的接收者可以选择是否终止这条广播以使后面的接收者接收不到,而普遍广播发送
后所有的接收者都能同时接到,但是不能终止这条广播,也不能将它的处理结果传递给下个接收者。
 
   sms拦截就是通过实现一个BroadcastReceiver并将其的优先级设置的比系统sms接收者高。
 
   android:priority就是设置优先级的,设置为100即可:


  <receiver android:name="InterceptSMS">
<intent-filter android:priority="100">
<action android:name="android.provider.Telephony.SMS_RECEIVED"/>
</intent-filter>
</receiver>

16、如果在文件夹下选择视频文件时,想调用自己的播放器,需要在Manifest.xml中设置过滤器,设置如下:


  <intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT"/>
<data android:mimeType="video/*"/>
</intent-filter>

如果想在浏览器中调用自己的播放器,设置如下:


<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE" />
<data android:mimeType="video/*" android:scheme="http"/>
</intent-filter>

如果两者都要实现的话,就必须配两个过滤器。

17、显示图片时,用mImageView.setScaleType(ImageView.ScaleType.FIT_XY);
可以填充整个区域。

18、保持屏幕长开:

getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

开启、关闭屏幕时发送的广播:


<receiver android:name=".MyBroadcastReceiver" android:enabled="true">
<intent-filter>
<action android:name="android.intent.action.ACTION_SCREEN_ON"></action>
<action android:name="android.intent.action.ACTION_SCREEN_OFF"></action>
</intent-filter>
</receiver>

19、判断一个intent是否可用:


public static boolean isIntentAvailable(Context context, String action) {
final PackageManager packageManager = context.getPackageManager();
final Intent intent = new Intent(action);
List<ResolveInfo> list = packageManager.queryIntentActivities(intent,PackageManager.MATCH_DEFAULT_ONLY);
return list.size() > 0;
}

上述代码判断action的intent是否可用
(备注,也可以得到相应intent的应用程序信息)

我们可以根据scanAvailable
来判断是否让用户操作来发送该intent:


boolean bool = isIntentAvailable(gallery.this,ACTION);
if(bool){
Intent intent = new Intent(ACTION);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}

20、获取所有桌面应用的图标:


private List<Drawable> getImage(){
PackageManager packageManager = this.getPackageManager();
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
List<ResolveInfo> infos = packageManager.queryIntentActivities(intent, 0);
for(ResolveInfo info : infos){
ActivityInfo ai = info.activityInfo;
Drawable icon = ai.loadIcon(packageManager);
list.add(icon);
}
return list;
}

21、Android 系统图片数据库:

Uri STORAGE_URI =
Images.Media.EXTERNAL_CONTENT_URI;

往改数据库中插入数据,用到了内容提供者,大致如下:


ContentValues values = new ContentValues(11);
values.put(Images.Media.TITLE, title);
values.put(Images.Media.DISPLAY_NAME, filename);
values.put(Images.Media.DATE_TAKEN, dateTaken);
values.put(Images.Media.DATE_MODIFIED, dateTaken);
values.put(Images.Media.DATE_ADDED, dateAdded);
values.put(Images.Media.MIME_TYPE, "image/jpeg");
values.put(Images.Media.ORIENTATION, degree[0]);
values.put(Images.Media.DATA, filePath);
values.put(Images.Media.SIZE, size);
values.put(Images.Media.LATITUDE, latitude.floatValue());
values.put(Images.Media.LONGITUDE, longitude.floatValue());

ContentResolver contentResolver = getContentResolver();
contentResolver.insert(STORAGE_URI, values);

//插入数据后刷新一下:
getContentResolver().notifyChange(STORAGE_URI, null);

22、获取UI控件的宽、高:

在前面几个周期函数中都无法获取宽度和高度值,但在事件中或用定时器可以获取,如下:


public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

text = (TextView) findViewById(R.id.text);
btn = (Button) findViewById(R.id.btn);
btn.setOnClickListener(new Button.OnClickListener(){
@Override
public void onClick(View v) {
int width = text.getWidth();
int height = text.getHeight();
Log.i("Log: ", "----------->"+width + " | " + height);
}
});
}

23、判断某一服务是否在运行:


//serviceName:即包名+服务的名称
//return:某一服务正在运行,返回true,否则返回false
public boolean isRunning(Context c,String serviceName){
ActivityManager myAM=(ActivityManager)c.getSystemService(Context.ACTIVITY_SERVICE);
ArrayList<RunningServiceInfo> runningServices = (ArrayList<RunningServiceInfo>)myAM.getRunningServices(40);
//获取最多40个当前正在运行的服务,放进ArrList里
for(int i = 0 ; i<runningServices.size();i++){ //循环枚举对比
if(runningServices.get(i).service.getClassName().toString().equals(serviceName)){
return true;
}
}
return false;
}

24、根据角度求正弦值:


 Math.sin(Math.PI/2)
//根据正弦值求角度:
Math.toDegrees(Math.asin(1.0))

其他求法同上

转载自:http://www.eoeandroid.com/thread-203969-1-1.html

Android 48个小知识,码迷,mamicode.com

时间: 2024-12-25 19:48:29

Android 48个小知识的相关文章

Android的一点小知识

1.如何隐藏标题栏 在Android的MainActivity中的onCreate函数中加入requestWindowFeature(Window.FEATURE_NO_TITLE);一定要加在setContentView前面. 2.logcat中的级别 log.v()----------->verbose(一些细小的日志); log.d()----------->debug(用于调试程序): log.i()------------>info(打印比较重要的信息,帮助分析用户行为); l

android studio 应用小知识总结

1.在复制一个工程文件后 想修改包名,则在Android下的java中的 Android test中,鼠标右键Refactor->rename->Rename_package->Do_refactor 再修改build.gradle(Module:app)

Android 47个小知识

1.判断sd卡是否存在    boolean sdCardExist = Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED);   2.TextView部分文字设置颜色    TextView tv = new TextView(this);  //添加css样式  tv.setText(Html.fromHtml("<font color="#ff0000"

最强 Android Studio 使用小技巧和快捷键【非原创】

(发现本文是个很不错的文章,相当实用,特分享与大家.分享自:http://m.open-open.com/m/lib/view/1458715872710.html 特此声明,好记性不如烂笔头,market下来以备后用) 原文如下: 写在前面 本文翻译自 Android Studio Tips by Philippe Breault,一共收集了62个 Android Studio 使用小技巧和快捷键. 根据这些小技巧的使用场景,本文将这62个小技巧分为常用技巧(1 – 28).编码技巧(29 –

Linux 小知识翻译 - 目录

偶尔在网上看到的这篇文章,总结了linux中一些天天在说的概念.可能是因为天天说的关系, 一直以为自己知道这些概念.其实对有些概念也只是似是而非的了解而已. 为此,决定将所有的小知识点全翻译下来,给自己看也是给大家参考. 原文是日文的(http://www.lpi.or.jp/lpic/examination/knowledge.shtml),翻译水平有限,难免有些错误,欢迎大家指出. 全部知识点一共 54 个,今天开始争取每天翻译一个知识点. 1. 「i386」是什么? 2. 「Linux」怎

小知识不断补充

1.java.android中获取当前时间 this.sdf = new SimpleDateFormat("yyyy/MM/dd-hh:mm:ss", Locale.CHINA);        String time = sdf.format(new Date(System.currentTimeMillis())); 小知识不断补充,布布扣,bubuko.com

[小知识] 获取浏览器UA标识

这个随笔纯粹是小知识的积累,以后都会打上小知识的标签. 经常见的,下载移动app时,只有一个二维码,但扫码后,会根据手机是iphone还是android下载不同app,下面就是这个操作的代码: < !DOCTYPE html > <html > <head > </head> <body> <script> var ua = navigator.userAgent.toLowerCase(); if (/iphone | ipad |

最强 Android Studio 使用小技巧和快捷键

写在前面 本文翻译自 Android Studio Tips by Philippe Breault,一共收集了62个 Android Studio 使用小技巧和快捷键. 根据这些小技巧的使用场景,本文将这62个小技巧分为常用技巧(1 – 28).编码技巧(29 – 49)和调试技巧(50 – 62),分成三个部分. 每个小技巧都配有 gif 动图,由于原图在 google photo 上,加载较慢,本文全部转存到七牛上了. 由于能力有限,翻译过程中难免有所疏漏,如发现错误或问题,请在评论中提出

linux入门小知识,你在里面总会有发现

一 . grep及egrep的基本介绍: 首先我们要知道grep的这个命令的本身意思即: grep [Global search REgular expression and Print out the line ]  全局搜索正则表达式匹配到的内容,并且打印出匹配内容所在行 grep 是一个很常用但是也很强大的搜索工具,它是以正则表达式为基础,搜索文本文件中符合要求的字符串,并且显示所匹配的字符串所在行. grep搜索的内容是以一行来显示的,当然我们可以使用一些特别的选项来只显示我们所匹配到的