常见android区别

版权声明:本文为延成原创文章,转载请标明出处

1.广播与服务的区别

广播的周期很短,你不能在广播内做耗时操作,而服务却能。广播的作用是帮你传递一些通知,
例如你写了一个开机广播,一旦手机开机,广播就发一则通知告诉手机(你写的程序),手机
你写的程序,某个类,某句代码)启动服务,这个时候在服务里面可以做你想做的耗时操作,
例如去请求服务器,加载数据。广播和服务的区别就是广播周期短,不能做耗时操作,
服务是长时间连接,可以做耗时操作,例如用服务控制音乐的播放等。广播需要注册,
有两种方式,一个在配置文件里面,一个是代码注册、服务是写一个类继承服务,然后在里面
写你的操作,外围实例化服务,去启动服务。

广播的两种注册方式,配置文件里注册不能代码消除,程序不干掉,永久存在,而代码写的能取
消注册..这是他们的区别.你广播发送,接受主要是根据你的action里面的参数来的.

2.getWritableDatabase()和getReadableDatabase()的区别

getReadableDatabase()并不是以只读方式打开数据库,而是先执行getWritableDatabase(),失败的情况下才调用。
getWritableDatabase()和getReadableDatabase()方法都可以获取一个用于操作数据库的SQLiteDatabase实例。
但getWritableDatabase()方法以读写方式打开数据库,一旦数据库的磁盘空间满了,数据库就只能读而不能写,
getWritableDatabase()打开数据库就会出错。getReadableDatabase()方法先以读写方式打开数据库,
倘若使用如果数据库的磁盘空间满了,就会打开失败,当打开失败后会继续尝试以只读方式打开数据库.

3.帧动画/补间动画/属性动画

帧动画

ImageView iv_view = (ImageView) findViewById(R.id.iv_view);
	iv_view.setBackgroundResource(R.drawable.runanimation);
	AnimationDrawable ad = (AnimationDrawable) iv_view.getBackground();
	ad.start();
runanimation.xml 其实就是图片的快速切换
<?xml version="1.0" encoding="utf-8"?>
	<animation-list xmlns:android="http://schemas.android.com/apk/res/android" 
    android:oneshot="false">
    <item android:drawable="@drawable/g1" android:duration="200" />
    <item android:drawable="@drawable/g2" android:duration="200" />
    <item android:drawable="@drawable/g3" android:duration="200" />
    <item android:drawable="@drawable/g4" android:duration="200" />
    <item android:drawable="@drawable/g5" android:duration="200" />
    <item android:drawable="@drawable/g6" android:duration="200" />
    <item android:drawable="@drawable/g7" android:duration="200" />
    <item android:drawable="@drawable/g8" android:duration="200" />
    <item android:drawable="@drawable/g9" android:duration="200" />
    <item android:drawable="@drawable/g10" android:duration="200" />
    <item android:drawable="@drawable/g11" android:duration="200" />
	</animation-list>

补间动画

其实图片并没有移动,只是视觉效果
public void click1(View view){
		//TranslateAnimation ta = new TranslateAnimation(0, 100, 0, 0);
		ta = new TranslateAnimation(Animation.RELATIVE_TO_SELF, -0.5f, Animation.RELATIVE_TO_SELF, 2, Animation.RELATIVE_TO_SELF, -0.5f, Animation.RELATIVE_TO_SELF, 2);
		ta.setDuration(2000);
		ta.setRepeatCount(2);
		ta.setRepeatMode(Animation.REVERSE);
		ta.setFillAfter(true);
		iv.startAnimation(ta);
	}
	//缩放
	public void click2(View view){
		sa = new ScaleAnimation(0.1f, 5, 0.1f, 5);
		sa.setDuration(2000);
		sa.setRepeatCount(2);
		sa.setRepeatMode(Animation.REVERSE);
		sa.setFillAfter(true);
		iv.startAnimation(sa);
	}

属性动画

方式一:

//位移
	public void click1(View view){
		 oa1 = ObjectAnimator.ofFloat(iv, "translationX", 0,100,20,100);
		 oa1.setDuration(2000);
		 oa1.setRepeatCount(1);
		 oa1.start();
	}
	//缩放
	public void click2(View view){
		 oa2 = ObjectAnimator.ofFloat(iv, "scaleX", 0.5f,15,0.1f,0.1f);
		 oa2.setDuration(5000);
		 oa2.setRepeatCount(1);
		 oa2.start();
	}

方式二:
animator/animator.xml

<?xml version="1.0" encoding="utf-8"?>
	<objectAnimator xmlns:android="http://schemas.android.com/apk/res/android" 
    android:propertyName="translationY"
    android:duration="2000"
    android:repeatCount="1"
    android:valueFrom="0"
    android:valueTo="100"
    >
	</objectAnimator>

	//代码开启
	public void click6(View view){
		
		Animator animator = AnimatorInflater.loadAnimator(this, R.animator.animator);
		animator.setTarget(iv);
		animator.start();
	}

4.操作菜单(PopupWindow)与Dialog区别

PopupWindow:弹出对象。可以显示视图,背景是透明的。指定位置(坐标 参考点)弹出。

Dialog:弹出对象,可以显示视图。但是背景是半透明的。
PopupWindow(View contentView, int width, int height) 
	pop.showAsDropDown(anchor 锚点 参考点 , xoff 横向偏移 , yoff 纵向偏移)

5.图片的src与background的区别

src:前景内容 一般不跟控件一样大
background:北京内容 一般跟控件一样大
src不能够跟background一样大 可使用缩放属性

scaleType缩放属性
fitXY src填充background 不按比例
center centerInside 图片 压缩显示
centerCrop src填充background 按比例放大裁切
发布了152 篇原创文章 · 获赞 23 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/AliEnCheng/article/details/103930892
今日推荐