android 左右页面滑动(滑屏)增加layout文件 而不是drawable(还有activity)-阿里云开发者社区

开发者社区> 奥特曼超人> 正文

android 左右页面滑动(滑屏)增加layout文件 而不是drawable(还有activity)

简介: android 左右页面滑动(滑屏)增加layout文件 而不是drawable(还有activity)    |字号 订阅 ViewFlipper + GestureDetector 简单的实现:   这里还需实现 implements OnGestureListener 。
+关注继续查看

android 左右页面滑动(滑屏)增加layout文件 而不是drawable(还有activity)  

 |字号 订阅

ViewFlipper + GestureDetector

简单的实现:  
这里还需实现 implements OnGestureListener 。
另外需要4个动画的配置文件: 说到Animation,我们先看下如何在Android中实现自定义Animation。自定义的Animation是以XML格式定义的,定义好的XML文件存放在res/anim中。

 

  一般的Animation有以下四种类型:

  1. Alpha:渐变透明度动画效果

  2. Scale:渐变尺寸伸缩动画效果

  3. Translate:画面转换位置移动动画效果

  4. Rotate:画面转换位置移动动画效果 

  push_left_in.xml文件中代码:

复制代码
<?xml version="1.0" encoding="utf-8"?>  

<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate android:fromXDelta="100%p" android:toXDelta="0"
        android:duration="500" />
    <alpha android:fromAlpha="0.1" android:toAlpha="1.0"
        android:duration="500" />
</set>

复制代码

 

 

  push_left_out.xml文件中代码: 

复制代码
 <?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate android:fromXDelta="0" android:toXDelta="-100%p"
        android:duration
="500" />
    <alpha android:fromAlpha="1.0" android:toAlpha="0.1"
        android:duration
="500" />

</set>  

复制代码

 

  push_right_in.xml文件中代码:

复制代码
<?xml version="1.0" encoding="utf-8"?> 

<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate android:fromXDelta="-100%p" android:toXDelta="0"
        android:duration="500" />
    <alpha android:fromAlpha="0.1" android:toAlpha="1.0"
        android:duration="500" />
</set>

复制代码

 

   push_right_out.xml文件中代码:

复制代码
<?xml version="1.0" encoding="utf-8"?> 

<set xmlns:android="http://schemas.android.com/apk/res/android">
    <translate android:fromXDelta="0" android:toXDelta="100%p"
        android:duration="500" />
    <alpha android:fromAlpha="1.0" android:toAlpha="0.1"
        android:duration="500" />

</set>  


//以下是主代码了:
private ViewFlipper _viewFlipper;
private GestureDetector detector; 

//增加activity 而不是drawable
  private View addViewObject(int layout){ 
return  LayoutInflater.from(this).inflate(layout, null); 
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.main_ui);
 detector= new GestureDetector(this);
_viewFlipper=(ViewFlipper) findViewById(R.id.viewflipper_ui);
_viewFlipper.addView(this.addViewObject(R.layout.viewpager_two));
_viewFlipper.addView(this.addViewObject(R.layout.viewpager_two));
_viewFlipper.addView(this.addViewObject(R.layout.viewpager_three));
detector= new GestureDetector(this);
_viewFlipper=(ViewFlipper) findViewById(R.id.viewflipper_ui);
}
// onTouchEvent
@Override public boolean onTouchEvent(MotionEvent event) { 
// return super.onTouchEvent(event); 
  return detector.onTouchEvent(event);
 } 

 @Override public boolean onDown(MotionEvent e) { return false; }

//主要是这个方法,其它方法都是不需要写代码的。不过看个人需求吧。
 @Override public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { 
 if (e1.getX() - e2.getX() > 50) {
 this._viewFlipper.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.push_left_in));    this._viewFlipper.setOutAnimation(AnimationUtils.loadAnimation(this, R.anim.push_left_out));  this._viewFlipper.showNext(); return true; 
} else if (e1.getX() - e2.getX() < -50) {     this._viewFlipper.setInAnimation(AnimationUtils.loadAnimation(this, R.anim.push_right_in));     this._viewFlipper.setOutAnimation(AnimationUtils.loadAnimation(this,R.anim.push_right_out));                        this._viewFlipper.showPrevious(); return true; } return false; 
 }

@Override public void onLongPress(MotionEvent e) {

 }

 @Override public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { 
 return false; } 

 @Override public void onShowPress(MotionEvent e) { 
 // TODO Auto-generated method stub } 

 @Override public boolean onSingleTapUp(MotionEvent e) { // TODO Auto-generated method stub return false; }



 

//研究了好久。
滑动跳转为activity:
继承extends ActivityGroup
然后:
_viewFlipper.addView(getLocalActivityManager().startActivity("", new Intent(MainUiActivity.this, GridViewMore.class)).getDecorView(), 0); _viewFlipper.addView(getLocalActivityManager().startActivity("", new Intent(MainUiActivity.this,GridViewIntroduce.class)).getDecorView(), 1); _viewFlipper.setDisplayedChild(0);
其余代码不变!

 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
@程序员,你该如何选择技术方向?
@程序员,你该如何选择技术方向?
3 0
从百度“脸优”看人脸识别技术 或将开启中国技术驱动革命
人脸识别技术,听起来是不是很炫?事实上,目前人脸识别已经不是技术上的空谈,已经有很多领域正在或将要实现人脸识别技术应用。譬如安防、银行等领域,人脸识别最容易应用的就是安全领域。除了这些公共单位,有没有面向大众的应用?答案是肯定的,百度世界大会发布的脸优就是这样一款产品。
2 0
Java 并发编程(一):摩拳擦掌
Java 并发编程(一):摩拳擦掌
3 0
【愚公系列】2021年11月 攻防世界-进阶题-MISC-044(labour)
【愚公系列】2021年11月 攻防世界-进阶题-MISC-044(labour)
3 0
JSON正确的下载网址及编译
JSON正确的下载网址及编译
5 0
Cloud for Customer里XML view的加载原理
Cloud for Customer里XML view的加载原理
5 0
Cordova工程里android平台相关的index.html是怎么加载的
Cordova工程里android平台相关的index.html是怎么加载的
5 0
不看好的Android火了,看好的WebOS死了
不看好的Android火了,看好的WebOS死了
5 0
Cloud for Customer里XML view的加载原理
Cloud for Customer里XML view的加载原理
4 0
增强的字节码反编译工具:Enhanced Class Decompiler
增强的字节码反编译工具:Enhanced Class Decompiler
6 0
+关注
奥特曼超人
KARL-Dujinyang-奥特曼超人。作者目前任职于银狐、泡椒游戏公司,曾任职腾为CTO,CSDN技术专家,曾创办过创业go、造梦工厂、米奇云,万能孵化器等,领域涉及逆向安全专家以及全栈工程师,作者目前出书中。
236
文章
7
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载