• android笔记


    想了解一下Android逆向,但又没有过Android的开发经验,所以从慕课网上找了一个视频,做了一点笔记,有点乱:

     

    Android项目结构

    几点说明:

    0.AndroidManifest.xml 是每个android程序中必须的文件。它位于整个项目的根目录,描述了package中暴露的组件(activities, services, 等等),他们各自的实现类,各种能被处理的数据和启动位置。 除了能声明程序中的Activities, ContentProviders, Services, 和Intent Receivers,还能指定permissions和instrumentation(安全控制和测试)

    1.界面布局文件一般在res(文件夹)下的layout(文件夹)下面的(xml文件)进行编辑 。

    2.xml文件与java源文件进行关联是通过下面方法实现的: 

    setContentView(R.layout.activity_main);//将布局的main_activity.xml文件引入到activity当中

    3.xml文件里面的数字、字符串一般都是写在values文件下的一个文件(相当于在values文件夹下的XXX.xml里起个  “别名”),xml只需用“@XXX/别名 ”引用。

    4.res文件夹下面的所有的资源都会对应在gen(文件夹)目录下的R(.java)文件中生成对应的资源id(唯一标识数据的)

    5.Activity是一个应用程序组件,提供用户与程序交互的界面,Activity的创建要求:

     继承Android的Activity类;

     重写方法(onCreate);

     设置显示布局;

     在AndroidManifest文件中,注册Activity。即:在AndroidManifest.xml文件的标签activity里面的android:name="包(Activity所在包)名.Activity的名字",见下图。

    6.Button与ImageButton区别:

       Button可以设置文本内容的按钮

       ImageButton不可设置内容的一个按钮,background以及src添加一个image,当前图片可以做一个有文本的内容的图片实现Button。

    7.所有控件都有一个onclick的事件,不仅仅是Button和ImageButton。

    监听事件实现的3种写法:(原理见名知意,下面分别有按视频抄写的“啰嗦”代码)

    (1.匿名内部类的实现

    public class MainActivity extends Activity{
        private Button loginButton;
        protected void onCreate(Bundle savedInstanceState){
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
        /*
         * 1.初始化当前所需要的控件,如歌初始化一个控件?
         * findViewById---返回的是一个View的对象,View是所有控件的父类
         * findViewByIdshi 如何查找到对应view的id? R.java里面的id类中会自动生成button1
         *
         * 2.设置Button的监听器,通过监听器实现我们点击Button要操作的事情
         */
        
           loginButton =(Button) findViewById(R.id.button1)
            /*
             * 1.监听事件通过第一种方法实现(匿名内部类)
             */
            loginButton.setOnClickListener(new OnClickListener(){ 
    
                public void onClick(View arg0){
                //在当前onClick方法中监听点击Button的动作
                System.out.printIn("我的Button被点击了");
                }
            });
            
        }
    }
    View Code

    (2.独立类的实现

    public class MainActivity extends Activity{
        private Button bt1;
        private Button bt2;
        protected void onCreate(Bundle savedInstanceState){
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            
            bt1=(Button)findViewById(R.id.button1);
            bt1=(Button)findViewById(R.id.button2);
            
            // bt1.setOnClickListener(new OnClickListener(){
                
                // public void onClick(View v){
                    
                // }
            // });
            
            /*
             *点击事件的外部类的写法和作用
             */
            bt1.setOnClickListener(new MyOnClickListener(){ 
            public void onClick(View v){
                //调用父类的onClick
                super.onClick(v);
                Toast.makeText(MainActivity.this,"bt1要执行的逻辑",1).show();
                }
            });    
            bt2.setOnClickListener(new MyOnClickListener(){ 
            public void onClick(View v){
                //调用父类的onClick
                super.onClick(v);
                Toast.makeText(MainActivity.this,"bt2要执行的逻辑",1).show();
                }
            });
        }
    }
    /*
     * OnClickListener是一个接口
     */
    class MyOnClickListener implements OnClickListener{
        public void onClick(View v){
             //让所有使用当前外部类的点击事件的按钮都要做出一个动作,改变button的透明度
             //Log.i("tag","父类的onclick事件");
             v.setAlpha(0.5f);
        }
    }
    View Code

    (3.实现接口的方式来实现

    public class MainActivity extends Activity implements OnClickListener{
        private Button bt1;
        private Button bt2;
        private ImageButton imgBt;
        protected void onCreate(Bundle savedInstanceState){
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            
            bt1=(Button)findViewById(R.id.button1);
            bt1=(Button)findViewById(R.id.button2);
            imgBt=(Button)findViewById(R.id.imageButton1);
            // bt1.setOnClickListener(new OnClickListener(){
                
                // public void onClick(View v){
                    
                // }
            // });
            
            /*
             *点击事件的外部类的写法和作用
             */
            bt1.setOnClickListener(new MyOnClickListener(){ 
            public void onClick(View v){
                //调用父类的onClick
                super.onClick(v);
                Toast.makeText(MainActivity.this,"bt1要执行的逻辑",1).show();
                }
            });    
            bt2.setOnClickListener(new MyOnClickListener(){ 
            public void onClick(View v){
                //调用父类的onClick
                super.onClick(v);
                Toast.makeText(MainActivity.this,"bt2要执行的逻辑",1).show();
                }
            });
        }
    }   /*
         * 3.通过实现一个接口的方式实现监听器
         */
         imgBt.setOnClickListener(this);
    /*
     * OnClickListener是一个接口
     */
    class MyOnClickListener implements OnClickListener{
        public void onClick(View v){
             //让所有使用当前外部类的点击事件的按钮都要做出一个动作,改变button的透明度
             //Log.i("tag","父类的onclick事件");
             v.setAlpha(0.5f);
             
        }
        public void onClick(View v){
            Log.i("tag","第三种方式实现");
        }
    }
    View Code
  • 相关阅读:
    微服务之初识微服务
    常见的认证机制及JSON WEB TOKEN
    深入理解缓存之缓存预热与淘汰策略
    深入理解缓存之缓存和数据库的一致性
    深入理解缓存之缓存存在的问题及应对措施
    深入理解缓存之常见的缓存算法
    计算机网络之HTTP、HTTPS、HTTP2
    计算机网络之TCP(三次握手、四次挥手等),UDP及DNS
    计算机网络之网络体系架构与IP
    深入理解MyBatis(四)--缓存
  • 原文地址:https://www.cnblogs.com/pursuitofacm/p/6734955.html
Copyright © 2020-2023  润新知