先上图吧看效果吧。
看这效果,布局我就不用多说了吧。每块是个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了,是不是很简单。