您的位置:首页 > 移动开发 > Android开发

Android开发中的一些小知识点记录(21-40)

2017-04-29 15:56 441 查看
编写不易,如有转载,请声明出处: 梦回河口:http://blog.csdn.net/zxc514257857/article/details/70953767

Android开发中的一些小知识点记录 (1-20) (41-60)

21,从一个App中打开手机中安装的某个应用程序



import android.content.Context;
import android.content.Intent;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Toast;
import java.util.Collections;
import java.util.List;

public class MainActivity extends AppCompatActivity {

private static final String TAG = "MainActivity";
private PackageManager mPackageManager;
private Context mContext = MainActivity.this;
private List<ApplicationInfo> mListAppcations;
private Intent mIntent;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 获取手机中所有应用程序的包名的准备工作
mPackageManager = getPackageManager();
mIntent = new Intent(Intent.ACTION_MAIN,null);
mIntent.addCategory(Intent.CATEGORY_LAUNCHER);
mListAppcations = mPackageManager.getInstalledApplications(PackageManager.GET_UNINSTALLED_PACKAGES);
Collections.sort(mListAppcations,new ApplicationInfo.DisplayNameComparator(mPackageManager));
}

// 启动一个Apk的Button点击事件
public void launchApk(View view){
// 获取手机中所有应用程序的包名
for (ApplicationInfo info : mListAppcations){
Log.e(TAG, "getPackagename: ---"+ info.packageName );
// 匹配QQ的包名 如果手机中安装了QQ
if(info.packageName.equals("com.tencent.mobileqq")){
// 就打开该应用程序
Intent resolveIntent = mPackageManager.getLaunchIntentForPackage(info.packageName);
mContext.startActivity(resolveIntent);
}
}
}
}


22,用代码检测android设备是否root或是否获取root权限

//(activity)MainActivity
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.Menu;
import android.view.MenuItem;
import java.io.DataOutputStream;
import java.io.IOException;

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}

private void doSU() {
try {
// 这里执行是系统已经开放了root权限,而不是说通过执行这句来获得root权限
Process process = Runtime.getRuntime().exec("su");
DataOutputStream os = new DataOutputStream(process.getOutputStream());
// os.writeBytes("ifconfig eth0 192.168.18.122\n");
os.writeBytes("exit\n");
os.flush();
// 如果已经root,但是用户选择拒绝授权,e.getMessage() = write failed: EPIPE (Broken pipe)
// 如果没有root,e.getMessage()= Error running exec(). Command: [su] Working Directory: null Environment: null
} catch (IOException e) {
e.printStackTrace();
}
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()){
case R.id.checkRoot:
doSU();
break;

default:
break;
}
return super.onOptionsItemSelected(item);
}
}
----------------------------------------------------------------------------------------
//(app->src->main->res->menu)main.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/checkRoot"
android:showAsAction="never"
android:title="CheckRoot"/>
</menu>


23,SpannableString实现一个TextView显示多种不同的文字大小和颜色



//MainActivity
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.text.SpannableString;
import android.text.Spanned;
import android.text.style.TextAppearanceSpan;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {
private TextView mTextView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTextView = (TextView) findViewById(R.id.textView);
SpannableString styledText = new SpannableString("赶紧洗洗睡");
styledText.setSpan(new TextAppearanceSpan(this, R.style.style0), 0, 1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
styledText.setSpan(new TextAppearanceSpan(this, R.style.style1), 1, 2, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
styledText.setSpan(new TextAppearanceSpan(this, R.style.style2), 2, 3, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
styledText.setSpan(new TextAppearanceSpan(this, R.style.style3), 3, 4, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
styledText.setSpan(new TextAppearanceSpan(this, R.style.style4), 4, 5, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
mTextView.setText(styledText, TextView.BufferType.SPANNABLE);
}
}
-------------------------------------------------------------------
//(app->src->main->res->values)styles
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
<style name="style0">
<item name="android:textSize">40sp</item>
<item name="android:textColor">#00ff00</item>
</style>
<style name="style1">
<item name="android:textSize">35sp</item>
<item name="android:textColor">@color/colorAccent</item>
</style>
<style name="style2">
<item name="android:textSize">30sp</item>
<item name="android:textColor">#ffff00</item>
</style>
<style name="style3">
<item name="android:textSize">25sp</item>
<item name="android:textColor">#00ffff</item>
</style>
<style name="style4">
<item name="android:textSize">20sp</item>
<item name="android:textColor">#ff00ff</item>
</style>
</resources>


24,Html.fromHtml(html)加载到TextView中的使用



// MainActivity
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.os.StrictMode;
import android.support.v7.app.AppCompatActivity;
import android.text.Html;
import android.text.Spanned;
import android.text.method.LinkMovementMethod;
import android.text.method.ScrollingMovementMethod;
import android.widget.TextView;
import java.io.InputStream;
import java.net.URL;

public class MainActivity extends AppCompatActivity {
private TextView mTextView1;
private TextView mTextView2;
private TextView mTextView3;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
initData();
}
private void initView(){
mTextView1 = (TextView) findViewById(R.id.textView1);
mTextView2 = (TextView) findViewById(R.id.textView2);
mTextView3 = (TextView) findViewById(R.id.textView3);
}
private void initData(){
// 调用严苛模式
struct();
// 用Html语法写成的显示内容
String html = "<html><head><title>TextView使用HTML</title></head><body><p><strong>TextView使用HTML</strong></p><p><em>TextView使用HTML</em></p>"
+ "<p><a href=\"http://www.baidu.com/\">百度</a>一键打开百度</p><p><font color=\"#aabb00\">颜色1</p>"
+ "<p><font color=\"#00bbaa\">颜色2</p><h1>标题1</h1><h3>标题2</h3><h6>标题3</h6>"
+ "网络图片</p><img src=\"http://avatar.csdn.net/0/3/8/2_zhang957411207.jpg\"/></body></html>";
// TextView显示滚动条
mTextView1.setScrollbarFadingEnabled(false);
// 给TextView设置可滚动
mTextView1.setMovementMethod(ScrollingMovementMethod.getInstance());
// 给TextView设置超链接可以打开网页
mTextView1.setMovementMethod(LinkMovementMethod.getInstance());
Spanned spanned = Html.fromHtml(html, new Html.ImageGetter() {
@Override
public Drawable getDrawable(String source) {
InputStream is = null;
Drawable drawable = null;
try{
URL url = new URL(source);
is = (InputStream) url.getContent();
// 在主线程中访问网络
drawable = Drawable.createFromStream(is, null);
//                    drawable.setBounds(0,0,drawable.getIntrinsicWidth(),drawable.getIntrinsicWidth());
drawable.setBounds(0,0,200,200);
is.close();
}catch (Exception e){
e.printStackTrace();
return null;
}
return drawable;
}
}, null);
mTextView1.setText(spanned);

String textStr1 = "本月已充值 <font color=\"#FF0000\">" + 100 + "</font>元";
String textStr2 = "已充值 <font color=\"#FF0000\">" + 300 + "</font>元";
// 没有拼接,颜色显示正确
mTextView2.setText(Html.fromHtml(textStr1));
// 拼接过后,颜色效果消失
mTextView3.setText("本月" + Html.fromHtml(textStr2));
}
/**
* 报告与线程及虚拟机相关的策略违例。一旦检测到策略违例(policy violation),
* 你将获得警告,其包含了一个栈trace显示你的应用在何处发生违例。你可以强制用警告代替崩溃(crash),
* 也可以仅将警告计入日志,让你的应用继续执行
*/
public static void struct() {
// 严苛模式的线程策略
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
.detectDiskReads()
.detectDiskWrites()
.detectNetwork()
.penaltyLog()
.build());
// 严苛模式的虚拟机策略
StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
// 探测SQLite数据库操作
.detectLeakedSqlLiteObjects()
// 打印logcat
.penaltyLog()
.penaltyDeath()
.build());
}
}
----------------------------------------------------------------------------------------
// (layout)activity_main
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingTop="10dp"
android:paddingBottom="10dp"
android:paddingLeft="10dp"
android:orientation="vertical"
tools:context="com.test.fromhtmldemo.MainActivity">

<TextView
android:scrollbars="vertical"
android:scrollbarThumbVertical="@color/colorAccent"
android:scrollbarSize="3dp"
android:id="@+id/textView1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text=""/>

<TextView
android:id="@+id/textView2"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>

<TextView
android:id="@+id/textView3"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</LinearLayout>


  添加权限:

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


25,TextView设置超链接



//MainActivity
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.text.Html;
import android.text.SpannableString;
import android.text.Spanned;
import android.text.method.LinkMovementMethod;
import android.text.style.URLSpan;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

private TextView mTv1;
private TextView mTv2;
private TextView mTv3;
private TextView mTv4;
private TextView mTv5;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
initData();
}

private void initView(){
//(方法一)用autoLink="all"自动识别
mTv1 = (TextView) findViewById(R.id.tv1);
//(方法二)将显示内容写到String.xml中
mTv2 = (TextView) findViewById(R.id.tv2);
//(方法三)用Html类的fromHtml()方法
mTv3 = (TextView) findViewById(R.id.tv3);
//(方法四)用Spannable或实现它的类
mTv4 = (TextView) findViewById(R.id.tv4);
//(方法五)用Spannable或实现它的类,去掉超链接下划线
mTv5 = (TextView) findViewById(R.id.tv5);
}

private void initData(){
mTv1.setText("(1_1)百度:http://www.baidu.com/");
//激活链接
mTv2.setMovementMethod(LinkMovementMethod.getInstance());

String html =  "(1_3)百度:<a href='http://www.baidu.com'>进入百度</a>";
mTv3.setText(Html.fromHtml(html));
//激活链接
mTv3.setMovementMethod(LinkMovementMethod.getInstance());

SpannableString ss1 = new SpannableString("(1_4)百度:进入百度");
//设置8~12为网站链接
ss1.setSpan(new URLSpan("http://www.baidu.com"), 8, 12,
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
mTv4.setText(ss1);
//激活链接
mTv4.setMovementMethod(LinkMovementMethod.getInstance());

SpannableString ss2 = new SpannableString("(1_5)百度:进入百度");
//设置8~12为网站链接
ss2.setSpan(new URLSpanNoUnderline("http://www.baidu.com"), 8, 12,
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
mTv5.setText(ss2);
//激活链接
mTv5.setMovementMethod(LinkMovementMethod.getInstance());
}
}
----------------------------------------------------------------------------------------
//URLSpanNoUnderline
import android.graphics.Color;
import android.text.TextPaint;
import android.text.style.URLSpan;

/**
* 去掉下划线的超链接
*/
public class URLSpanNoUnderline extends URLSpan{
public URLSpanNoUnderline(String url) {
super(url);
}

@Override
public void updateDrawState(TextPaint ds) {
super.updateDrawState(ds);
//无下划线
ds.setUnderlineText(false);
//字体颜色
ds.setColor(Color.parseColor("#646464"));
}
}
----------------------------------------------------------------------------------------
//(layout)activity_main
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

<!--用autoLink="all"设置普通文本-->
<TextView
android:id="@+id/tv1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:autoLink="all"/>

<!--将显示内容写到String.xml中-->
<TextView
android:id="@+id/tv2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:text="@string/tv2"/>

<!--用Html类的fromHtml()方法-->
<TextView
android:id="@+id/tv3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp"/>

<!--用Spannable或实现它的类-->
<TextView
android:id="@+id/tv4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp"/>

<!--用Spannable或实现它的类去掉超链接下划线-->
<TextView
android:id="@+id/tv5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp"/>
</LinearLayout>
----------------------------------------------------------------------------------------
//(values)Strings
<resources>
<string name="app_name">TextView</string>
<string name="tv2">(1_2)百度:<a href="http://www.baidu.com">进入百度</a> </string>
</resources>


26,android设备获取WIFIMac地址方式

  官方解释:

  为了给用户更多的数据保护,Android6.0之后移除了通过 WiFi 和蓝牙 API 来在应用程序中可编程的访问本地硬件标示符,用WifiInfo.getMacAddress() 和 BluetoothAdapter.getAddress() 方法都返回 02:00:00:00:00:00。

  Android6.0之前获取方法:

// 添加权限
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>

// 返回的字符串就是设备的Mac地址
private String getWIFIMac() {
WifiManager manager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
WifiInfo infor = manager.getConnectionInfo();
return infor.getMacAddress();
}


  Android6.0以后获取方法:

// 添加权限
<uses-permission android:name="android.permission.INTERNET"/>

// 返回的字符串就是设备的Mac地址
public static String macAddress() throws SocketException {
String address = null;
// 把当前机器上的访问网络接口的存入 Enumeration集合中
Enumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces();
Log.d("TEST_BUG", " interfaceName = " + interfaces );
while (interfaces.hasMoreElements()) {
NetworkInterface netWork = interfaces.nextElement();
// 如果存在硬件地址并可以使用给定的当前权限访问,则返回该硬件地址(通常是 MAC)。
byte[] by = netWork.getHardwareAddress();
if (by == null || by.length == 0) {
continue;
}
StringBuilder builder = new StringBuilder();
for (byte b : by) {
builder.append(String.format("%02X:", b));
}
if (builder.length() > 0) {
builder.deleteCharAt(builder.length() - 1);
}
String mac = builder.toString();
Log.d("TEST_BUG", "interfaceName="+netWork.getName()+", mac="+mac);
// 从路由器上在线设备的MAC地址列表,可以印证设备Wifi的 name 是 wlan0
if (netWork.getName().equals("wlan0")) {
Log.d("TEST_BUG", " interfaceName ="+netWork.getName()+", mac="+mac);
address = mac;
}
}
return address;
}


  Wifi未打开得到的是:02:00:00:00:00:00

  android屏获取EthernetMac地址方式:

private String getMacAddr(){
String procVersionStr;
try {
BufferedReader reader = new BufferedReader(new FileReader("/sys/class/net/eth0/address"), 256);
try {
procVersionStr = reader.readLine();
} finally {
reader.close();
}
} catch (IOException e) {
Log.e("", "IO Exception when getting irnumber", e);
return "";
}
return procVersionStr;
}


27,Mediaplayer获取数据播放的三种方式

// 从资源文件中获取
MediaPlayer player = new MediaPlayer.create(this,R.raw.test);
player.stare()
// 从文件系统中获取
private String externalPath = Environment.getExternalStorageDirectory() + "/Movies/a.mp4";
MediaPlayer player = new MediaPlayer();
player.setDataSource(externalPath);
player.prepare();
player.start();
// 从网络中获取
private String netPath = "http://xxx.mp4";
MediaPlayer player = new MediaPlayer();
player.setDataSource(externalPath);
player.prepare();
player.start();


28,去除ListView和RecyclerView边界阴影效果和滚动条

android:overScrollMode="never"
android:scrollbars="none"


29,Android获取设备IMEI、设备型号、SDK版本和系统版本

// 获取设备IMEI
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
String IMEIs = tm.getDeviceId() ;
// 设备型号
String device_model = Build.MODEL;
// 设备SDK版本
String version_sdk = Build.VERSION.SDK;
// 设备系统版本
String version_release = Build.VERSION.RELEASE;


30,Android获取设备IP地址

// 获取设备的WifiIp地址,Wifi未打开获取为0.0.0.0
private String getWifiIP() {
WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
//判断wifi是否开启
if (!wifiManager.isWifiEnabled()) {
wifiManager.setWifiEnabled(true);
}
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
int ipAddress = wifiInfo.getIpAddress();
String wifiIP = intToIp(ipAddress);
return wifiIP;
}
private String intToIp(int i) {
return (i & 0xFF ) + "." +
((i >> 8 ) & 0xFF) + "." +
((i >> 16 ) & 0xFF) + "." +
( i >> 24 & 0xFF) ;
}

// 获取当前连接的网络的IP地址,包括Wifi网络和有线网络
private String getIPAddr() {
try {
for (Enumeration<NetworkInterface> en = NetworkInterface
.getNetworkInterfaces(); en.hasMoreElements(); ) {
NetworkInterface intf = en.nextElement();
for (Enumeration<InetAddress> enumIpAddr = intf
.getInetAddresses(); enumIpAddr.hasMoreElements(); ) {
InetAddress inetAddress = enumIpAddr.nextElement();
if (!inetAddress.isLoopbackAddress()
&& inetAddress instanceof Inet4Address) {
return inetAddress.getHostAddress();
}
}
}
} catch (SocketException ex) {
ex.printStackTrace();
}
return "0.0.0.0";
}


31,Android通过程序创建桌面快捷方式,可以指定快捷方式的网址

  程序卸载快捷方式不会消失,如果存在快捷方式不会重复创建

// 添加权限
<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />
// activity代码
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.os.Parcelable;
import android.support.v7.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Parcelable icon = Intent.ShortcutIconResource.fromContext(this, R.mipmap.baidu);
addShortcut(icon,"百度",Uri.parse("https://www.baidu.com/"));
}

public void addShortcut(Parcelable icon, String name, Uri uri) {
Intent intentAddShortcut = new Intent("com.android.launcher.action.INSTALL_SHORTCUT");
intentAddShortcut.putExtra("duplicate", false);
// 添加名称
intentAddShortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME, name);
// 添加图标
intentAddShortcut.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, icon);
// 设置Launcher的Uri数据
Intent intentLauncher = new Intent();
intentLauncher.setData(uri);
// 添加快捷方式的启动方法
intentAddShortcut
.putExtra(Intent.EXTRA_SHORTCUT_INTENT, intentLauncher);
sendBroadcast(intentAddShortcut);
}
}


32,将文字显示在图片上,通过margin等于负值的方式实现

<ImageView
android:src="@mipmap/baidu"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="fitXY"
android:id="@+id/imageView"/>

<TextView
android:layout_marginTop="-100dp"
android:layout_below="@+id/imageView"
android:layout_centerHorizontal="true"
android:text="手机百度"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>


33,实现界面不被弹出的键盘挤上去

//在AndroidMainfest.xml文件中对应的Activity添加
android:windowSoftInputMode="adjustPan"


34,Android开发中mipmap和drawable中文件的分辨率

// mipmap文件夹中icon的尺寸
mipmap-mdpi/icon.png (48x48 px  160DPI)
mipmap-hdpi/icon.png (72x72 px  240DPI)
mipmap-xhdpi/icon.png (96x96 px  320DPI)
mipmap-xxhdpi/icon.png (144x144 px  480DPI)
mipmap-xxxhdpi/icon.png (192x192 px  640DPI)
// drawable文件夹切图标准
drawable-mdpi (480×320 px)
drawable-hdpi (800×480 px)
drawable-xhdpi (1280×720 px)
drawable-xxhdpi (1920×1080 px)
drawable-xxxhdpi (3840×2160 px)
1x : 1.5x : 2x : 3x : 4x


35,Android中如何升级Gradle

https://services.gradle.org/versions/all 网站中获取最新的Gradle的版本号:



  可以发现最新的稳定版本是3.5,于是用编辑器随意打开一个项目gradle\wrapper里面的gradle-wrapper.properties文件,找到distributionUrl这一行,将里面的版本替换为3.5,然后编译运行,AS就会开始下载,下载完后重启AS,就可以使用最新的Gradle了

36,获取Android屏幕的实际分辨率

public static Point getScreenResolution(Context context) {
WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
DisplayMetrics dm = new DisplayMetrics();
wm.getDefaultDisplay().getMetrics(dm);
Point size = new Point();
size.x = dm.widthPixels;
size.y = dm.heightPixels;
return size;
}


  或者:

public static Display getWindowDisplay(){
WindowManager windowManager = ((Activity) mContext).getWindowManager();
Display display = windowManager.getDefaultDisplay();
return display;
}


37,点击某个键实现Home键效果

/**点击F1相当于点击Home键*/
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_F1) {
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.addCategory(Intent.CATEGORY_HOME);
startActivity(intent);
return true;
}
return super.onKeyDown(keyCode, event);
}


38,获取物理按键的KeyCode值

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
while(true){
Log.i(TAG , "keyCode:" + keyCode);
return super.onKeyDown(keyCode, event);
}
}


  附:欧阳鹏 我的Android进阶之旅——>Android KeyCode列表

39,颜色透明度对应表

透明度  十六进制

00%   FF(不透明)

5%    F2

10%   E5

15%   D8

20%   CC

25%   BF

30%   B2

35%   A5

40%   99

45%   8c

50%   7F

55%   72

60%   66

65%   59

70%   4c

75%   3F

80%   33

85%   21

90%   19

95%   0c

100%   00(全透明)

如: #FFFFFFFF 不透明白色

   #00FFFFFF 全透明白色

40,Android版本和API Level对应表



Android版本和API Level对应表下载请移步:http://download.csdn.net/detail/zxc514257857/9867553

Android开发中的一些小知识点记录 (1-20) (41-60)

———-因本人才疏学浅,如博客或Demo中有错误的地方请大家随意指出,与大家一起讨论,共同进步,谢谢!———-
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息