首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

android 控件翻转切换格局

2012-07-02 
android 控件翻转切换布局过程是:1:准备好布局如下:2:翻转view动画,翻转动画的监听。3:翻转后布局的替换,这

android 控件翻转切换布局



过程是:
1:准备好布局如下:
2:翻转view动画,翻转动画的监听。
3:翻转后布局的替换,这里用了隐藏
我用了setVisibility(View.INVISIBLE)



layout/mygaller_item_bg_01是正面
layout/mygaller_item_bg_02是反面












过程和动画翻转的控制public class ViewRotate implements OnClickListener {private ImageView imageview;private View bg;private DisplayNextView displayNextView;private Context context;private View convertView;private LayoutInflater mInflater;private boolean now_zhengfan;private View container_bg;public ViewRotate(Context context, View convertView,LayoutInflater mInflater) {this.context = context;this.convertView = convertView;this.mInflater = mInflater;now_zhengfan = true;AnimationUtils.loadAnimation(context, R.anim.my_alpha_action);init();}public void init() {bg = (ViewGroup) convertView.findViewById(R.id.container);bg.findViewById(R.id.btn_more).setOnClickListener(this);container_bg = convertView.findViewById(R.id.container_bg);container_bg.setBackgroundDrawable(GraphicsBitmapUtils.BitmapToDrawable(GraphicsBitmapUtils.getRoundedCornerBitmap(GraphicsBitmapUtils.drawableToBitmap(context.getResources().getDrawable(R.drawable.zh)))));}private void applyRotation(int position, float start, float end) {// Find the center of the containerfinal float centerX = bg.getWidth() / 2.0f;final float centerY = bg.getHeight() / 2.0f;final Rotate3d rotation = new Rotate3d(start, end, centerX, centerY,310.0f, false);rotation.setDuration(500);rotation.setFillAfter(false);rotation.setInterpolator(new AccelerateInterpolator());rotation.setAnimationListener(new DisplayNextView(position, true));bg.startAnimation(rotation);AlphaAnimation alphaAnim = new AlphaAnimation(0, 1);}@Overridepublic void onClick(View v) {// TODO Auto-generated method stubbg.setEnabled(false);applyRotation(0, 0, 90);}private final class DisplayNextView implements Animation.AnimationListener {private final int mPosition;private final boolean b;private DisplayNextView(int position, boolean t) {mPosition = position;b = t;}public void onAnimationStart(Animation animation) {}public void onAnimationEnd(Animation animation) {if (b) {bg.post(new SwapViews(mPosition));if (now_zhengfan) {bg.findViewById(R.id.backe_bg1).setVisibility(View.INVISIBLE);} else {bg.findViewById(R.id.backe_bg2).setVisibility(View.INVISIBLE);}} else {bg.setEnabled(true);if (now_zhengfan) {bg.findViewById(R.id.backe_bg2).setVisibility(View.VISIBLE);bg.setOnClickListener(ViewRotate.this);bg.setClickable(true);AlphaAnimation alphaAnim = new AlphaAnimation(0, 1);alphaAnim.setDuration(2000);alphaAnim.setStartOffset(500);alphaAnim.setAnimationListener(new CanClickAnimationListener(bg));bg.findViewById(R.id.backe_bg2).startAnimation(alphaAnim);now_zhengfan = false;} else {bg.findViewById(R.id.backe_bg1).setVisibility(View.VISIBLE);bg.setOnClickListener(ViewRotate.this);now_zhengfan = true;bg.setClickable(false);View btn = bg.findViewById(R.id.btn_more);btn.setOnClickListener(ViewRotate.this);//container_bg//.setBackgroundDrawable(GraphicsBitmapUtils.BitmapToDrawable(GraphicsBitmapUtils.getRoundedCornerBitmap(GraphicsBitmapUtils//.drawableToBitmap(context.getResources()//.getDrawable(R.drawable.zh)))));AlphaAnimation alphaAnim = new AlphaAnimation(0, 1);alphaAnim.setDuration(2000);alphaAnim.setStartOffset(500);alphaAnim.setAnimationListener(new CanClickAnimationListener(bg, btn));bg.findViewById(R.id.backe_bg1).startAnimation(alphaAnim);// bg.findViewById(R.id.backe_bg1).startAnimation(// CopyOfTestRotate.this.animation);}}}public void onAnimationRepeat(Animation animation) {}}private final class SwapViews implements Runnable {private final int mPosition;public SwapViews(int position) {mPosition = position;}public void run() {final float centerX = bg.getWidth() / 2.0f;final float centerY = bg.getHeight() / 2.0f;Rotate3d rotation;if (mPosition > -1) {rotation = new Rotate3d(90, 180, centerX, centerY, 310.0f,false);rotation.setAnimationListener(new DisplayNextView(mPosition,false));} else {rotation = new Rotate3d(90, 0, centerX, centerY, 310.0f, false);}rotation.setDuration(500);rotation.setFillAfter(false);rotation.setInterpolator(new DecelerateInterpolator());bg.startAnimation(rotation);bg.setEnabled(false);}}}

热点排行