超簡單的仿Win8 風格佈局,手指按下,背景圖片(背景Linearlayout佈局)縮小,手指鬆開恢復。

先上圖吧看效果吧。

 看這效果,佈局我就不用多說了吧。每塊是個Linearlyout佈局。

 現在想要這種效果。跟攜程APP主頁面差不多,不過可能實現方式不一樣。

 點擊每一塊,手指按下時縮小, 手指鬆開恢復。

 利用ScalAnimation即可輕鬆實現。 也看到有大神重寫了ImageView,比我這個高級多了。

 廢話不多說,進入正題。


上圖中每一塊是個線性佈局,然後裏邊是ImageView, TextView, 這都很清楚。

 給周遊世界那塊的LinearLayout起個id:  

 android:id="@+id/linear_one"

然後看MainActivity:

public class MainActivity extends Activity  implements OnClickListener{
    private RadioGroup group;
	private LinearLayout linear;
	@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
         linear=(LinearLayout) findViewById(R.id.linear_one);//初始化那塊佈局
        linear.setOnClickListener(this);//註冊監聽事件
        /**
         * 因爲我們要判斷手指按下 ,擡起的動作,故監聽OnTouchListener
         */
        linear.setOnTouchListener(new OnTouchListener() {
			@Override
			public boolean onTouch(View arg0, MotionEvent arg1) {
				int action=arg1.getAction();
				if(action==MotionEvent.ACTION_DOWN){//按下時,縮小
					ScaleAnimation   sa=new  ScaleAnimation(1.0f, 0.85f,1.0f,0.85f,Animation.RELATIVE_TO_SELF
							,0.5f,Animation.RELATIVE_TO_SELF,0.5f);
					sa.setDuration(100);//時間
					sa.setFillAfter(true);//此句尤其注意,不寫的話,你按下,他動畫過後馬上恢復原樣。這句代碼就是阻止它恢復
			     	linear.startAnimation(sa);
				}else if(action==MotionEvent.ACTION_UP){//鬆開,放大恢復
					ScaleAnimation   sa=new  ScaleAnimation(0.85f, 1.0f,0.85f,1.0f,Animation.RELATIVE_TO_SELF
							,0.5f,Animation.RELATIVE_TO_SELF,0.5f);
					sa.setDuration(100);//時間
					sa.setFillAfter(true);
			     	linear.startAnimation(sa);
		//	     	Intent intent=new Intent(MainActivity.this,A.class);   一般鬆開後就是在這寫跳轉Activity事件了。
			//     	  startActivity(intent);
				}
				return false;
			}
		});
  
}

	@Override
	public void onClick(View arg0) {
	}
}

至此,已經OK了,是不是很簡單。



 


  

發佈了32 篇原創文章 · 獲贊 20 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章