zoukankan      html  css  js  c++  java
  • Android学习(二)

    学号 20189214 《Android程序设计》第七周学习总结

    教材学习内容总结

    监听

    设置点击监听的5种方式

    方法1:直接用匿名内部类

    这是最常用的一种方法,直接setXXXListener后,重写里面的方法即可。但通常是临时使用一次,复用性不高。

    public class MainActivity extends Activity {    
        private Button btnshow;    
            
        @Override    
        protected void onCreate(Bundle savedInstanceState) {    
            super.onCreate(savedInstanceState);    
            setContentView(R.layout.activity_main);    
            btnshow = (Button) findViewById(R.id.btnshow);    
            btnshow.setOnClickListener(new OnClickListener() {    
                //重写点击事件的处理方法onClick()    
                @Override    
                public void onClick(View v) {    
                    //显示Toast信息    
                    Toast.makeText(getApplicationContext(), "你点击了按钮", Toast.LENGTH_SHORT).show();    
                }    
            });    
        }        
    } 
    

    方法2:使用内部类

    可以在该类中进行复用,可直接访问外部类的所有界面组件。

    public class MainActivity extends Activity {    
        private Button btnshow;    
        @Override    
        protected void onCreate(Bundle savedInstanceState) {    
            super.onCreate(savedInstanceState);    
            setContentView(R.layout.activity_main);    
            btnshow = (Button) findViewById(R.id.btnshow);    
            //直接new一个内部类对象作为参数    
            btnshow.setOnClickListener(new BtnClickListener());    
        }     
        //定义一个内部类,实现View.OnClickListener接口,并重写onClick()方法    
        class BtnClickListener implements View.OnClickListener    
        {    
            @Override    
            public void onClick(View v) {    
                Toast.makeText(getApplicationContext(), "按钮被点击了", Toast.LENGTH_SHORT).show();   
            }    
        }    
    

    另外创建一个处理事件的Java文件,这种形式用的比较少,因为外部类不能直接访问用户界面类中的组件,要通过构造方法将组件传入使用。

    MyClick.java

    public class MyClick implements OnClickListener {    
        private TextView textshow;    
        //把文本框作为参数传入    
        public MyClick(TextView txt)    
        {    
            textshow = txt;    
        }    
        @Override    
        public void onClick(View v) {    
            //点击后设置文本框显示的文字    
            textshow.setText("点击了按钮!");    
        }    
    }
    

    MainActivity.java

    public class MainActivity extends Activity {    
        private Button btnshow;    
        private TextView txtshow;    
        @Override    
        protected void onCreate(Bundle savedInstanceState) {    
            super.onCreate(savedInstanceState);    
            setContentView(R.layout.activity_main);    
            btnshow = (Button) findViewById(R.id.btnshow);    
            txtshow = (TextView) findViewById(R.id.textshow);    
            //直接new一个外部类,并把TextView作为参数传入    
            btnshow.setOnClickListener(new MyClick(txtshow));    
        }         
    } 
    

    方法4:直接使用Activity作为事件监听器

    让Activity类实现XxxListener事件监听接口,在Activity中定义重写对应的事件处理器方法,这种方法用的比较少。

    //让Activity方法实现OnClickListener接口    
    public class MainActivity extends Activity implements OnClickListener{    
        private Button btnshow;    
        @Override    
        protected void onCreate(Bundle savedInstanceState) {    
            super.onCreate(savedInstanceState);    
            setContentView(R.layout.activity_main);    
                
            btnshow = (Button) findViewById(R.id.btnshow);    
            //直接写个this    
            btnshow.setOnClickListener(this);    
        }    
        //重写接口中的抽象方法    
        @Override    
        public void onClick(View v) {    
            Toast.makeText(getApplicationContext(), "点击了按钮", Toast.LENGTH_SHORT).show();         
        }         
    }  
    

    方法5:直接绑定到标签

    在xml布局文件中对应得Activity中定义一个事件处理方法。

    MainAcivity.java:

    public class MainActivity extends Activity {    
        @Override    
        protected void onCreate(Bundle savedInstanceState) {    
            super.onCreate(savedInstanceState);    
            setContentView(R.layout.activity_main);     
        }    
        //自定义一个方法,传入一个view组件作为参数    
        public void myclick(View source)    
        {    
            Toast.makeText(getApplicationContext(), "按钮被点击了", Toast.LENGTH_SHORT).show();    
        }    
    } 
    

    main.xml布局文件:

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    
        xmlns:tools="http://schemas.android.com/tools"    
        android:id="@+id/LinearLayout1"    
        android:layout_width="match_parent"    
        android:layout_height="match_parent"    
        android:orientation="vertical" >    
        <Button     
            android:layout_width="wrap_content"    
            android:layout_height="wrap_content"    
            android:text="按钮"    
            android:onClick="myclick"/>    
     </LinearLayout> 
    

    菜单

    菜单是Android应用中非常重要且常见的组成部分,主要可以分为三类:选项菜单、上下文菜单/上下文操作模式以及弹出菜单。
    它们的主要区别如下:

    1. 选项菜单是一个应用的主菜单项,用于放置对应用产生全局影响的操作,如搜索/设置。
    2. 上下文菜单是用户长按某一元素时出现的浮动菜单。它提供的操作将影响所选内容,主要应用于列表中的每一项元素(如长按列表项弹出删除对话框)。上下文操作模式将在屏幕顶部栏(菜单栏)显示影响所选内容的操作选项,并允许用户选择多项,一般用于对列表类型的数据进行批量操作。
    3. 弹出菜单以垂直列表形式显示一系列操作选项,一般由某一控件触发,弹出菜单将显示在对应控件的上方或下方。它适用于提供与特定内容相关的大量操作。

    定义方式

    • 使用XML可以获得更清晰的菜单结构
    • 将菜单内容与应用的逻辑代码分离
    • 可以使用应用资源框架,为不同的平台版本、屏幕尺寸创建最合适的菜单(如对drawable、string等系统资源的使用)

    重要元素

    • 是菜单项的容器。元素必须是该文件的根节点,并且能够包含一个或多个元素。
    • 是菜单项,用于定义MenuItem,可以嵌套元素,以便创建子菜单。
    • 元素的不可见容器(可选)。可以使用它对菜单项进行分组,使一组菜单项共享可用性和可见性等属性。

    菜单分类

    • 常驻菜单(always,ifRoom)
    • 溢出菜单(ifRoom,never)
    • 显示文字不显示图标(withText)

    关键代码

    //获取MenuInflater
    MenuInflater inflater=getMenuInflater();
    //加载Menu资源
    inflater.inflate(R.menu.option_menu_normal,menu);
    

    片段

    片段生命周期

    创建片段

    要想创建片段,必须创建 Fragment 的子类(或已有其子类)。Fragment 类的代码与 Activity 非常相似。它包含与 Activity 类似的回调方法,如 onCreate()、onStart()、onPause() 和 onStop()。

    添加界面

      @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        return inflater.inflate(R.layout.fragment_next, container, false);
    }
    

    出发一个新的事件作为对片段事件的响应,并让活动来处理它。
    向 Activity 添加片段

    1. 在 Activity 的布局文件内声明片段
    2. 通过编程方式将片段添加到某个现有 ViewGroup

    片段管理

    FragmentTransaction类提供了方法来添加、删除和替换片段。当完成操作,调用FragmentTransaction.commit()方法来提交修改。有add、remove、replace方法。

    与 Activity 通信

    View listView = getActivity().findViewById(R.id.list);
    ExampleFragment fragment = (ExampleFragment) getFragmentManager().findFragmentById(R.id.example_fragment);
    

    viewPager

    viewPager在使用的过程中,最重要的是setOnPageChangeListener。一般有两个操作,一个用于手指滑动翻页,一个是直接setCurrentItem。

    代码调试中的问题和解决过程

    • 问题1:使用ViewPage与fragement来实现滑动效果
    • 问题1解决方案:
      1. extend类FragmentPagerAdapter填充ViewPage
      2. 在listener中调用ViewPage.setCurrentItem()方法实现跳转。

    代码托管

    上周考试错题总结

    问题1:

    学习进度条

    代码行数(新增/累积) 博客量(新增/累积) 学习时间(新增/累积) 重要成长
    目标 5000行 30篇 400小时
    第一周 150/200 2/2 20/20
    第二周 200/400 1/3 20/40
    第三周 100/500 1/4 10/50
    第四周 200/700 1/5 15/65
    第五周 1486/2186 1/6 15/80
    第六周 1400/3586 1/7 18/98
    第七周 1400/5000 1/7 18/116
    • 计划学习时间:16小时

    • 实际学习时间:18小时

    参考资料

  • 相关阅读:
    PAIRING WORKFLOW MANAGER 1.0 WITH SHAREPOINT 2013
    Education resources from Microsoft
    upgrade to sql server 2012
    ULSViewer sharepoint 2013 log viewer
    Top 10 Most Valuable Microsoft SharePoint 2010 Books
    讨论 Setsockopt选项
    使用 Alchemy 技术编译 C 语言程序为 Flex 可调用的 SWC
    Nagle's algorithm
    Nagle算法 TCP_NODELAY和TCP_CORK
    Design issues Sending small data segments over TCP with Winsock
  • 原文地址:https://www.cnblogs.com/Shambryce/p/10706805.html
Copyright © 2011-2022 走看看