切换碎片

切换碎片,第1张

概述一、知识点Activity(活动窗口)Fragment(碎片、片段)碎片化学习(FragmentalLearning)TextView(标签)Button(按钮)GestureDetector(手势侦测器)GestureListener(手势监听器)二、创建安卓应用(一)、首先创建一个主应用(二)、创建第一张碎片(三)、创建第二张碎片(四)、创建第三张碎片三、 一、知识点Activity (活动窗口)Fragment(碎片、片段)碎片化学习(Fragmental Learning)TextVIEw(标签)button(按钮)GestureDetector(手势侦测器)GestureListener(手势监听器)二、创建安卓应用(一)、首先创建一个主应用

(二)、创建第一张碎片

(三)、创建第二张碎片

(四)、创建第三张碎片

三、将三张背景图片拷贝到drawable目录

四、主布局资源文件(一)、主布局activity_switch_fragment.xml

<?xml version="1.0" enCoding="utf-8"?><FrameLayout xmlns:androID="http://schemas.androID.com/apk/res/androID"    xmlns:app="http://schemas.androID.com/apk/res-auto"    xmlns:tools="http://schemas.androID.com/tools"    androID:ID="@+ID/container"    androID:layout_wIDth="match_parent"    androID:layout_height="match_parent"    tools:context=".switch_fragment"></FrameLayout>
(二)、第一张碎片布局(fragment_first.xml)

<?xml version="1.0" enCoding="utf-8"?><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_parent"    tools:context=".FirstFragment"    androID:background="@drawable/img1"    androID:orIEntation="vertical"    androID:gravity="center">    <TextVIEw        androID:layout_wIDth="wrap_content"        androID:layout_height="wrap_content"        androID:layout_marginBottom="20dp"        androID:text="@string/first_fragment"        androID:textcolor="#2196F3"        androID:textSize="25sp"/>    <button        androID:ID="@+ID/btnNextFragmrnt"        androID:layout_wIDth="wrap_content"        androID:layout_height="wrap_content"        androID:onClick="doNextFragmrnt"        androID:text="@string/next_fragment" />    <button        androID:ID="@+ID/btnChampion"        androID:layout_wIDth="wrap_content"        androID:layout_height="wrap_content"        androID:onClick="doChampion"        androID:text="冠军" /></linearLayout>
(三)、第二张碎片布局(fragment_second.xml)

@H_502_87@

<?xml version="1.0" enCoding="utf-8"?><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_parent"    tools:context=".SecondFragment"    androID:background="@drawable/img2"    androID:orIEntation="vertical"    androID:gravity="center">    <TextVIEw        androID:layout_wIDth="wrap_content"        androID:layout_height="wrap_content"        androID:layout_marginBottom="20dp"        androID:text="@string/second_fragment"        androID:textcolor="#00BCD4"        androID:textSize="25sp"/>    <button        androID:layout_wIDth="wrap_content"        androID:layout_height="wrap_content"        androID:ID="@+ID/btnNextFragmrnt"        androID:onClick="doNextFragmrnt"        androID:text="@string/next_fragment"/>    <button        androID:layout_wIDth="wrap_content"        androID:layout_height="wrap_content"        androID:ID="@+ID/btnSecond"        androID:onClick="doSecond"        androID:text="亚军"/></linearLayout>
(四)、第三张碎片布局(fragment_third.xml)

<?xml version="1.0" enCoding="utf-8"?><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_parent"    tools:context=".ThirdFragment"    androID:background="@drawable/img3"    androID:orIEntation="vertical"    androID:gravity="center">    <TextVIEw        androID:layout_wIDth="wrap_content"        androID:layout_height="wrap_content"        androID:layout_marginBottom="20dp"        androID:text="@string/third_fragment"        androID:textcolor="#2196F3"        androID:textSize="25sp"/>    <button        androID:ID="@+ID/btnNextFragmrnt"        androID:layout_wIDth="wrap_content"        androID:layout_height="wrap_content"        androID:onClick="doNextFragmrnt"        androID:text="@string/next_fragment"        />    <button        androID:ID="@+ID/btnRunner"        androID:layout_wIDth="wrap_content"        androID:layout_height="wrap_content"        androID:onClick="doRunner"        androID:text="季军"        /></linearLayout>
五、字符串资源文件strings.xml

<resources>    <string name="app_name">切换碎片</string>    <string name="first_fragment">第一个碎片</string>    <string name="second_fragment">第二个碎片</string>    <string name="third_fragment">第三个碎片</string>    <string name="next_fragment">下一个碎片</string></resources>
六、主界面类(一)、第一张碎片

@H_404_122@

package net.tp.xiangduibuju;import androID.os.Bundle;import androIDx.fragment.app.Fragment;import androID.vIEw.LayoutInflater;import androID.vIEw.VIEw;import androID.vIEw.VIEwGroup;import androID.Widget.button;import androID.Widget.Toast;public class FirstFragment extends Fragment {    private button btnNextFragment;    private button btnChampion;    public FirstFragment() {    }    @OverrIDe    public voID onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);    }    /*    * @param inflater布局填充器    *@param container 容器    * @param saveInstanceState 保存实例状态    * @return    *    */    @OverrIDe    public VIEw onCreateVIEw(LayoutInflater inflater, VIEwGroup container,                             Bundle savedInstanceState) {        // 获取碎片视图        VIEw vIEw = inflater.inflate(R.layout.fragment_first,container,false);        //通过资源标识符获取控件实例        btnNextFragment= vIEw.findVIEwByID(R.ID.btnNextFragmrnt);        btnChampion= vIEw.findVIEwByID(R.ID.btnChampion);       //给按钮注册监听器        btnNextFragment.setonClickListener(new VIEw.OnClickListener() {            @OverrIDe            public voID onClick(VIEw vIEw) {                getFragmentManager().beginTransaction().addToBackStack("next").replace(R.ID.container,FragmentList.fragments.get(1)).commit();            }        });         btnChampion.setonClickListener(new VIEw.OnClickListener() {             @OverrIDe             public voID onClick(VIEw vIEw) {                 Toast.makeText(getActivity(),"我是冠军",Toast.LENGTH_SHORT).show();             }         });        //返回视图        return vIEw;    }}
(二)、第二张碎片

package net.tp.xiangduibuju;import androID.os.Bundle;import androIDx.fragment.app.Fragment;import androID.vIEw.LayoutInflater;import androID.vIEw.VIEw;import androID.vIEw.VIEwGroup;import androID.Widget.button;import androID.Widget.Toast;public class SecondFragment extends Fragment {    private button btnNextFragment;    private button btnSecond;    public SecondFragment() {    }    /*     * @param inflater布局填充器     *@param container 容器     * @param saveInstanceState 保存实例状态     * @return     *     */    @OverrIDe    public voID onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);    }    @OverrIDe    public VIEw onCreateVIEw(LayoutInflater inflater, VIEwGroup container, Bundle savedInstanceState) {        // 获取碎片视图        VIEw vIEw = inflater.inflate(R.layout.fragment_second,container,false);        //通过资源标识符获取控件实例        btnNextFragment= vIEw.findVIEwByID(R.ID.btnNextFragmrnt);        btnSecond =vIEw.findVIEwByID(R.ID.btnSecond);        //给按钮注册监听器        btnNextFragment.setonClickListener(new VIEw.OnClickListener() {            @OverrIDe            public voID onClick(VIEw vIEw) {                //跳转到第三个碎片                getFragmentManager().beginTransaction().addToBackStack("next").replace(R.ID.container,FragmentList.fragments.get(2)).commit();            }        });        btnSecond.setonClickListener(new VIEw.OnClickListener() {            @OverrIDe            public voID onClick(VIEw v) {                Toast.makeText(getActivity(),"我是亚军",Toast.LENGTH_SHORT).show();            }        });        //返回视图        return vIEw;    }}
(三)、第三张碎片
package net.tp.xiangduibuju;import androID.os.Bundle;import androIDx.fragment.app.Fragment;import androID.vIEw.LayoutInflater;import androID.vIEw.VIEw;import androID.vIEw.VIEwGroup;import androID.Widget.button;import androID.Widget.Toast;public class ThirdFragment extends Fragment {    private button btnNextFragment;    private button btnRunner;    public ThirdFragment() {    }    /*     * @param inflater布局填充器     *@param container 容器     * @param saveInstanceState 保存实例状态     * @return     *     */    @OverrIDe    public voID onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);    }    @OverrIDe    public VIEw onCreateVIEw(LayoutInflater inflater, VIEwGroup container,                             Bundle savedInstanceState) {        // 获取碎片视图        VIEw vIEw = inflater.inflate(R.layout.fragment_third,container,false);        //通过资源标识符获取控件实例        btnNextFragment= vIEw.findVIEwByID(R.ID.btnNextFragmrnt);        btnRunner  = vIEw.findVIEwByID(R.ID.btnRunner);        //给按钮注册监听器        btnNextFragment.setonClickListener(new VIEw.OnClickListener() {            @OverrIDe            public voID onClick(VIEw vIEw) {                //跳转到第三个碎片                getFragmentManager().beginTransaction()                        .addToBackStack("next")                        .replace(R.ID.container,FragmentList.fragments.get(0))                        .commit();            }        });        btnRunner.setonClickListener(new VIEw.OnClickListener() {            @OverrIDe            public voID onClick(VIEw v) {                Toast.makeText(getActivity(),"我是季军",Toast.LENGTH_SHORT).show();            }        });        //返回视图        return vIEw;    }}
(四)、主界面

package net.tp.xiangduibuju;import androIDx.appcompat.app.AppCompatActivity;import androIDx.fragment.app.FragmentManager;import androID.os.Bundle;import androID.vIEw.GestureDetector;import androID.vIEw.MotionEvent;public class switch_fragment extends AppCompatActivity {    private GestureDetector detector;    @OverrIDe    protected voID onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        //利用布局资源文件设置用户 界面        setContentVIEw(R.layout.activity_switch_fragment);        //获取碎片管理器        FragmentManager fm=getSupportFragmentManager();        //创建三个碎片,添加到碎片列表        FragmentList.fragments.add(new FirstFragment());        FragmentList.fragments.add(new SecondFragment());        FragmentList.fragments.add(new ThirdFragment());        // 在主容器里添加第一个碎片        fm.beginTransaction().add(R.ID.container, FragmentList.fragments.get(0)).commit();        // 实例化手势侦测器        detector = new GestureDetector(new GestureDetector.OnGestureListener() {            @OverrIDe            public boolean onDown(MotionEvent motionEvent) {                return false;            }            @OverrIDe            public voID onShowPress(MotionEvent motionEvent) {            }            @OverrIDe            public boolean onSingleTapUp(MotionEvent motionEvent) {                return false;            }            @OverrIDe            public boolean onScroll(MotionEvent motionEvent, MotionEvent motionEvent1, float v, float v1) {                return false;            }            @OverrIDe            public voID onLongPress(MotionEvent motionEvent) {            }            @OverrIDe            public boolean onFling(MotionEvent e1, MotionEvent e2, float v, float v1) {                // 手势往左滑动10个像素,切换到下一个碎片                if (e1.getX() - e2.getX() > 10) {                    // 获取返回栈条目个数                    int count = getSupportFragmentManager().getBackStackEntryCount();                    // 获取碎片索引                    count = ++count % 3;                    // 切换碎片                        getSupportFragmentManager().beginTransaction()                                .addToBackStack("" +count)                                .replace(R.ID.container, FragmentList.fragments.get(count))                                .commit();                }                return true;            }        });    }    /**     * 将窗口的触摸事件交给收拾侦测器来处理     *     * @param event     * @return     */    @OverrIDe    public boolean ontouchEvent(MotionEvent event) {        return detector.ontouchEvent(event);    }}
七、启动应用,查看效果


总结

以上是内存溢出为你收集整理的切换碎片全部内容,希望文章能够帮你解决切换碎片所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1053855.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存