安卓学习-界面-ui-ViewSwitcher、ImageSwitcher和TextSwitcher

3个都差不多,一个是图片,一个是文字

点击上一张、下一张或者向左、向右滑动

activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/linearLayout1"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

        <Button
            android:id="@+id/button1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="上一张" />

        <Button
            android:id="@+id/button2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="下一张" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >
        <ViewSwitcher
            android:id="@+id/viewSwitcher1"
            android:layout_width="match_parent"
            android:layout_height="match_parent" >

            <ImageView
                android:id="@+id/imageView1"
                android:layout_width="match_parent"
                android:layout_height="match_parent" />
        </ViewSwitcher>
    </LinearLayout>

</LinearLayout>

2个动画

slide_in_right.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- 设置从右边拖进来的动画
    android:duration指定动画持续时间  -->
    <translate
        android:fromXDelta="100%p"
        android:toXDelta="0"
        android:duration="@android:integer/config_mediumAnimTime" />
</set>

slide_out_left.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- 设置从左边拖出去的动画
    android:duration指定动画持续时间 -->
    <translate
        android:fromXDelta="0"
        android:toXDelta="-100%p"
        android:duration="@android:integer/config_mediumAnimTime" />
</set>  

MainActivity.java

public class MainActivity extends Activity{

    //定义图片资源
    int[] pics=new int[]{R.drawable.pic1,R.drawable.pic2,R.drawable.pic3};
    //用来判断手指是向左滑动还是向右
    float x1;
    float x2;

    ViewSwitcher viewSwitcher1;
    ImageView imageView1;
    //图片索引
    int index=0;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        viewSwitcher1=(ViewSwitcher)findViewById(R.id.viewSwitcher1);
        Button btn1=(Button)findViewById(R.id.button1);
        Button btn2=(Button)findViewById(R.id.button2);
        imageView1=(ImageView)findViewById(R.id.imageView1);

        //默认第一张图片
        imageView1.setImageResource(pics[0]);
        //上一张
        btn1.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                pre();
            }
        });
        // 下一张
        btn2.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                next();
            }
        });

        //识别手势
        viewSwitcher1.setOnTouchListener(new OnTouchListener() {
            public boolean onTouch(View v, MotionEvent event) {
                //手指按下时的坐标
                if(event.getAction()==MotionEvent.ACTION_DOWN){
                    x1=event.getX();
                }
                //手指松开时的坐标
                else if(event.getAction()==MotionEvent.ACTION_UP){
                    x2=event.getX();
                    //向左滑动
                    if(x1-x2>0){
                        Log.v("", "向左滑动");
                        next();

                    }
                    //向右滑动
                    else if(x2-x1>0){
                        Log.v("", "向右滑动");
                        pre();
                    }
                }
                return true;
            }
        });

    }

    void next(){
        // 为ViewSwitcher的组件显示过程设置动画
        viewSwitcher1.setInAnimation(this, R.anim.slide_in_right);
        // 为ViewSwitcher的组件隐藏过程设置动画
        viewSwitcher1.setOutAnimation(this, R.anim.slide_out_left);
        if(index==2) index=0;
        else index=index+1;
        imageView1.setImageResource(pics[index]);
        viewSwitcher1.showNext();

    }

   void pre(){
        //为ViewSwitcher的组件显示过程设置动画
        viewSwitcher1.setInAnimation(this, android.R.anim.slide_in_left);
        // 为ViewSwitcher的组件隐藏过程设置动画
        viewSwitcher1.setOutAnimation(this, android.R.anim.slide_out_right);
        if(index==0) index=2;
        else index=index-1;
        imageView1.setImageResource(pics[index]);
        viewSwitcher1.showPrevious();

    }

}

时间: 2024-12-14 07:43:34

安卓学习-界面-ui-ViewSwitcher、ImageSwitcher和TextSwitcher的相关文章

安卓学习-界面-View的自定义

android的所有UI控件,都是基于View的,因此特意重点学习了下这个,为后面学习其他控件打下基础. http://www.360doc.com/content/14/0102/12/12050012_342019150.shtml 重新时常用覆盖的方法 package com.example.ddddddd; import android.content.Context; import android.graphics.Canvas; import android.graphics.Rec

安卓学习-界面-布局-RelativeLayout

RelativeLayout相对布局,所有内部的组件都是相对的 XML属性 XML属性 函数 说明 android:gravity setGravity 内部组件的对其方式 android:ignoreGravity setIgnoreGravity 设置哪个组件不受Gravity影响 RelativeLayout.LayoutParams用来设置内部组件的对齐方式 XML属性 说明 android:layout_centerHorizontal 水平居中 android:layout_cent

安卓学习-界面-View和GroupView

所有的界面元素都是继承与View(如:ImageView .Button等),布局继承于GroupView(如:LinearLayout等) view的主要属性,这里直接是xml配置里写了,当然直接通过代码也是可以的 XML属性 相关方法 说明 android:alpha setAlpha(float alpha) alpha值是从0~1的,比如0.5相当于透明50%,并且需要注意的是3.0以下版本没有这个属性,因此只要设置了就相当于不透明,3.0版本以下可以用过view.getBackgrou

安卓学习-界面-布局-LinearLayout

1.常用的xml属性 XML属性 相关方法 说明 android:baselineAligned setBaselineAligned 看不懂什么意思,这个是网上的解释 设置为False将阻止该布局管理器于他的子元素基线对其  android:divider setDividerDrawable(Drawable divider) LinearLayout好像没效果 设置垂直布局时2个按钮之间的分隔线 android:gravity setGravity 组件内部的对齐方式,有如下几种 top

安卓学习第25课——imageswitcher

使用ImageSwitcher,实现渐变效果更换图片 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_paren

安卓学习-界面-事件-handler

安卓程序运行后,系统会产生一条主线程,如果在主线程里修改UI,则会照成冲突,因此安卓建议用handler来更改UI 1.4张图片定时变换 MainActivity.java public class MainActivity extends Activity { ImageView imageView1; int index=0; int[] pics=new int[]{R.drawable.pic1,R.drawable.pic2,R.drawable.pic3}; @Override pr

安卓学习-界面-事件-AsyncTask

异步任务Asynctask完成一个下载 activity_main.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height=&quo

安卓学习-界面-ui-ViewFlipper

ViewFlipper可以添加多个View并可以上一张.下一张.自动播放等 3个View,内容随便 view1.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientatio

安卓学习-界面-ui-TabHost

TabHost注意点 1.界面上要放上TabHost,并添加自定义的选项卡,而且还必须用代码来设置tab,并不是xml放了就行的 2.Activity必须继承TabActivity,否则没有getTabHost函数 3.现在已经不推荐使用TabActivity了,推荐用Flagment,书上是这么说的 例子 第一个tab页登陆窗口是用另外一个activity的,其他都是XML里写的 activity_main.xml <LinearLayout xmlns:android="http://