如何在android studio帧动画下新建透明动画

教你怎么玩转动画 - 博客频道 - CSDN.NET
暴走哥丶AS
Android studio
分类:技能类
相关文章:
自定义控件三部曲文章索引》:
Android的animation由四种类型组成:alpha、scale、translate、rotate,对应android官方文档地址:
1、XML配置文件中
渐变透明度动画效果
渐变尺寸伸缩动画效果
画面转换位置移动动画效果
画面转移旋转动画效果
下面我们逐个讲讲每个标签的属性及用法。2、动作文件存放位置
动作定义文件应该存放在res/anim文件夹下,访问时采用R.anim.XXX.xml的方式,位置如图:
二、scale标签——调节尺寸
1、自有属性
scale标签是缩放动画,可以实现动态调控件尺寸的效果,有下面几个属性:
android:fromXScale&& &起始的X方向上相对自身的缩放比例,浮点值,比如1.0代表自身无变化,0.5代表起始时缩小一倍,2.0代表放大一倍;android:toXScale&& & & &结尾的X方向上相对自身的缩放比例,浮点值;android:fromYScale&& &起始的Y方向上相对自身的缩放比例,浮点值,android:toYScale&& & & &结尾的Y方向上相对自身的缩放比例,浮点值;android:pivotX&& & & & & &缩放起点X轴坐标,可以是数值、百分数、百分数p 三种样式,比如 50、50%、50%p,当为数值时,表示在当前View的左上角,即原点处加上50px,做为起始缩放点;如果是50%,表示在当前控件的左上角加上自己宽度的50%做为起始点;如果是50%p,那么就是表示在当前的左上角加上父控件宽度的50%做为起始点x轴坐标。(具体意义,后面会举例演示)android:pivotY&& & & & &&缩放起点Y轴坐标,取值及意义跟android:pivotX一样。
下面看一个实例,当scale里的属性这样设置时,效果会怎样呢:
&?xml&version=&1.0&&encoding=&utf-8&?&&&&scale&xmlns:android=&/apk/res/android&&&&&&&android:fromXScale=&0.0&&&&&&&android:toXScale=&1.4&&&&&&&android:fromYScale=&0.0&&&&&&&android:toYScale=&1.4&&&&&&&android:pivotX=&50&&&&&&&android:pivotY=&50&&&&&&&android:duration=&700&&/&&&
(1)、pivotX取值数值时(50)
这个控件,宽度和高度都是从0放大到1.4倍,起始点坐标在控件左上角(坐标原点),向x轴正方向和y轴正方向都加上50像素;
根据pivotX,pivotY的意义,控件的左上角即为控件的坐标原点,这里的起始点是在控件的原点的基础上向X轴和Y轴各加上50px,做为起始点,如下图中图二所示
& & & & & & & & & & & & & & & &图一 & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & 图二
(2)、pivotX取值百分数时(50%)
下面再看看当pivotX、pivotY取百分数的时候,起始点又在哪里?
上面我们讲了,pivotX的值,当取50%时,表示在原点坐标的基础上加上的自己宽度的50%,看看效果:
&?xml&version=&1.0&&encoding=&utf-8&?&&&&scale&xmlns:android=&/apk/res/android&&&&&&&android:fromXScale=&0.0&&&&&&&android:toXScale=&1.4&&&&&&&android:fromYScale=&0.0&&&&&&&android:toYScale=&1.4&&&&&&&android:pivotX=&50%&&&&&&&android:pivotY=&50%&&&&&&&android:duration=&700&&/&&&
缩放位置大小仍然从0-1.4,只改变pivotX和pivotY;起始点位置如下图中图二所示:
& & & & & & & & & & & & & & & &图一 & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & 图二
(3)、pivotX取值50%p时
前面说过,当取值在百分数后面加上一个字母p,就表示,取值的基数是父控件,即在原点的基础上增加的值是父标签的百分值。
&?xml&version=&1.0&&encoding=&utf-8&?&&&&scale&xmlns:android=&/apk/res/android&&&&&&&android:fromXScale=&0.0&&&&&&&android:toXScale=&1.4&&&&&&&android:fromYScale=&0.0&&&&&&&android:toYScale=&1.4&&&&&&&android:pivotX=&50%p&&&&&&&android:pivotY=&50%p&&&&&&&android:duration=&700&&/&&&
效果图,及起始点坐标图如下所示:
2、从Animation类继承的属性
Animation类是所有动画(scale、alpha、translate、rotate)的基类,这里以scale标签为例,讲解一下,Animation类所具有的属性及意义。关于Animation类的官方文档位置为:
android:duration&& & & &动画持续时间,以毫秒为单位&android:fillAfter&& & & & &如果设置为true,控件动画结束时,将保持动画最后时的状态android:fillBefore &&& & 如果设置为true,控件动画结束时,还原到开始动画前的状态android:fillEnabled&& &与android:fillBefore 效果相同,都是在动画结束时,将控件还原到初始化状态android:repeatCount&重复次数android:repeatMode 重复类型,有reverse和restart两个值,reverse表示倒序回放,restart表示重新放一遍,必须与repeatCount一起使用才能看到效果。因为这里的意义是重复的类型,即回放时的动作。android:interpolator&&设定插值器,其实就是指定的动作效果,比如弹跳效果等,不在这小节中讲解,后面会单独列出一单讲解。
对于android:duration,就不再讲解了,就是动画的持续时长,以毫秒为单位,下面看看android:fillAfter和android:fillBefore
(1)android:fillAfter:保持动画结束的状态
&?xml&version=&1.0&&encoding=&utf-8&?&&&&scale&xmlns:android=&/apk/res/android&&&&&&&android:fromXScale=&0.0&&&&&&&android:toXScale=&1.4&&&&&&&android:fromYScale=&0.0&&&&&&&android:toYScale=&1.4&&&&&&&android:pivotX=&50%&&&&&&&android:pivotY=&50%&&&&&&&android:duration=&700&&&&&&&&android:fillAfter=&true&&&&&&&/&&&
(2)android:fillBefore &还原初始化状态
&?xml&version=&1.0&&encoding=&utf-8&?&&&&scale&xmlns:android=&/apk/res/android&&&&&&&android:fromXScale=&0.0&&&&&&&android:toXScale=&1.4&&&&&&&android:fromYScale=&0.0&&&&&&&android:toYScale=&1.4&&&&&&&android:pivotX=&50%&&&&&&&android:pivotY=&50%&&&&&&&android:duration=&700&&&&&&&&android:fillBefore=&true&&&&&&&/&&&
& & & & & & & & android:fillBefore=&true& & & & & & & & & & & & & & & & & android:fillEnable=&true&
上面顺便列出了,当仅设定fillEanble为true时的效果,这两个的标签的效果完全相同。
(3)、android:repeatMode=&restart /reverse& &设定回放类型
&?xml&version=&1.0&&encoding=&utf-8&?&&&&scale&xmlns:android=&/apk/res/android&&&&&&&android:fromXScale=&0.0&&&&&&&android:toXScale=&1.4&&&&&&&android:fromYScale=&0.0&&&&&&&android:toYScale=&1.4&&&&&&&android:pivotX=&50%&&&&&&&android:pivotY=&50%&&&&&&&android:duration=&700&&&&&&&&android:fillBefore=&true&&&&&&&android:repeatCount=&1&&&&&&&android:repeatMode=&restart&&&/&&&
& & & & androidRepeatMode设为restart & & & & & & & & & & &&androidRepeatMode设为reverse
三、alpha标签——调节透明度
1、自身属性
android:fromAlpha&& 动画开始的透明度,从0.0 --1.0 ,0.0表示全透明,1.0表示完全不透明android:toAlpha & &&& 动画结束时的透明度,也是从0.0 --1.0 ,0.0表示全透明,1.0表示完全不透明
使用示例:
&?xml&version=&1.0&&encoding=&utf-8&?&&&&alpha&xmlns:android=&/apk/res/android&&&&&&&android:fromAlpha=&1.0&&&&&&&android:toAlpha=&0.1&&&&&&&android:duration=&3000&&&&&&&android:fillBefore=&true&&&&&/alpha&&&
2、从Animation类继承的属性
android:duration&& & & &动画持续时间,以毫秒为单位&android:fillAfter&& & & & &如果设置为true,控件动画结束时,将保持动画最后时的状态android:fillBefore &&& & 如果设置为true,控件动画结束时,还原到开始动画前的状态android:fillEnabled&& &与android:fillBefore 效果相同,都是在动画结束时,将控件还原到初始化状态android:repeatCount&重复次数android:repeatMode 重复类型,有reverse和restart两个值,reverse表示倒序回放,restart表示重新放一遍,必须与repeatCount一起使用才能看到效果。因为这里的意义是重复的类型,即回放时的动作。android:interpolator&&设定插值器,其实就是指定的动作效果,比如弹跳效果等,不在这小节中讲解,后面会单独列出一单讲解。
与scale标签意义一样,就不再缀述。
四、rotate标签——旋转
1、自身属性
android:fromDegrees&& & 开始旋转的角度位置,正值代表顺时针方向度数,负值代码逆时针方向度数android:toDegrees&& & & & 结束时旋转到的角度位置,正值代表顺时针方向度数,负值代码逆时针方向度数android:pivotX&& & & & & & & 缩放起点X轴坐标,可以是数值、百分数、百分数p 三种样式,比如 50、50%、50%p,具体意义已在scale标签中讲述,这里就不再重讲android:pivotY&& & & & & & & 缩放起点Y轴坐标,可以是数值、百分数、百分数p 三种样式,比如 50、50%、50%p
&?xml&version=&1.0&&encoding=&utf-8&?&&&&rotate&xmlns:android=&/apk/res/android&&&&&&&android:fromDegrees=&0&&&&&&&android:toDegrees=&-650&&&&&&&android:pivotX=&50%&&&&&&&android:pivotY=&50%&&&&&&&android:duration=&3000&&&&&&&android:fillAfter=&true&&&&&&&&&&&/rotate&&&
围绕自身从0度逆时针旋转650度 & & & & & & & & & & & & & &围绕自身从0度顺时针旋转650度
android:fromDegrees=&0& & & & & & & & & & & & & & & & & & & & android:fromDegrees=&0&
android:toDegrees=&-650& & & & & & & & & & & & & & & & & & & &android:toDegrees=&650&
2、从Animation类继承的属性
android:duration&& & & &动画持续时间,以毫秒为单位&android:fillAfter&& & & & &如果设置为true,控件动画结束时,将保持动画最后时的状态android:fillBefore &&& & 如果设置为true,控件动画结束时,还原到开始动画前的状态android:fillEnabled&& &与android:fillBefore 效果相同,都是在动画结束时,将控件还原到初始化状态android:repeatCount&重复次数android:repeatMode 重复类型,有reverse和restart两个值,reverse表示倒序回放,restart表示重新放一遍,必须与repeatCount一起使用才能看到效果。因为这里的意义是重复的类型,即回放时的动作。android:interpolator&&设定插值器,其实就是指定的动作效果,比如弹跳效果等,不在这小节中讲解,后面会单独列出一单讲解。
与scale标签意义一样,就不再缀述。
五、translate标签 —— 平移
1、自身属性
android:fromXDelta&& & 起始点X轴坐标,可以是数值、百分数、百分数p 三种样式,比如 50、50%、50%p,具体意义已在scale标签中讲述,这里就不再重讲android:fromYDelta&& &起始点Y轴从标,可以是数值、百分数、百分数p 三种样式;android:toXDelta &&& & & 结束点X轴坐标android:toYDelta&& & & &结束点Y轴坐标
&?xml&version=&1.0&&encoding=&utf-8&?&&&&translate&xmlns:android=&/apk/res/android&&&&&&&android:fromXDelta=&0&&&&&&&&android:toXDelta=&-80&&&&&&&android:fromYDelta=&0&&&&&&&android:toYDelta=&-80&&&&&&&android:duration=&2000&&&&&&&android:fillBefore=&true&&&&&/translate&&&
2、从Animation类继承的属性
android:duration&& & & &动画持续时间,以毫秒为单位&android:fillAfter&& & & & &如果设置为true,控件动画结束时,将保持动画最后时的状态android:fillBefore &&& & 如果设置为true,控件动画结束时,还原到开始动画前的状态android:fillEnabled&& &与android:fillBefore 效果相同,都是在动画结束时,将控件还原到初始化状态android:repeatCount&重复次数android:repeatMode 重复类型,有reverse和restart两个值,reverse表示倒序回放,restart表示重新放一遍,必须与repeatCount一起使用才能看到效果。因为这里的意义是重复的类型,即回放时的动作。android:interpolator&&设定插值器,其实就是指定的动作效果,比如弹跳效果等,不在这小节中讲解,后面会单独列出一单讲解。
与scale标签意义一样,就不再缀述。
六、set标签——定义动作合集
前面我们讲解了各个标签动画的意义及用法,但他们都是独立对控件起作用,假设我现在想上面的textView控件做一个动画——从小到大,旋转出场,而且透明度也要从0变成1,即下面的这个效果,该怎么办?
这就需要对指定的控件定义动作合集,Set标签就可以将几个不同的动作定义成一个组;
set标签自已是没有属性的,他的属性都是从Animation继承而来,但当它们用于Set标签时,就会对Set标签下的所有子控件都产生作用。
属性有:(从Animation类继承的属性)
android:duration&& & & &动画持续时间,以毫秒为单位&android:fillAfter&& & & & &如果设置为true,控件动画结束时,将保持动画最后时的状态android:fillBefore &&& & 如果设置为true,控件动画结束时,还原到开始动画前的状态android:fillEnabled&& &与android:fillBefore 效果相同,都是在动画结束时,将控件还原到初始化状态android:repeatCount&重复次数android:repeatMode 重复类型,有reverse和restart两个值,reverse表示倒序回放,restart表示重新放一遍,必须与repeatCount一起使用才能看到效果。因为这里的意义是重复的类型,即回放时的动作。android:interpolator&&设定插值器,其实就是指定的动作效果,比如弹跳效果等,不在这小节中讲解,后面会单独列出一单讲解。
与scale标签意义一样,就不再缀述。
上面这个效果,所对应的XML代码为:
&?xml&version=&1.0&&encoding=&utf-8&?&&&&set&xmlns:android=&/apk/res/android&&&&&&&android:duration=&3000&&&&&&&android:fillAfter=&true&&&&&&&&&&&&&alpha&&&&&&&android:fromAlpha=&0.0&&&&&&&android:toAlpha=&1.0&/&&&&&&&&&&scale&&&&&&android:fromXScale=&0.0&&&&&&&android:toXScale=&1.4&&&&&&&android:fromYScale=&0.0&&&&&&&android:toYScale=&1.4&&&&&&&android:pivotX=&50%&&&&&&&android:pivotY=&50%&/&&&&&&&&&&rotate&&&&&&android:fromDegrees=&0&&&&&&&android:toDegrees=&720&&&&&&&android:pivotX=&50%&&&&&&&android:pivotY=&50%&/&&&&&&&&&&&&&/set&&&
七、实例——如何将动画XML文件应用于控件中
上面我仅仅是列出了每个标签及其属性的意义及应用之后的效果演示,但上面是如何将定义动画的xml应用到textView控件中的却迟迟没说,这一小节,就以scale动画为例,讲述如何将定义好的scle动作添加到指定控件中。
先看最终效果图:
1、新建工程、新建scale动画文件(scaleanim.xml)
新建一个工程,并且在res文件夹下,新建一个anim文件夹,然后再新建一个scaleanim.xml文件,结构如图所示:
scaleanim.xml的代码为:(从TextView中心点,从0放大到1.4倍,反复一次,最后还原到初始化状态)
&?xml&version=&1.0&&encoding=&utf-8&?&&&&scale&xmlns:android=&/apk/res/android&&&&&&&android:fromXScale=&0.0&&&&&&&android:toXScale=&1.4&&&&&&&android:fromYScale=&0.0&&&&&&&android:toYScale=&1.4&&&&&&&android:pivotX=&50%&&&&&&&android:pivotY=&50%&&&&&&&android:duration=&700&&&&&&&&android:fillBefore=&true&&&&&&&android:repeatCount=&1&&&&&&&android:repeatMode=&restart&&&/&&&
2、XML布局文件
&LinearLayout&xmlns:android=&/apk/res/android&&&&&&&xmlns:tools=&/tools&&&&&&&android:layout_width=&match_parent&&&&&&&android:layout_height=&match_parent&&&&&&&android:orientation=&vertical&&&&&&&tools:context=&com.harvic.animation_demo.MainActivity&&&&&&&&&&&&Button&android:id=&@+id/btn_animation&&&&&&&&&&&android:layout_width=&match_parent&&&&&&&&&&&android:layout_height=&wrap_content&&&&&&&&&&&android:layout_margin=&10dip&&&&&&&&&&&android:text=&scale&animation&/&&&&&&&&TextView&&&&&&&&&&android:id=&@+id/tv&&&&&&&&&&&android:layout_width=&100dip&&&&&&&&&&&android:layout_height=&200dip&&&&&&&&&&&android:background=&#ff00ff&&&&&&&&&&&&android:text=&@string/hello_world&&&&&&&&&&&android:layout_gravity=&center_horizontal&/&&&&&&/LinearLayout&&&
3、JAVA代码
public&class&MainActivity&extends&Activity&{&&&&&&&&Button&scaleBtn&;&&&&&&Animation&scaleA&&&&&&&&&&&&TextView&&&&&&&@Override&&&&&&protected&void&onCreate(Bundle&savedInstanceState)&{&&&&&&&&&&super.onCreate(savedInstanceState);&&&&&&&&&&setContentView(R.layout.activity_main);&&&&&&&&&&&&&&&&&&&&scaleAnimation&=&AnimationUtils.loadAnimation(this,&R.anim.scaleanim);&&&&&&&&&&scaleBtn&=&(Button)findViewById(R.id.btn_animation);&&&&&&&&&&tv&=(TextView)findViewById(R.id.tv);&&&&&&&&&&&&&&&&&&&&scaleBtn.setOnClickListener(new&View.OnClickListener()&{&&&&&&&&&&&&&&&&&&&&&&&&&&&&@Override&&&&&&&&&&&&&&public&void&onClick(View&v)&{&&&&&&&&&&&&&&&&&&//&TODO&Auto-generated&method&stub&&&&&&&&&&&&&&&&&&tv.startAnimation(scaleAnimation);&&&&&&&&&&&&&&}&&&&&&&&&&});&&&&&&&&&&&&&&&&}&&&&}&&
(1)通过scaleAnimation = AnimationUtils.loadAnimation(this, R.anim.scaleanim);从XML文件中获取动画
(2)利用startAnimation将动画传递给指定控件显示。
baozouge_0606
排名:千里之外
(2)(2)(1)C# Winform实现炫酷的透明动画界面
做过.NET Winform窗体美化的人应该都很熟悉UpdateLayeredWindow吧,UpdateLayeredWindow可以实现窗体的任意透明,效果很好,不会有毛边。不过使用这个API之后,会有一个问题就是无法使用普通控件,而且没有Paint消息。为了解决这个问题,有两种方法。
一、使用双层窗体,底层窗体使用UpdateLayeredWindow作为背景,上层窗体用普通窗体,并且可以使用TransparencyKey或者Region来实现去除不需要的窗体内容,让上层窗体能看到底层的窗体。
二、直接单层窗体,使用控件的DrawToBitmap把控件图像绘制到UpdateLayeredWindow的窗体上,这样就可以看到普通控件了。不过这个也有问题:1.控件内容不能自动更新 &2.效率低,很多控件使用DrawToBitmap绘制出的图像不完整,甚至绘制不出图像。比如TextBox无法显示光标,WebBrowser无法显示内容。
&三、采用DirectUI技术,重写所有基础控件。效果最好,不过工作量巨大。
使用UpdateLayeredWindow时,一般是需要对Bitmap缓存起来,通过设置剪辑区域,局部重绘来提高效率。另外还可以异步重绘,模拟Winform的失效到重绘。
有些人会说为什么不直接用WPF啊,Wpf和Winform各有优缺点,适应不同的场合。Winform相对于使用更简单一些,系统要求更低。当然需要看人的习惯了和擅长的。
UpdateLayeredWindow 基本使用方法:
重写窗体的 CreateParams 属性
CreateParams CreateParams
CreateParams cp
base .CreateP
cp.ExStyle
WS_EX_LAYERED 扩展样式
SetBitmap(Bitmap bitmap,
(bitmap.PixelFormat
PixelFormat.Format32bppArgb)
ApplicationException( &位图必须是32位包含alpha 通道& );
IntPtr screenDc
Win32.GetDC(IntPtr.Zero);
IntPtr memDc
Win32.CreateCompatibleDC(screenDc);
IntPtr hBitmap
IntPtr oldBitmap
bitmap.GetHbitmap(Color.FromArgb( 0 ));
// 创建GDI位图句柄,效率较低
Win32.SelectObject(memDc, hBitmap);
Win32.Size size
Win32.Size(bitmap.Width, bitmap.Height);
Win32.Point pointSource
Win32.Point( 0 ,
Win32.Point topPos
Win32.Point(Left, Top);
Win32.BLENDFUNCTION blend
Win32.BLENDFUNCTION();
blend.BlendOp
Win32.AC_SRC_OVER;
blend.BlendFlags
blend.SourceConstantAlpha
blend.AlphaFormat
Win32.AC_SRC_ALPHA;
Win32.UpdateLayeredWindow(Handle, screenDc,
size, memDc,
pointSource,
blend, Win32.ULW_ALPHA);
Win32.ReleaseDC(IntPtr.Zero, screenDc);
IntPtr.Zero)
Win32.SelectObject(memDc, oldBitmap);
Win32.DeleteObject(hBitmap);
Win32.DeleteDC(memDc);
[StructLayout(LayoutKind.Sequential)]
Point(Int32 x, Int32 y)
[StructLayout(LayoutKind.Sequential)]
Size(Int32 cx, Int32 cy)
[StructLayout(LayoutKind.Sequential, Pack
[StructLayout(LayoutKind.Sequential, Pack
BLENDFUNCTION
SourceConstantA
Int32 ULW_COLORKEY
Int32 ULW_ALPHA
Int32 ULW_OPAQUE
AC_SRC_OVER
AC_SRC_ALPHA
[DllImport( & user32.dll & , ExactSpelling
true , SetLastError
Bool UpdateLayeredWindow(IntPtr hwnd, IntPtr hdcDst,
Point pptDst,
Size psize, IntPtr hdcSrc,
Point pprSrc, Int32 crKey,
BLENDFUNCTION pblend, Int32 dwFlags);
[DllImport( & user32.dll & , ExactSpelling
true , SetLastError
IntPtr GetDC(IntPtr hWnd);
[DllImport( & user32.dll & , ExactSpelling
ReleaseDC(IntPtr hWnd, IntPtr hDC);
[DllImport( & gdi32.dll & , ExactSpelling
true , SetLastError
IntPtr CreateCompatibleDC(IntPtr hDC);
[DllImport( & gdi32.dll & , ExactSpelling
true , SetLastError
Bool DeleteDC(IntPtr hdc);
[DllImport( & gdi32.dll & , ExactSpelling
IntPtr SelectObject(IntPtr hDC, IntPtr hObject);
[DllImport( & gdi32.dll & , ExactSpelling
true , SetLastError
Bool DeleteObject(IntPtr hObject);
[DllImport( & user32.dll & , EntryPoint
& SendMessage & )]
SendMessage( int
[DllImport( & user32.dll & , EntryPoint
& ReleaseCapture & )]
ReleaseCapture();
WM_SysCommand
SC_MAXIMIZE
SC_MINIMIZE
(window.slotbydup=window.slotbydup || []).push({
id: '2467140',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467141',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467143',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467148',
container: s,
size: '1000,90',
display: 'inlay-fix'Appearance --> Theme ,选择 Darcula 主题即可。
字体设置系统字体..."
输入关键字进行搜索
Android Studio 简单设置界面设置默认的 Android Studio 为灰色界面,可以选择使用炫酷的黑色界面。
Settings --> Appearance --> Theme ,选择 Darcula 主题即可。
字体设置系统字体设置如果你的Android Studio界面中,中文显示有问题,或者选择中文目录显示有问题,或者想修改菜单栏的字体,可以这么设置。
Settings --> Appearance ,勾选 Override default fonts by (not recommended) ,选择一款支持中文的字体即可。我使用的是 微软雅黑 ,效果不错。
编程字体设置此部分会修改编辑器的字体,包含所有的文件显示的字体。
Settings --> Editor --> Colors & Fonts --> Font 。默认系统显示的 Scheme 为 Defualt ,你是不能编辑的,你需要点击右侧的 Save As... ,保存一份自己的设置,并在当中设置。之后,在 Editor Font 中即可设置字体。
Show only monospaced fonts 表示只显示等宽字体,一般来说,编程等宽字体使用较多,且效果较好。
Settings --> Editor --> Colors & Fonts 中可以还可以设置字体的颜色,你可以根据你要设置的对象进行选择设置,同时你也可以从网络上下载字体颜色设置包导入。
代码格式设置如果你想设置你的代码格式化时显示的样式,你可以这么设置。
Settings --> Code Style 。同样的, Scheme 中默认的配置,你无法修改,你需要创建一份自己的配置。
默认文件编码无论是你个人开发,还是在项目组中团队开发,都需要统一你的文件编码。出于字符兼容的问题,建议使用 utf-8 。中国的 Windows 电脑,默认的字符编码为 GBK 。
Settings --> File Encodings 。建议将 IDE Encoding 、 Project Encoding 、 Properties Fiels 都设置成统一的编码。
快捷键Android Studio的快捷键和Eclipse的不相同,但是你可以在Android Studio中使用Eclipse的快捷键。
Settings --> Keymap 。你可以从 Keymaps 中选择对应IDE的快捷键,Android Studio对其他IDE的快捷键支持还是比较多的。建议不使用其他IDE的快捷键,而是使用Android Studio的快捷键。
当你想设置在某一个快捷键配置上进行更改,你需要点击 copy 创建一个自己的快捷键,并在上面进行设置。
Android Studio默认的快捷键中,代码提示为 Ctrl+Space ,会与系统输入法快捷键冲突,需要特殊设置。
Main menu --> Code --> Completion --> Basic ,更改为你想替换的快捷键组合。
其他设置1Android Studio编辑区域,在中部会有一条竖线。这条线是用以提醒程序员,一行的代码长度最好不要超过这条线。如果你不想显示这条线,可以这么设置。
Settings --> Editor --> Appearance ,取消勾选 Show right margin (configured in Code Style options) 。
Settings --> Editor --> Appearance ,勾选 Show line numbers 。
3显示空格。我习惯显示空格,这样就能看出缩进是 tab 缩进还是空格缩进。建议使用空格缩进。
Settings --> Editor --> Appearance ,勾选 Show whitespaces 。
4去除拼接检查。我个人觉得没用,所以禁用掉。
Settings --> Inspections --> Spelling ,取消勾选。
5如果你使用 Git 进行版本控制,你需要设置 Git 的安装文件目录。
Settings --> Version Control --> Git ,在右侧中选择你的 Git 的安装目录。
6插件。Android Studio和Eclipse一样,都是支持插件的。Android Studio默认自带了一些插件,如果你不使用某些插件,你可以禁用它。
Settings --> Plugins ,右侧会显示出已经安装的插件列表。取消勾选即可禁用插件。
我个人禁用了一下插件:
CVS Integration : CVS 版本控制系统,用不到。Google Cloud Tools For Android Studio : Google云 用不到。Google Login : Google账号登录,`Google Cloud Tools For Android Studio** 插件需用,用不到。hg4idea : Mercurial 版本控制系统,用不到。
这里需要注意的是,如果禁用了2和3选项,将导致不能使用导入官方样例的功能( import sample )。
你可以在 Browse repositories 页面中,搜索插件并安装。
我个人额外安装的插件:
.gitignore support : Git 版本控制系统中 .gitignore 文件管理插件。
7检查更新。Android Studio支持自动检查更新。之前尚未发布正式版时,一周有时会有几次更新。你可以设置检查的类型,用以控制更新类型。
Settings --> Updates 。勾选 Check for updates in channel ,即开通了自动检查更新。你可以禁用自动检查更新。右侧的列表,是更新通道。
Stable Channel : 正式版本通道,只会获取最新的正式版本。Beta Channel : 测试版本通道,只会获取最新的测试版本。Dev Channel : 开发发布通道,只会获取最新的开发版本。Canary Channel : 预览发布通道,只会获取最新的预览版本。
以上4个通道中, Stable Channel 最稳定,问题相对较少, Canary Channel 能获得最新版本,问题相对较多。
8自动导入。当你从其他地方复制了一段代码到Android Studio中,默认的Android Studio不会自动导入这段代码中使用到的类的引用。你可以这么设置。
Settings --> Editor --> Auto Import ,勾选 Add unambiguous improts on the fly 。
9有时很多人运行Android Studio会提醒你 JDK 或者 Android SDK 不存在,你需要重新设置。你需要到全局的 Project Structure 页面下进行设置。进入全局的 Project Structure 页面方法如下:
选择 Configure --> Project Defaults --> Project Structure方法2
选择 File --> Other Settings --> Default Project Structure
在此页面下设置 JDK 或者 Android SDK 目录即可。
这是在检查你的 Android SDK 。有人会在这里卡上很长时间,很大的原因就是:网络连接有问题。可以通过配置 hosts 的方式来解决。如果检查需要更新,则需要你进行安装 。
如果想跳过这一步,可以进行如下操作:
在Android Studio安装目录下的 bin 目录下,找到 idea.properties 文件,在文件最后追加 disable.android.first.run=true 。
看不过瘾,再来点儿呗
强烈支持愿意总结和分享的同志!
最近翻译了一套Android Studio视频教程 /s/1ntMfkXb
与阅~~~~~~~~~~
写得非常好,很细
基本平时用的都说到了,谢谢
刚开始学习 。怎样进入 Seting对话框????谢谢!!
找到了,在没有打开任何APP的情况下,在File-------seting
很有用的总结。
写得很好,都是有用的地方
大神! Android Studio的样式文件是放在哪个文件夹下的?如果我想换一个颜色鲜艳点的样式该怎么换?
找到 idea.properties 文件,在文件最后追加 disable.android.first.run=true 。
谢谢你的分享,每次重装AS都靠你这些去配置
非常感谢,真的很详细,今天第一次安装studio,每天都来看几集,半个月就差不多上手咯
要回复文章请先或

我要回帖

更多关于 android studio帧动画 的文章

 

随机推荐