qq_18804935 2014-08-14 02:01
浏览 2126

android游戏同时实现图片自动循环移动和另一张图片随手指移动二移动

package com.example.text;

import java.util.ArrayList;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.view.animation.Animation;
import android.view.animation.TranslateAnimation;
import android.widget.ImageView;
import android.widget.ListView;

import com.example.text.R;
/**u

  • MainActivity
  • @author xinye
  • */
    public class MainActivity extends BaseActivity implements OnTouchListener{
    private Handler mHandler = new Handler();
    private ImageView mImageView;
    private View mView;
    @Override
    protected void inflateContentView() {
    mView = layoutInflater.inflate(R.layout.activity_main, null);
    mImageView = (ImageView) mView.findViewById(R.id.imageView);
    contentView.addView(mView, contentViewDefaultParams);
    mView.measure(50, 50);
    mImageView.measure(50, 50);
    new Thread(new Runnable() {
    @Override
    public void run() {
    mHandler.post(new Runnable() {
    @Override
    public void run() {
    TranslateAnimation ta1 = new TranslateAnimation(
    TranslateAnimation.RELATIVE_TO_PARENT, 0,
    TranslateAnimation.RELATIVE_TO_PARENT, 0 ,
    TranslateAnimation.RELATIVE_TO_PARENT, 0,
    TranslateAnimation.RELATIVE_TO_PARENT,
    1 - (mImageView.getMeasuredHeight()) * 1.0f / mView.getMeasuredHeight());
    ta1.setDuration(2000);
    ta1.setStartTime(0);
    ta1.setRepeatCount(Integer.MAX_VALUE);
    ta1.setRepeatMode(Animation.REVERSE);
    mImageView.startAnimation(ta1);
    }
    });
    }
    }).start();

    }
    }

    public class MainActivity_one extends Activity implements OnTouchListener {
    int screenWidth;
    int screenHeight;

    int iv_Id[]={R.id.iv1};
    int drawable_Id[]={R.drawable.ooo};
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    DisplayMetrics dm = getResources().getDisplayMetrics();
    screenWidth= dm.widthPixels;
    screenHeight= dm.heightPixels - 50;
    
     for(int i=0;i<iv_Id.length;i++){
    
         ImageView iv=(ImageView)this.findViewById(iv_Id[i]);
         iv.setImageResource(drawable_Id[i]);
         iv.setOnTouchListener((OnTouchListener) this);
     }
    

    // b.setOnTouchListener(this);
    }
    int lastX,lastY;
    public boolean onTouch(View v, MotionEvent event) {
    // TODO Auto-generated method stub
    int ea=event.getAction();
    Log.i("TAG", "Touch:"+ea);

    //Toast.makeText(DraftTest.this, "位置:"+x+","+y, Toast.LENGTH_SHORT).show();
    
    switch(ea){
    case MotionEvent.ACTION_DOWN:
        lastX = (int) event.getRawX();
        lastY = (int) event.getRawY();
        break;
        /**
         * layout(l,t,r,b)
         * l  Left position, relative to parent 
          t  Top position, relative to parent 
          r  Right position, relative to parent 
          b  Bottom position, relative to parent  
         * */
    case MotionEvent.ACTION_MOVE:
        int dx =(int)event.getRawX() - lastX;
        int dy =(int)event.getRawY() - lastY;
    
        int left = v.getLeft() + dx;
        int top = v.getTop() + dy;
        int right = v.getRight() + dx;
        int bottom = v.getBottom() + dy;
    
        if(left < 0){
            left = 0;
            right = left + v.getWidth();
        }
    
        if(right > screenWidth){
            right = screenWidth;
            left = right - v.getWidth();
        }
    
        if(top < 0){
            top = 0;
            bottom = top + v.getHeight();
        }
    
        if(bottom > screenHeight){
            bottom = screenHeight;
            top = bottom - v.getHeight();
        }
    
        v.layout(left, top, right, bottom);
    
        Log.i("", "position:" + left +", " + top + ", " + right + ", " + bottom);
    
        lastX = (int) event.getRawX();
        lastY = (int) event.getRawY();
    
        break;
    case MotionEvent.ACTION_UP:
        break;              
    }
    return true;
    

    }
    }

  • 写回答

0条回答

    报告相同问题?

    悬赏问题

    • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
    • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
    • ¥15 如何处理复杂数据表格的除法运算
    • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
    • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
    • ¥200 uniapp长期运行卡死问题解决
    • ¥15 latex怎么处理论文引理引用参考文献
    • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
    • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?
    • ¥15 乘性高斯噪声在深度学习网络中的应用