`

android点滴2

阅读更多
如何让Drawable绕着中心旋转?
Animation a = new RotateAnimation(0.0f, 360.0f,
Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF,0.5f);
a.setRepeatCount(-1);
a.setDuration(1000);


如何控制Android LED灯颜色?
很多Android手机上都配有LED灯,比如HTC的手机在充电、新来短信等时候都会有响应的指示,其实很简单的这都是NotificationManager的一些参数而已,下面Android123给大家说下如何通过代码控制LED灯的闪烁,因为有些机型没有LED灯或颜色种类较少,发布时需要真机观察。
final int ID_LED=19871103; 
NotificationManager nm=(NotificationManager)getSystemService(NOTIFICATION_SERVICE);
Notification notification = new Notification(); 
notification.ledARGB = 0xFFFFFF;  //这里是颜色,我们可以尝试改变,理论上0xFF0000是红色,0x00FF00是绿色
notification.ledOnMS = 100; 
notification.ledOffMS = 100; 
notification.flags = Notification.FLAG_SHOW_LIGHTS; 
nm.notify(ID_LED, notification); 
nm.cancel(ID_LED);


如何获取APK文件安装时间?
很多Android开发者想设计一个APK管理程序,获取APK文件的安装日期很多网友不是很明白。在早期Android123使用的方法是通过PackageManager类的getInstalledApplications方法返回一个ApplicationInfo数组,ApplicationInfo类中sourceDir可以获取APK的文件路径,从而使用File类读取文件的上次修改时间而实现。但这可能导致:
1. 无法获取原始的创建时间,可能很早就被创建了,之后被替换了。
2. 如果这个APK在一个私有的位置,比如app-private目录,使用Market付费购买的应用在这个位置,如果没有Root的Android手机是没有权限读取的,也导致获取时间失败。
在Android 2.3 API Level为9中,ApplicationInfo类新增的firstInstallTime和lastUpdateTime这两个字段,可以直接获取到APK的创建或上次修改的时间,即使是付费软件也能正常的获取。

如何区别单位px和dp以及sp?
px (pixels)像素 -- 一般我们HVGA代表320x480像素,这个用的比较多。
dip或dp (device independent pixels)设备独立像素 -- 这个和设备硬件有关,一般我们为了支持WVGA、HVGA和QVGA cwj推荐使用这个,不依赖像素。
sp (scaled pixels — best for text size)放大像素-- 主要处理字体的大小。
下面的几个是不常用的,大家也知道这里android123就不再过多的赘述。
in (inches)英寸
mm (millimeters)毫米 
pt (points)点


如何动态改变ImageView大小?
很多网友可能发现在layout.xml文件中定义了ImageView的绝对大小后,无法动态修改以后的大小显示,其实Android平台在设计UI控件时考虑到这个问题,为了适应不同的Drawable可以通过在xml的相关ImageView中加入android:scaleType="fitXY" 这行即可,但因为使用了缩放可能会造成当前UI有所变形。使用的前提是限制ImageView所在的层,可以使用一个内嵌的方法限制显示。

如何在Android中最简单的播放GIF动画?
GIF动画的原理就是逐帧播放,在Android中提供了AnimationDrawable类可以实现,有的网友写过GIF89A的解码方法在过去的J2ME平台移植到Android平台也能用,其实在Google Android上面开发目前2.2以后的固件支持的方法除了Flash Player外,更好的兼容方法就是使用万能的webkit浏览器了,我们直接在工程中内嵌一个webView,html中只要写上类似img src="http://android123.com.cn/cwj.gif" 这样的就可以了,当然了路径大家可以换成本地的,对于浏览器使用本地资源url为file://开头。 不过webView的资源消耗也不小,开个webView对象可能占用了至少8MB的RAM吧,保守估计,当然更多的要看插件和以及html的复杂程度所决定的。

如何调用手机系统拨号页面?
/*调出联系人界面*/
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.setData(ContactsContract.Contacts.CONTENT_URI);//android2.X
startActivity(intent);

/* 调用拨号的画面 */
Intent myIntentDial = new Intent("android.intent.action.CALL_BUTTON");
startActivity(myIntentDial);

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

如何取得GPS卫星个数?
LocationManager manager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
Iterator<GpsSatellite> iterator = manager.getGpsStatus(null).getSatellites().iterator();
int count = 0;
while (iterator.hasNext()) {
        count++;
}
return count; 


如何判断手机有无网络?
ConnectivityManager cwjManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
		if (cwjManager.getActiveNetworkInfo() != null) {
			if (cwjManager.getActiveNetworkInfo().isAvailable()) {
				String type = cwjManager.getActiveNetworkInfo().getTypeName();
				System.out.println("_____________________-" + type);
			}
			;
		}else {
			System.out.println("_____________________-" + cwjManager.getActiveNetworkInfo());
		}

如果拟开发一个网络应用的程序,首先考虑是否接入网络,在Android手机中判断是否联网可以通过 ConnectivityManager 类的isAvailable()方法判断,首先获取网络通讯类的实例,使用cwjManager.getActiveNetworkInfo().isAvailable(); 来返回是否有效,如果为True则表示当前Android手机已经联网,可能是WiFi或GPRS、HSDPA等等,具体的可以通过ConnectivityManager 类的getActiveNetworkInfo() 方法判断详细的接入方式,需要注意的是有关调用需要加入<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission> 这个权限,在真机上Market和Browser程序都使用了这个方法,来判断是否继续,同时在一些网络超时的时候也可以检查下网络连接是否存在,以免浪费手机上的电力资源。

如何获得自己程序的版本?
 private String mVersion;   
public String longVersion() {  
        if (mVersion == null) {  
            PackageManager pm = getPackageManager();  
            PackageInfo pi;  
            try {  
                pi = pm.getPackageInfo(getPackageName(), 0);  
                mVersion = pi.versionName;  
                System.out.println("mVersion-----------------> "+mVersion);  
            } catch (NameNotFoundException e) {  
                mVersion = ""; // failed, ignored  
            }  
        }  
        return mVersion;  
}  


drawable- hdpi、drawable- mdpi、drawable-ldpi的区别:
在之前的版本中,只有一个drawable,而2.1版本中有drawable-mdpi、drawable-ldpi、drawable-hdpi三个,这三个主要是为了支持多分辨率。
(1)drawable-hdpi里面存放高分辨率的图片,如WVGA (480x800),FWVGA (480x854)
(2)drawable-mdpi里面存放中等分辨率的图片,如HVGA (320x480)
(3)drawable-ldpi里面存放低分辨率的图片,如QVGA (240x320)
    系统会根据机器的分辨率来分别到这几个文件夹里面去找对应的图片。在开发程序时为了兼容不同平台不同屏幕,建议各自文件夹根据需求均存放不同版本图片。

如何理解Context?
Context字面意思上下文。
    位于framework package的android.content.Context中,其实该类为LONG型,类似Win32中的Handle句柄,很多方法需要通过Context才能识别调用者的实例,比如说Toast的第一个参数就是Context,一般在Activity中我们直接用this代替,代表调用者的实例为Activity,而到了一个button的onClick(View view)等方法时,我们用this时就会报错,所以我们可能使用ActivityName.this来解决,主要原因是因为实现Context的类主要有Android特有的几个模型,Activity、Service以及BroadcastReceiver。
    常规需要Context实例的方法主要有各种Service实现的类,比如说SensorManager在实例化时需要getSystemService(String)方法就必须由Context的实例执行,还有一些私有的文件系统I/O比如说openFileInput以及常用的Toast的makeText方法等。

如何为Android MapView申请apiKey?
1.首先先要获取你的debug keystore位置:
  打开Eclipse--->Windows--->Preferences--->Android--->Build
查看默认的debug keystore位置,我的是C:\Documents and Settings\Android123\.android\debug.keystore
2.在cmd中执行:
  keytool -list -alias androiddebugkey -keystore "C:\Documents and Settings\Android123\.android\debug.keystore" -storepass android -keypass android
  双引号中的为你keystore位置
  执行结果:
  androiddebugkey, May 4, 2009, PrivateKeyEntry,
  Certificate fingerprint (MD5): XX:XX:XX:XX:XX:XX:XX:XX.............
  这里的XX:XX:XX:XX:XX:XX:XX:XX.............就是你的认证指纹
3.打开http://code.google.com/intl/zh-CN/android/maps-api-signup.html
填入你的认证指纹(MD5)即可获得apiKey了,结果显示如下:
  您的密钥是:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
4.使用得到的apiKey:在layout中加入MapView
  <com.google.android.maps.MapView
          android:id="@+id/mapview"
          android:layout_width="fill_parent"
          android:layout_height="fill_parent"
          android:apiKey="XXXXXXXXXXXXXXXXXXXXXXXXXXXX" />

如何理解onInterceptTouchEvent()事件处理点击的承继关系?
onInterceptTouchEvent()的机制:
1. down事件首先会传递到onInterceptTouchEvent()方法
2. 如果该ViewGroup的onInterceptTouchEvent()在接收到down事件处理完成之后return false,
   那么后续的move, up等事件将继续会先传递给该ViewGroup,之后才和down事件一样传递给最
   终的目标view的onTouchEvent()处理
3. 如果该ViewGroup的onInterceptTouchEvent()在接收到down事件处理完成之后return true,
   那么后续的move, up等事件将不再传递给onInterceptTouchEvent(),而是和down事件一样
   传递给该ViewGroup的onTouchEvent()处理,注意,目标view将接收不到任何事件。
4. 如果最终需要处理事件的view的onTouchEvent()返回了false,那么该事件将被传递至其上一
   层次的view的onTouchEvent()处理
5. 如果最终需要处理事件的view 的onTouchEvent()返回了true,那么后续事件将可以继续传递
   给该view的onTouchEvent()处理

如何彻底关闭android应用程序(back按键)?
在开发android应用时,常常通过按返回键(即keyCode == KeyEvent.KEYCODE_BACK)就能关闭程序,其实大多情况下该应用还在任务里运行着,其实这不是我们想要的结果。
我们可以这样做,当用户点击自定义的退出按钮或返回键时(需要捕获动作),我们在onDestroy()里强制退出应用,或直接杀死进程,具体操作代码如下:
@Override
	public boolean onKeyDown(int keyCode, KeyEvent event) {
		
		//按下键盘上返回按钮
		if(keyCode == KeyEvent.KEYCODE_BACK){
						finish();
			return true;
		}else{		
			return super.onKeyDown(keyCode, event);
		}
	}
	@Override
	protected void onDestroy() {
		super.onDestroy();
		
		System.exit(0);
		//或者下面这种方式
		//android.os.Process.killProcess(android.os.Process.myPid()); 
	}


如何让所有Activty界面全去掉标题栏?
修改AndroidManifest.xml ,在application 标签中添加 。
android:theme="@android:style/Theme.NoTitleBar"

当同时有多个ImageView共同使用同一个资源文件例如:demo.png的时候,如果我们在利用代码控制其中一个ImageView的状态例如:alpha的时候,同时也会影响到别的ImageView的状态,这个时候我们可以通过下面的办法来避免这种情况的发生:
//res_ico 是一个图片资源文件id R.drawable.***
Drawable ico = getResources().getDrawable(res_ico);
ImageView iv = new ImageView(this);
iv.setBackgroundDrawable(ico);
iv.setClickable(false);
iv.setAdjustViewBounds(true);
ico.mutate().setAlpha(20);


如何判断GPS是否打开以及跳转到设置GPS界面?
检查GPS是否打开
locationManager.isProviderEnabled("gps"); 

转到GPS设置界面
startActivity(new Intent("android.settings.LOCATION_SOURCE_SETTINGS"));


如何获取手机版本等信息?
// 获取手机SDK 版本和版本号
System.out.println("version-> "+android.os.Build.VERSION.SDK);
System.out.println("version-> "+android.os.Build.VERSION.RELEASE);	
//获取产品型号
System.out.println("version-> "+android.os.Build.MODEL);


如何在Android开发之模拟按下Home键的效果 ?
 Intent i= new Intent(Intent.ACTION_MAIN);
 i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
//如果是服务里调用,必须加入new task标识
 i.addCategory(Intent.CATEGORY_HOME);


如何杀死进程?
在Android 2.2中新增了一个API可以帮助我们杀死后台进程,不过其调用的API Level最小为8,killBackgroundProcesses是android.app.ActivityManager类的方法,使用时必须在androidmanifest.xml文件中加入KILL_BACKGROUND_PROCESSES这个权限。
该方法的原型 public void killBackgroundProcesses (String packageName)  仅有一个参数为package Name,使用方法比较简单:
 ActivityManager am = (ActivityManager) getSystemService(ACTIVITY_SERVICE); 
am.killBackgroundProcesses("cn.com.android123.cwj");   
// API Level至少为8才能使用


如何在子线程中通过handler操作界面元素?
android.os.Handler hander = new android.os.Handler();					hander.postDelayed(new Runnable()
{
public void run()
{
  ad.dismiss();
}
}, 5 * 1000);

如何清除桌面墙纸?
clearWallpaper();


不过我们需要设置墙纸更改权限:
<uses-permission android:name="android.permission.SET_WALLPAPER" />


如何申请访问SDCard的权限?
<!-- 在SDCard中创建与删除文件权限 -->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
<!-- 往SDCard写入数据权限 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
分享到:
评论
1 楼 shishoufeng 2015-06-10  
楼主确实很用心啊!学习了

相关推荐

    基于Android的记录点滴生活App设计与实现.pdf

    "基于Android的记录点滴生活App设计与实现" 本文主要介绍了基于Android的记录点滴生活App的设计与实现,旨在帮助用户提高时间利用效率、满足用户日常社交、记录用户生活轨迹。该App的设计主要涉及到应用背景、实现...

    基于Android Studio开发的安卓的记事本app

    在移动设备上,记事本应用是一种常见的工具,方便用户随时随地记录生活点滴或工作备忘。本文将深入探讨一个基于Android Studio开发的安卓记事本App,它包含了登录、注册、记事本列表、添加记事、修改记事等功能,...

    基于Android,AndroidStudio开发的便签软件APP

    这个APP的设计灵感来源于锤子便签,它提供了一个简洁而实用的界面,供用户记录生活中的点滴、工作上的待办事项或是任何需要记住的信息。源码的结构清晰,非常适合那些正在寻找毕业设计项目的同学,或者对Android应用...

    安卓大作业,Android Studio做的记事本

    在这个大作业中,我们看到的是一个基于Android Studio开发的简单记事本应用,它允许用户记录日常生活中的点滴,并进行保存。下面我们将深入探讨这个应用涉及到的关键知识点。 1. **Android应用基础**: - **...

    点滴音乐播放器

    总的来说,"点滴音乐播放器"是一款集本地音乐播放、播放模式选择和歌词同步显示于一体的Android应用,其背后的技术实现涵盖了多媒体处理、文件操作、用户界面设计等多个方面,充分体现了Android开发的多样性和复杂性...

    Android应用源码时光日志本一句话记录每一天

    【Android应用源码时光日志本】是一款专为Android平台设计的应用程序,旨在帮助用户用一句话轻松记录生活中的点滴时光。这款应用的核心功能是让用户每天用简洁的语言记录下自己的所思所感,形成一个时间线式的个人...

    Android记事本的实现

    在Android平台上,开发一个记事本应用是一项常见的实践任务,它可以帮助用户记录日常生活中的点滴信息。这个"Android记事本的实现"项目是基于Android SDK的,利用了平台内置的SQLite数据库来存储用户的数据。接下来...

    Android旅游助手app

    2. **旅游笔记**:用户可以在此记录旅行中的点滴,无论是行程规划、景点介绍还是体验感受,都可以随时保存,便于日后回忆或分享。 3. **实时天气**:集成天气API,为用户提供准确的当地及目的地天气预报,包括温度...

    android笔记本

    这款简单的笔记本App可能是为了方便用户记录日常生活、工作或学习中的点滴信息。 描述中提到“用android写的一个简单的笔记本app”,这意味着这个App可能具有基本的记事功能,如文本编辑、保存、查看等。开发者可能...

    android随手记

    【标题】:“Android随手记”是一款专为Android平台设计的笔记应用,旨在提供便捷的记录功能,让用户随时随地捕捉生活中的点滴。源代码的开放性使得它成为初学者学习Android开发的良好资源。 【描述】:该项目提供...

    饭否Android客户端 源码

    其Android客户端为用户提供了一个便捷的途径,通过手机随时随地分享生活点滴,关注他人动态。今天,我们将深入探讨“饭否Android客户端”的源码,以此来揭示其背后的开发原理和技术栈。 首先,源码是软件开发的核心...

    Android便签的源代码

    在Android平台上,开发一款便签应用是常见的任务,它能够帮助用户快速记录日常生活中的点滴信息。本源代码分享的是一个Android便签应用的实现,旨在为开发者提供学习和参考的资源。下面我们将深入探讨Android便签...

    android课程设计

    这个设计的目标是创建一个简单易用、功能直观的便签应用,使用户能够随时随地记录生活中的点滴想法或待办事项。 在Android平台上开发便签应用,你需要掌握以下几个核心知识点: 1. **环境搭建**:首先,你需要安装...

    Android App_云随笔课程设计

    在开发“Android App_云随笔课程设计”项目时,我们面临的是构建一个移动应用程序,旨在帮助用户便捷地记录他们的日常生活、旅行体验、心情点滴以及学习笔记等。这个应用程序的关键特性在于其同步功能,它将用户的...

    基于Android的儿童成长APP的设计与实现

    2、每日任务新视觉,可以对每日任务进行删除,执行每日任务操作便捷。 3、专家推荐模块,了解最新幼教知识,统计阅读时长,按时长奖励小红花。 4、家庭分享模块,分享宝宝成长点滴,每分享一次奖励5朵小红花。 5、...

    Android随手记

    2. **布局设计**:应用的界面由XML文件定义,使用Android的Layout组件如LinearLayout、RelativeLayout或ConstraintLayout来组织各个UI元素,如EditText(文本输入框)和Button(按钮)。 3. **活动(Activity)管理...

    Android日记本(上线版)

    《Android日记本(上线版)》是一款专为Android平台设计的日记应用,旨在提供便捷、个性化的记录方式,让用户能够随时随地记录生活中的点滴。这款应用的第二版已经正式上线,并在指定网址...

    android 日记本

    在Android平台上,开发一款日记本应用是一个常见的实践项目,它能帮助用户记录日常生活中的点滴,同时为初学者提供了一个理解Android应用开发的良好起点。这款"android 日记本"源代码正是这样一个实例,它包含了基本...

    Android便签作品

    在Android平台上,开发一款便签应用是一个常见的项目,它能够帮助用户快速记录日常生活中的点滴信息。这个名为"Android便签作品"的项目包含了基础的便签功能和安全性的设置,如密码保护,使得用户的数据更加私密。接...

    Android私密记事本

    "Android私密记事本"是一个典型的Android应用程序,它利用了Android平台的核心组件——四大组件,为用户提供了一个安全、便捷的记录生活点滴的工具。本文将深入探讨这一应用程序背后的技术原理,主要围绕四大组件...

Global site tag (gtag.js) - Google Analytics