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

Android 文件夹目录、当前日期、屏幕高度、Activity切换

2014-05-11 09:21 309 查看
1:getCacheDir()方法用于获取/data/data/项目的包名/cache目录,系统自动将应用中需要缓存的资源缓存到这个目录。

2:getFilesDir()方法用于获取/data/data/项目的包名/files目录,如果没有创建特定的文件夹,我们可以通过此方法来将文件存储到此目录下。

3:将文件写入SD卡内:

获取SDCard的状态:Environment.getExtemalStorageState() 如果等于EnvironmentMEDIA_MOUNTED,说明手机装有SDCard,并且可以进行读写

获取SDCard的目录:Environment.getExtemalStorageDirectory()

File saveFile=new File("/sdcard/zhzhg.txt");或:File sdCardDir=new File("/sdcard");通过手动指定目录也可以获得sdcard的目录,但是不建议这样做,因为假如Android后续版本改动了sdcard的目录的话,程序可能崩溃,建议采用系统的Environment.getExtemalStorageDirectory()方法得到目录。

下面举一个小例子:

File saveFile-new File(sdCardDir,"zhzhg.txt");//第一个参数为文件夹路径,第二个为文件的名称

FileOutputStream outStream = new FileOutputStream(saveFile);//根据路径创建文件流

outStream.write("文件的读写".getBytes());

outStream.close();

4:下面的小笔记为获得当前时间字符串的方法

public static String getDateStr(long t,String splitStr){//时间的毫秒,日期分割字符串,例如可以是“-”或“.”等

StringBuilder sb = new StringBuilder();//创建StringBuilder

Calendar calendar = Calendar.getInstance();//得到Calendar的实例

calendar.setTimeInMillis(t);//将毫秒数设置进calendar中

int year = calendar.get(Calendar.YEAR);//得到当前年

int month = calendar.get(Calendar.MONTH) + 1;//一年中的第一个月为january,为0

int day = calendar.get(Calendar.DAY_OF_MONTH);//得到当天为该月中的第几天

sb.append(year).append(splitStr).append(month).append(splitStr).append(day);//组织字符串

return sb.toString();//返回字符串

}

5:屏幕宽度、高度、状态栏高度、标题栏高度,资料参考http://www.iteye.com/topic/828830

通过View提供的方法获取高度方式有两种:

(1)当前显示的view中直接获取当前view高宽

(2)通过Activity的getWindow().findViewById(Window.ID_ANDROID_CONTENT)获取系统当前显示的view根(是一个framelayout对象),android绘制会将要绘制的
view放置在framelayout中绘制。

下图给出屏幕高度、应用高度、根View高度






View获取屏幕参数值的方法:



Display对象获取屏幕高宽 :

获取display对象 Activity中getWindowManager().getDefaultDisplay()

getWidth() 返回显示界面宽度即屏幕宽度

getHeight() 返回显示界面高度即屏幕高度

或者WindowManager wm = (WindowManager) this.getSystemService(Context.WINDOW_SERVICE);

int width = wm.getDefaultDisplay().getWidth();//屏幕宽度

int height = wm.getDefaultDisplay().getHeight();//屏幕高度

由display对象设置DisplayMetrics高宽值,通过DisplayMetrics对象获取屏幕高宽,有点多此一举 :

getWidth() 返回显示界面宽度即屏幕宽度

getHeight() 返回显示界面高度即屏幕高度



常用一些值计算:

屏幕高宽

Canvas对象 、display对象和DisplayMetrics可获取屏幕的高宽

状态栏高度

View的getWindowVisibleDisplayFrame(Rect outRect)附值outRect后,outRect.top()即是状态栏高度

标题高度

View的getWindowVisibleDisplayFrame(Rect outRect1)附值outRect后,outRect.height()-view.getheight()即是标题高度。

绘制区域高宽

方法诸多 随便用

6:

Animation有四种,scale,rotate,translate,alpha,而Activity之间的跳转有两种。

一种是overPendingTransition,传入in和out的animation文件,Activity转换的时候就可以显示动画了,一个是Activity进来的动画,一个是Activity销毁的动画,而且这个动画必须在startActivity或者finish函数之后调用才有效果。

另外一种是通过Theme的方式来进行Animation的设置的。

其中要了解有四个属性,都是Window类里面的属性:

activityOpenEnterAnimation:当打开一个新的Activity,这Animation就会作用于接下来进入屏幕的Activity

activityOpenExitAnimation:当打开一个新的Activity,这Animation就会作用于接下来退出屏幕的Activity

activityCloseEnterAnimation: 当关闭现在的Activity,这个Animation就会作用于接下来的进入屏幕的Activity

activityCloseExitAnimation:当关闭现在的Activity,这个Animation就会作用于接下来的要退出屏幕的Activity

即,当启动一个Activity的时候,activityOpenEnterAnimation这个Animation就是刚要进来的Activity的Animation,activityOpenEXiteAnimation就是给退出的Activity使用的Animation,而activityCloseEnterAnimation是给即将显示在屏幕上的Activity用的Animation,activityCloseExitAnimation就是给即将退出屏幕的Activity所显示的。

接着再把这个四个属性写进一个style文件中,而它是继承自@android:style/Animation.Activity的,所以parent需要写上@android:style/Animation.Activity,接着给android:windowAnimationStyle赋值为该style,接着在Theme中赋值。

<style name="anim">

<item name="android:windowAnimationStyle">@style/animation</item>

</style>

<style name="animation" parent="@android:style/Animation.Activity">

<item name="android:activityOpenEnterAnimation">@anim/in</item>

<item name="android:activityOpenExitAnimation">@anim/out</item>

<item name="android:activityCloseEnterAnimation">@anim/acin</item>

<item name="android:activityCloseExitAnimation">@anim/acout</item>

</style>

anim style文件,就是最终要给Theme赋值的文件。这样就能显示了,而如果要给所有的Activity都添加上Animation的显示效果,就在Application的标签中添加上这个Theme行了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: