Android学习笔记_30_常用控件使用

【安卓自定义控件系列】安卓自定义控件之组合控件 在安卓开发中,谷歌已经为我们提供了许多原生控件,基本上能够满足我们日常的开发需求,但是某些项目中原生控件可能达不到产品所要求的各式各样的酷炫效果或功能效果,这个时候我们只能自己自定义控件来满足项目需求,我们知道自定义控件包括三种方式: 1继承控件,即继承谷歌提供的原生控件,在此基础上提供一些原生控件不具备的功能,如github上各种酷炫效果的开源组件基本上都是采用的这种方式. 2组合控件:即组 阅读详情

     一、状态栏通知(Notification):

   如果需要查看消息,可以拖动状态栏到屏幕下方即可查看消息。发送消息的代码如下:

   public void sendNotice(View v){
        int icon=android.R.drawable.stat_notify_chat;
        //第一个参数为图标,第二个参数为标题,第三个为通知时间
          Notification notification = new Notification(icon, "通知", System.currentTimeMillis());
        notification.defaults = Notification.DEFAULT_SOUND;//发出默认声音
         //打开通知时要启动的activity
        Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:15901681812"));
        PendingIntent pendingIntent = PendingIntent.getActivity(this, 1, intent, 0);
        notification.setLatestEventInfo(this, "新消息", "时间到,请拨打电话", pendingIntent);
        notification.flags = Notification.FLAG_AUTO_CANCEL;//自动取消
         //获取通知管理器
         NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
        manager.notify(11, notification);//第一个参数为自定义的通知唯一标识
   }

     二、对话框通知(Dialog Notification)

   当你的应用需要显示一个进度条或需要用户对信息进行确认时,可以使用对话框来完成。下面代码将打开一个如右图所示的对话框:

public void notifcation() {
        new AlertDialog.Builder(this)
                .setTitle("AlertDialog测试")
                .setCancelable(false)
                // 设置不能通过“后退”按钮关闭对话框
                .setMessage("AlertDialog学习?")
                .setPositiveButton("确认", new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialoginterface, int i) {
                        Uri uri = Uri.parse("http://www.itcast.cn/");// 打开链接
                        Intent intent = new Intent(Intent.ACTION_VIEW, uri);
                        startActivity(intent);
                    }
                })
                .setNegativeButton("取消", new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int id) {
                        dialog.cancel();
                    }
                }).show();// 显示对话框
    }

     三、创建带单选项列表的对话框 

//下面代码将打开一个如右上图所示的选项列表对话框:
final String[] items = {"java", ".net", "php"};
new AlertDialog.Builder(SenderNotificationActivity.this).setTitle("选择语言")
    .setItems(items, new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int item) {
                Toast.makeText(getApplicationContext(), items[item], 
        Toast.LENGTH_SHORT).show();
        }
    }).show();//显示对话框
//下面代码将打开一个如右下图所示的带单选框的列表对话框:
final String[] items = {"java", ".net", "php"};
new AlertDialog.Builder(SenderNotificationActivity.this).setTitle("选择语言")
.setSingleChoiceItems(items, 1, new DialogInterface.OnClickListener() {
     public void onClick(DialogInterface dialog, int item) {
            Toast.makeText(getApplicationContext(), items[item], 
        Toast.LENGTH_SHORT).show();
            dialog.cancel();
      }
}).show();//显示对话框
//setSingleChoiceItems()的第二个参数是设置默认选项,
选项索引从0开始,-1代表不选择任何选项。

 

     四、创建带多选项列表的对话框

final String[] items = {"java", ".net", "php"};
new AlertDialog.Builder(SenderNotificationActivity.this).setCancelable(false)
.setTitle("选择语言")
.setMultiChoiceItems(items, new boolean[]{false,true,false}, new DialogInterface.OnMultiChoiceClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which, boolean isChecked) {
        if(isChecked){
        Toast.makeText(getApplicationContext(), items[which], 
            Toast.LENGTH_SHORT).show();
        }
        }
    })
.setPositiveButton("确认",
    new DialogInterface.OnClickListener(){
    public void onClick(DialogInterface dialoginterface, int i){
        dialoginterface.dismiss();
     }
})
.show();//显示对话框

 

     五、进度条

   使用代码ProgressDialog.show(ProgressDialogActivity.this, "请稍等", "数据正在加载中...", true);创建并显示一个进度对话框。

  调用setProgressStyle()方法设置进度对话框风格。有两种风格:

       ProgressDialog.STYLE_SPINNER 旋体进度条风格 (为默认风格)

       ProgressDialog.STYLE_HORIZONTAL 横向进度条风格

<!--在布局xml文件中添加进度条代码:-->
<ProgressBar 
    android:layout_width="fill_parent" 
    android:layout_height="20px"
    style="?android:attr/progressBarStyleHorizontal"
    android:id="@+id/downloadbar"/> 

<!--在代码中操作进度条:
         ProgressBar.setMax(100);//设置最大刻度
         ProgressBar.setProgress(0);//设置进度条的当前刻度,如果进度条的最大刻度为100,当前刻度为50,进度条将进行到一半。
-->

 

 

public class ProgressDialogActivity extends Activity {
private ProgressDialog progressDialog;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.menu); 
        //开始一条专门处理耗时工作的线程
        new Thread(new Runnable(){
            @Override
            public void run() {
               try {
                   Thread.sleep(5*1000);//假设这项工作需要5秒才能完成
                      progressDialog.dismiss();//关闭进程对话框
                     //runOnUiThread(finishDialog);//要求运行在UI线程
           } catch (InterruptedException e) {}
            }
        }).start();        
        progressDialog = ProgressDialog.show(ProgressDialogActivity.this, "请稍等", "数据正在加载中...", true);
   }    
   private Runnable finishDialog = new Runnable() {
        @Override
        public void run() {           
            progressDialog.dismiss();
        }
   };
}

 

     六、单选框(RadioButton)

要完成单选框显示,我们需要使用到RadioGroup和RadioButton(单选框),RadioGroup用于对单选框进行分组,相同组内的单选框只有一个单选框能被选中。(例子代码请见下方备注栏)
 RadioGroup.check(R.id.dotNet);将id名为dotNet的单选框设置成选中状态。
(RadioButton) findViewById(radioGroup.getCheckedRadioButtonId());//获取被选中的单选框。
RadioButton.getText();//获取单选框的值
调用setOnCheckedChangeListener()方法,处理单选框被选择事件,把RadioGroup.OnCheckedChangeListener实例作为参数传入

  界面设计:

界面设计:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<RadioGroup android:id="@+id/radioGroup"
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content">
<RadioButton android:id="@+id/java"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="java" />
    <RadioButton android:id="@+id/dotNet"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="dotNet" />
    <RadioButton android:id="@+id/php"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="PHP" />
</RadioGroup>
</LinearLayout>

  处理程序

public void onCreate(Bundle savedInstanceState) {
        RadioGroup radioGroup = (RadioGroup) findViewById(R.id.radioGroup); 
        radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            public void onCheckedChanged(RadioGroup group, int checkedId) {
                RadioButton radioButton = (RadioButton) findViewById(checkedId);
                Log.i(TAG, String.valueOf(radioButton.getText()));
            }
        });
}

 

     七、多选框(CheckBox)

  每个多选框都是独立的,可以通过迭代所有多选框,然后根据其状态是否被选中再获取其值。

  CheckBox.setChecked(true);//设置成选中状态。
  CheckBox.getText();//获取多选框的值
  调用setOnCheckedChangeListener()方法,处理多选框被选择事件,把CompoundButton.OnCheckedChangeListener实例作为参数传入。

 界面设计:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="wrap_content"
  android:layout_height="fill_parent">
  <CheckBox android:id="@+id/checkboxjava"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="java" />
  <CheckBox android:id="@+id/checkboxdotNet"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="dotNet" />
  <CheckBox android:id="@+id/checkboxphp"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="PHP" />
    
    <Button android:id="@+id/checkboxButton"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="获取值" />
</LinearLayout>

代码处理

public class CheckBoxActivity extends Activity {
    private static final String TAG = "CheckBoxActivity";
    private List<CheckBox> checkboxs = new ArrayList<CheckBox>();

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        checkboxs.add((CheckBox) findViewById(R.id.checkboxdotNet));
        checkboxs.add((CheckBox) findViewById(R.id.checkboxjava));
        checkboxs.add((CheckBox) findViewById(R.id.checkboxphp));
        checkboxs.get(1).setChecked(true);// 设置成选中状态
        for (CheckBox box : checkboxs) {
            box.setOnCheckedChangeListener(listener);
        }
        Button button = (Button) findViewById(R.id.checkboxButton);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                List<String> values = new ArrayList<String>();
                for (CheckBox box : checkboxs) {
                    if (box.isChecked()) {
                        values.add(box.getText().toString());
                    }
                }
                Toast.makeText(CheckBoxActivity.this, values.toString(), 1).show();
            }
        });
    }

    private CompoundButton.OnCheckedChangeListener listener = new CompoundButton.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {
            CheckBox checkBox = (CheckBox) buttonView;
            Log.i(TAG,"isChecked=" + isChecked + ",value=" + checkBox.getText());// 输出单选框的值
        }
    };
}

 

     八、下拉列表框(Spinner)

  Spinner.getItemAtPosition(Spinner.getSelectedItemPosition());//获取下拉列表框的值,
      //调用setOnItemSelectedListener()方法,处理下拉列表框被选择事件,把AdapterView.OnItemSelectedListener实例作为参数传入。

  1、Spinner的界面设计:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content">
  <Spinner android:id="@+id/spinner"
      android:layout_height="wrap_content"
      android:layout_width="fill_parent"/>
</LinearLayout>

代码处理:

public class SpinnerActivity extends Activity {
    private static final String TAG = "SpinnerActivity";

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.spinner);
        // 第二个参数为下拉列表框每一项的界面样式,该界面样式由Android系统提供,当然您也可以自定义
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_spinner_item);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        adapter.add("java");
        adapter.add("dotNet");
        adapter.add("php");
        Spinner spinner = (Spinner) findViewById(R.id.spinner);
        spinner.setAdapter(adapter);
        spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> adapterView, View view,
                    int position, long id) {
                Spinner spinner = (Spinner) adapterView;
                String itemContent = (String) adapterView.getItemAtPosition(position);
                Log.i(TAG, itemContent+" : "+spinner);
            }

            @Override
            public void onNothingSelected(AdapterView<?> view) {
                Log.i(TAG, view.getClass().getName());
            }
        });
    }
}

  很多时候显示在下拉列表框的值并不是希望得到的值,如果要做一个联系人下拉列表框,列表框列出的是联系人的姓名,因为姓名有可能相同,所以我们希望得到的值应该为该联系人的id,要实现这种需求我们需要自定义Adapter,当然自定义Adapter需要我们编写一小段代码,如果我们不想编写Adapter,又能实现我们的需求,那是最好不过的了。通过观察ArrayAdapter中getView(int position, View convertView, ViewGroup parent)的内部代码发现,如果为ArrayAdapter指定的实际泛型参数类型没有实现CharSequence(字符串)接口,将会调用该类型对象的toString()向下拉列表框输出显示值。利用这个特点我们可以重写javaBean的toString()向下拉列表框提供显示值。

   2、通过有没有实现CharSequence接口,来改变下拉列表框的显示值

public class SpinnerActivity extends Activity {
    private static final String TAG = "SpinnerActivity";
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.spinner); 
        ArrayAdapter<Person> adapter = new ArrayAdapter<Person>(this, android.R.layout.simple_spinner_item);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        adapter.add(new Person(12, "李明"));
        adapter.add(new Person(100, "李明"));
        adapter.add(new Person(62, "张天"));
        Spinner spinner = (Spinner) findViewById(R.id.spinner);
        spinner.setAdapter(adapter);
        spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
    @Override
    public void onItemSelected(AdapterView<?> adapterView, View view, int position, long id) {
        Spinner spinner = (Spinner)adapterView;
        Person person = (Person)adapterView.getItemAtPosition(position);
    }
    @Override
    public void onNothingSelected(AdapterView<?> view) {
        Log.i(TAG,  view.getClass().getName());
    }
        });
    }
}

Person.java

Person.java:
public class Person {
    private Integer id;
    private String name;
    
    public Person(Integer id, String name) {
        this.id = id;
        this.name = name;
    }
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    @Override
    public String toString() {
        return name;
    }
}

  3、自定义下拉列表框样式:

    3.1下拉列表框每一项的界面样式:stylespinner.xml

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
   android:id="@+id/contentTextView"
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:background="#F4FDFF"
    />

    3.2代码处理

public class SpinnerActivity extends Activity {
    private static final String TAG = "SpinnerActivity";
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.spinner); 
         //第二个参数为layout文件在R文件的id,第三个参数为TextView在layout文件的id
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.stylespinner, R.id.contentTextView);
        adapter.add("java");
        adapter.add("dotNet");
        adapter.add("php");
        Spinner spinner = (Spinner) findViewById(R.id.spinner);
        spinner.setAdapter(adapter);
        spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
    @Override
    public void onItemSelected(AdapterView<?> adapterView, View view, int position, long id) {
        Spinner spinner = (Spinner)adapterView;
        String itemContent = (String)adapterView.getItemAtPosition(position);
    }
    @Override
    public void onNothingSelected(AdapterView<?> view) {
        Log.i(TAG,  view.getClass().getName());
    }
        });
    }
}

 

     九、拖动条(SeekBar)

   SeekBar.getProgress()获取拖动条当前值

  调用setOnSeekBarChangeListener()方法,处理拖动条值变化事件,把SeekBar.OnSeekBarChangeListener实例作为参数传入。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <SeekBar
        android:id="@+id/seekBar"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />

    <Button
        android:id="@+id/seekBarButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="获取值" />

</LinearLayout>
public class MainActivity extends Activity {
    private SeekBar seekBar;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.seekbar);
        seekBar = (SeekBar) findViewById(R.id.seekBar);
        seekBar.setMax(100);// 设置最大刻度
        seekBar.setProgress(30);// 设置当前刻度
        seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
            @Override
            public void onProgressChanged(SeekBar seekBar, int progress,
                    boolean fromTouch) {
                Log.v("onProgressChanged()", String.valueOf(progress) + ", "
                        + String.valueOf(fromTouch));
            }

            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {// 开始拖动
                Log.v("onStartTrackingTouch()",
                        String.valueOf(seekBar.getProgress()));
            }

            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {// 结束拖动
                Log.v("onStopTrackingTouch()",
                        String.valueOf(seekBar.getProgress()));
            }
        });
        
        Button button = (Button) this.findViewById(R.id.seekBarButton);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(MainActivity.this,
                        String.valueOf(seekBar.getProgress()), 1).show();
            }
        });
    }
}

     十、菜单(Menu)

   1、重写Activity的onCreateOptionsMenu(Menu menu)方法,该方法用于创建选项菜单,在用户按下手机的“Menu”按钮时就会显示创建好的菜单,在onCreateOptionsMenu(Menu menu)方法内部可以调用Menu.add()方法实现菜单的添加。

  2、重写Activity的onMenuItemSelected()方法,该方法用于处理菜单被选择事件。通过手机上提供的“MENU”按钮可以打开菜单,如果希望通过代码打开菜单,可以调用Activity的openOptionsMenu()方法。

public class MenuActivity extends Activity {
private static final String TAG = "MenuActivity";
private static final int MENU_ADD = Menu.FIRST;
private static final int MENU_UPDATE = Menu.FIRST + 1;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.menu); 
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
    menu.add(Menu.NONE, MENU_ADD, Menu.NONE, "添加");  
    menu.add(Menu.NONE, MENU_UPDATE, Menu.NONE, "更新");
    return super.onCreateOptionsMenu(menu);
    }
    @Override
    public boolean onMenuItemSelected(int featureId, MenuItem item) {
    switch (item.getItemId()) {
      case MENU_ADD:
           Log.i(TAG, "add was selected");
           return true;
      case MENU_UPDATE:
           Log.i(TAG, "update was selected");
           return true;
      default:
              return super.onMenuItemSelected(featureId, item);
      }
    }    
}

 

     十一、自动完成文本框(AutoCompleteTextView)

   AutoCompleteTextView和EditText组件类似,都可以输入文本。但AutoCompleteTextView组件可以和一个字符串数组或List对

绑定,当用户输入两个及以上字符时,系统将在AutoCompleteTextView组件下方列出字符串数组中所有以输入字符开头的字符串,这一点和www.google.com的搜索框非常相似,当输入某一个要查找的字符串时,google搜索框就会列出以这个字符串开头的最热门的搜索字符串列表。

<AutoCompleteTextView

   android:layout_width="fill_parent“  android:layout_height="wrap_content“

  <!-- completionThreshold 指定至少输入几个字符后才会出现自动提示功能-->
   android:completionThreshold="1“ 

   android:id="@+id/name" />
public void onCreate(Bundle savedInstanceState) {  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);
  String[] names = {"abcd", "wers", "123a", "123s" , "sfsf", "sss", "abc", "acc"};
  AutoCompleteTextView nameText = (AutoCompleteTextView)this.findViewById(R.id.name);
  ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line, names);
  nameText.setAdapter(adapter);

}

  除了AutoCompleteTextView控件外,我们还可以使用MultiAutoCompleteTextView控件来完成连续输入的功能。也就是说,当输入完一个字符串后,在该字符串后面输入一个逗号(,),在逗号前后可以有任意多个空格,然后再输入一个字符串,仍然会显示自动提示列表。

  使用MultiAutoCompleteTextView时,需要为它的setTokenizer方法指定MultiAutoCompleteTextView.CommaTokenizer类对象实例,该对象表示采用逗号作为输入多个字符串的分隔符。

< MultiAutoCompleteTextView

   android:layout_width="fill_parent“  android:layout_height="wrap_content“

  <!– completionThreshold 指定至少输入几个字符后才会出现自动提示功能à

   android:completionThreshold="1“ 

   android:id="@+id/name" />

 

public void onCreate(Bundle savedInstanceState) {  super.onCreate(savedInstanceState);

  setContentView(R.layout.main);

     String[] names = {"abcd", "wers", "123a", "123s" , "sfsf", "sss", "abc", "acc"};
     MultiAutoCompleteTextView nameText = (MultiAutoCompleteTextView)this.findViewById(R.id.name);

     ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line,    names);

     nameText.setAdapter(adapter);

     nameText.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer());}

 

Android Studio 常用控件和常用布局的介绍 一、常用控件: 文本控件:– TextView – EditText 按钮控件: – Button – ImageButton 状态开关按钮:– ToggleButton 单选与复选按钮:– CheckBox和RadioButton 图片控件:– ImageView 时钟控件:– AnalogClock – DigitalClock 日期与时间选择控件: – DatePicker – TimePicker 1.插入图片 <ImageView android:layout_... 阅读详情

相关推荐

安卓常用控件--单选按钮和复选框

-将背景图片拷贝到drawable 4、主布局资源文件 主布局资源文件activity.xml 查看完整代码 查看预览效果 5、主界面实现功能 主界面类MainActivity 声明变量 通过资源标识符获取控件实例 编写确定按钮单击事件处理方法 编写清除按钮事件处理方法 编写退出按钮事件处理方法 查看完整代码 6、启动应用,查看效果 输入和设置基本信息 单击【确定】按钮 单击【清除】按钮

IKZWJ0516的博客 2703

android icon库,Android 自带图标库 android.R.drawable

在xml文件中调用。android:title="@string/secure_connect"android:orderInCategory="100"android:icon="@android:drawable/ic_menu_search"android:drawableRight="@android:drawable/arrow_down_float"/>程序中调用。setIcon...

weixin_34278722的博客 2805

2020年安卓学习笔记目录

一、讲课笔记 安卓学习笔记01:安装集成开发环境Android Studio 安卓学习笔记02:测试安卓开发环境 安卓学习笔记03:安卓应用目录结构 安卓学习笔记04:安卓平台架构 安卓学习笔记05:Activity概述 安卓学习笔记06:Activity生命周期与启动模式 安卓学习笔记07:事件处理、窗口跳转与传递数据 安卓学习笔记08:线性布局 安卓学习笔记09:帧式布局 安卓学习笔记10:相对布局 安卓学习笔记11:网格布局 安卓学习笔记12:安卓按键事件 安卓学习笔记13:安卓触摸事件 安卓学习笔

howard2005的专栏 3660

Android点击通知栏信息后返回正在运行的程序,而不是一个新Activity

From http://blog.sina.com.cn/s/blog_80a855370101hqr5.html 很多网上关于 通知栏的例子都是打开一个新的Activity,代码也很多。 根据那些代码如下     public void shownotification(String tab)     {         NotificationManager barman

yuxiaohui78的专栏 2670

智能鱼塘安卓界面:在Android Studio API 30上的应用

本文还有配套的精品资源,点击获取 简介:本项目致力于提供一个实践性的安卓开发案例,通过“智能鱼塘安卓界面”,学习者和开发者可以体验到在Android Studio API 30环境下创建直观、友好的用户交互界面。项目展示了UI设计、功能实现,以及如何利用最新API来提升应用性能和用户数据安全。此外,还强调了团队合作在开发过程中的重要性,让学习者和开发者通过实践巩固理论知识并...

weixin_36184718的博客 941

FileZilla Server 1.2.0 TLS证书过期问题

FileZilla Server TLS证书过期后重新生成

Wigle的备忘录 7527

android通知悬浮通知_Android通知直接回覆

android通知悬浮通知Android Notification Direct Reply action lets us reply to the notification message, it’s very popular with chat notifications such as Whatsapp and Facebook messenger notification messages...

从零开始的教程世界 1447

【STM32】CubeMx系列教程之移植FreeRTOS

本文详细介绍了在STM32F429上通过CubeMX工具移植FreeRTOS的方法。主要内容包括:1)配置系统时钟源,将TIM1替换SysTick作为时钟基准;2)FreeRTOS的创建与配置,包括任务创建、堆栈大小设置等;3)关键配置参数说明,如堆大小建议设为RAM的50%-70%;4)常用函数如堆栈监控、任务挂起/恢复等。文章提供了从基础配置到深入优化的完整移植指南,适合STM32开发者参考使用。

JackieJin123的博客 786

Android开发 常用基本控件

常用控件一、TextView(文本框)一、常用属性二、实例1、带阴影的TextView2、带边框的TextView1)实现原理:2)ShapeDrawable的资源文件编写矩形边框的Drawable:编写圆角矩形边框的Drawable:将TextView的blackground属性设置成上面这两个Drawable:3、带图片(drawableXxx)的TextView基本用法一些问题:4、使用autoLink属性识别链接类型二、EditText(输入框)一、常用属性EditText 输入框EditText

拾玖的博客 8114

DFIG风电场经LCC-HVDC外送系统SIMULINK建模与仿真

本文基于MATLAB/Simulink平台构建了DFIG风电场经LCC-HVDC外送系统的仿真模型。系统采用1000MW聚合DFIG模型与双极12脉动LCC-HVDC连接,详细阐述了参数设计、控制策略及接口协调方法。重点解决了风电场无功能力不足、功率波动影响换相等关键技术问题,为大规模风电基地外送提供了仿真研究框架。模型整合了官方DFIG和HVDC详细模块,通过参数缩放和控制系统优化,实现了完整系统的动态仿真分析。

huanghm88的专栏 120

清洁机器人之屏幕(中,大LCD)方案--ITE 联阳986x系列 soc显控芯片介绍

清洁机器人之屏幕(中,大LCD)方案--ITE 联阳986x系列 soc显控芯片介绍

AIoT深度探索者 | 嵌入式系统架构师 深耕物联网(IoT)与人工智能(AI)融合技术,聚焦​​边缘计算、图像开发、低功耗通信协议​​,致力于智能硬件,关注我获取最新技术文章信息与海量资源~ 2666

Android 常用的控件总结

Android 中一些常用的 UI 控件有: TextView(文本框)、 EditView(输入框)、 Button(按钮)、 RadioButton(单选按钮)、 ImageView(图像视图)、 ToggleButton(开关按钮) 等等 1、TextView(文本框) TextView 中的一些属性说明: layout 布局代码如下: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmln...

低调,谦虚,自律,反思,成长! 5809

CODESYS数据处理合集(高低字节/ 字/浮点数/位)

VAR_INPUT//字节0//字节1END_VARVAREND_VAR。

RXXW_Dor的博客 354

安卓常用控件(上)

需要打开res\values\themes.xml文件修改< style name=“Theme.MyApplication” parent=“Theme.MaterialComponents.DayNight.DarkActionBar”>为 < style name=“Theme.MyApplication” parent=“Theme.MaterialComponents.DayNight.DarkActionBar.Bridge”>button是程序用于和用户进行交互的一个重要控件。

君子慎独,不欺暗室。卑以自牧,含章可贞。 1623

【知识分享】什么是同轴传输线结构?

同轴传输线的几何形状由中心导体组,嵌在介电材料(Dielectric)中,并且,被连续的外导体所包围,也被称为屏蔽(Shield)。内外导体有相同的几何中心轴,因此得名同轴(Coaxial)。

一只豌豆象的博客 2372

基于Vision Transformer的鸟类图像分类(200个类别)完整代码+数据

基于Vision Transformer的鸟类图像分类(200个类别)完整代码+数据

1727

Android studio编程常用控件

常用控件: TextView :用于显示文字 EditText :输入框控件 Button 按钮控件 ImageView 图片显示控件 RadioButton 单选按钮控件 CheckBox 复选框控件 相对布局的讲解:1、创建一个相对布局根据父容器定位 1)在相对布局中得控件有一个非常重要属性,给每个控件设置一个唯一的标识 id layout centerlnParent 用于设置组件在相对容器中的中央位置 gravity 容器的对齐方式 根据兄弟组件定位 magin 边距 padding ...

qq_56127077的博客 5513

RK3568 RGA硬件加速详解:图像缩放、旋转、格式转换10倍提速

RGA(Raster Graphics Acceleration)是瑞芯微(Rockchip)芯片系列中的 2D 图形加速引擎,专门用于处理像素级的图像操作。它通过硬件实现常见的图像处理算法,解放 CPU,降低功耗。RGA 是 RK3568 平台上一颗强大的 2D 图形加速引擎,能够:✅10-20 倍性能提升:大幅减少图像处理时间✅降低 CPU 占用:释放 CPU 资源给其他任务✅丰富的功能:缩放、旋转、裁剪、格式转换一应俱全✅易于集成:librga 提供简洁的 C API。

小灰灰的博客 1696

Android常用组件

Android控件的使用,TextView,EditText,Button,ImageView,Radio控件,CheckBox控件的使用,6个案例

. 1248

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Android中的常用控件

本文介绍了Android中的常用控件的使用,分别为:TextView、EditView、Button、RadioButton、ImageView

Bee_Darker的博客 984

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Android中常用控件

Android中常用控件 TextView <TextView android:id="@+id/textview" android:textSize="30dp" android:textColor="@color/colorAccent" android:text="TextView" android:gra...

weixin_43328054的博客 394

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

如何让安卓(Android)子控件超出父控件的范围显示

下面我们来看一下关于安卓(Android)子控件超出父控件的范围显示出来的方法,希望这篇文章能够帮助到各位安卓(Android)的开发者们,有碰到此问题的朋友可以进来看看哦。 废话不多说,直接上代码: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14

戴眼镜的小姑娘 9079

Android常用控件

Android常用控件 首先我们可以分为几类常用控件: 文本类控件: TextView 负责展示文本,非编辑 EditText 可编辑文本控件 按钮类控件: Button 按钮 RadioButton与RadioGroup 单选按钮 CheckBox 复选按钮 图片控件: ImageView 负责显示图片 文本类控件TestView &lt;TextVi...

qq_38844897的博客 269

安卓常用控件(下)

在当前界面弹出一个对话框,这个对话框是置顶于所有界面元素之上的,能够屏蔽其他控件的交互能力,因此AlertDialog一般用于提示一些非常重要的内容或者警告信息。ImageView是用于在界面上展示图片的一个控件,它可以让我们的程序界面变得更加丰富多彩。ProgressBar用于在界面上显示一个进度条,表示我们的程序正在加载一些数据。

君子慎独,不欺暗室。卑以自牧,含章可贞。 642

Android快速入门之常用控件的使用

Android中提供了大量的UI组件,合理的使用这些组件可以轻松的写出不错的界面,这些是Android学习的基础。TextView与EditText、Button、RadioButton、CheckBox和ToggleButton、ProgressBar、SeekBar和RatingBar。

龙源IT 的博客 1652
上一篇: Android学习笔记_29_样式和主题
下一篇: Android学习笔记_31_通过后台代码生成View对象以及动态加载XML布局文件到LinearLayout
乐由心起
博客等级 码龄16年 61粉丝 295原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值