真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Android中怎么實(shí)現(xiàn)view隨觸碰滑動(dòng)效果-創(chuàng)新互聯(lián)

Android中怎么實(shí)現(xiàn)view隨觸碰滑動(dòng)效果,針對這個(gè)問題,這篇文章詳細(xì)介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問題的小伙伴找到更簡單易行的方法。

創(chuàng)新互聯(lián)主營安岳網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,重慶App定制開發(fā),安岳h5小程序定制開發(fā)搭建,安岳網(wǎng)站營銷推廣歡迎安岳等地區(qū)企業(yè)咨詢

布局文件里面就是一個(gè)Relativelayout中有一個(gè)ImageView。如下




Java代碼如下,這里考慮了邊緣位置滑動(dòng)的效果。如果考慮,在最左邊緣imageView會(huì)有一半在屏幕之外,在最右邊緣會(huì)縮小,直到看不見。

package com.xingyi.moveviewwithtouch;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.MotionEvent;
import android.view.View;
import android.widget.ImageView;
import android.widget.RelativeLayout;
public class MainActivity extends AppCompatActivity {
 ImageView imageView;
 RelativeLayout relativeLayout;
 int heightRL,widthRL;
 int halfHeight,halfWidth;
 boolean first=true;
 private int widthImg;
 private int heightImg;
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  initView();
 }
 //初始化視圖
 private void initView() {
  imageView = (ImageView) findViewById(R.id.imageView);
  relativeLayout = (RelativeLayout) findViewById(R.id.relativeLayout);
  //獲取滑動(dòng)瞬間位置和點(diǎn)擊瞬間位置,并移動(dòng)imageview
  relativeLayout.setOnTouchListener(new View.OnTouchListener() {
   @Override
   public boolean onTouch(View view, MotionEvent motionEvent) {
    switch (motionEvent.getAction()) {
     case MotionEvent.ACTION_MOVE:
      moveView(imageView, motionEvent.getX(), motionEvent.getY());
      break;
     case MotionEvent.ACTION_DOWN:
      getWidthAndHeight();
      moveView(imageView, motionEvent.getX(), motionEvent.getY());
      break;
     default:
      break;
    }
    return true;
   }
  });
 }
 //因?yàn)椴荒茉诔跏蓟晥D時(shí)獲得長寬,而每次計(jì)算一次長寬又影響性能
 private void getWidthAndHeight(){
  if(first){
   widthRL=relativeLayout.getWidth();
   heightRL=relativeLayout.getHeight();
   widthImg=imageView.getWidth();
   heightImg=imageView.getHeight();
   halfWidth = imageView.getWidth() / 2;//imageView寬度的一半
   halfHeight = imageView.getHeight() / 2;//imageView高度的一半
   first=false;
  }
 }
 //滑動(dòng)瞬間,將x和y分別作imageView的中心點(diǎn)到relativeLayout最左和頂端距離
 private void moveView(View view, float x, float y) {
  RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) view.getLayoutParams();
  //設(shè)置水平位置
  if (x < halfWidth) {//左邊緣
   params.leftMargin = 0;//設(shè)置imageview到左端距離為0
  } else if (x > widthRL- halfWidth) {
   params.leftMargin = widthRL-widthImg;//設(shè)置imageview左端到左端端距離(params.rightMargin的性能非常糟糕)
  } else {
   params.leftMargin = (int) (x - halfWidth);//imageview左端到relativelayout左端距離
  }
  //設(shè)置豎直位置
  if (y < halfHeight) {
   params.topMargin = 0;
  } else if (y > heightRL - halfHeight) {
   params.topMargin = heightRL-widthImg;//params.bottomMargin的性能非常糟糕
  } else {
   params.topMargin = (int) (y - halfHeight);
  }
  view.setLayoutParams(params);
 }
}

關(guān)于Android中怎么實(shí)現(xiàn)view隨觸碰滑動(dòng)效果問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識。


本文標(biāo)題:Android中怎么實(shí)現(xiàn)view隨觸碰滑動(dòng)效果-創(chuàng)新互聯(lián)
文章URL:http://weahome.cn/article/cohcch.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部