先上圖吧看效果吧。
看這效果,佈局我就不用多說了吧。每塊是個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了,是不是很簡單。