常見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 按比例放大裁切
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章