• 安卓期中汇总回顾


    布局

    线性布局 LinearLayout

    通过设置属性android:orientation控制方向

    属性值垂直——vertical

    属性值水平——horizontal

    默认为水平方向

    1. 1. <LinearLayout
    2. 2. android:layout_width="wrap_content"
    3. 3. android:orientation="vertical"
    4. 4. android:layout_height="wrap_content">
    5. 5.
    6. 6. </LinearLayout>

    相对布局 RelativeLayout

     

    1. 1. <RelativeLayout
    2. 2. android:layout_width="match_parent"
    3. 3. android:layout_height="match_parent">
    4. 4. </RelativeLayout>

    组件

    TextView

    1. 1. private Textview textview;
    2. 2.
    3. 3. protected void onCreate(Bundle savedInstanceState) (){
    4. 4.
    5. 5. TextView textView = (TextView)findViewById(R.id.textView);
    6. 6. //设置文本
    7. 7. String text = textView.getText().toString();
    8. 8.
    9. 9. //得到文本
    10. 10. textView.setText("XXXX");
    11. 11.
    12. 12.
    13. 13. }
    1. 1. //背景颜色
    2. 2. android:background="@color/colorAccent"
    3. 3.
    4. 4. //文本颜色
    5. 5. android:textColor="@color/red"
    6. 6.
    7. 7. //文本大小
    8. 8. android:textSize="@color/red"
    9. 9.
    10. 10. <TextView
    11. 11. android:layout_width="wrap_content"
    12. 12. android:layout_height="wrap_content"
    13. 13. android:id="@id+/textView"
    14. 14. android:textColor="@android:color/holo_blue_dark"
    15. 15. android:text="@string/hello_world" />

    图像视图控件(ImageView)

    图像放drawable文件夹

    1. 1. <ImageView
    2. 2. android:layout_width="wrap_content"
    3. 3. android:layout_height="wrap_content"
    4. 4. android:src="@mipmap/ic_launcher"/>

    输入框控件(EditText

    //用户名输入框

    private EditText usernameEditText;

    usernameEditText = (EditText) findViewById(R.id.username);

    //设置文本

    usernameEditText.setText(username);

    //得到文本

    usernameEditText.getText().toString();

    1. 1. <EditText
    2. 2. android:id="@+id/password"
    3. 3. android:layout_width="match_parent"
    4. 4. android:layout_height="wrap_content"
    5. 5. android:drawableLeft="@drawable/password"
    6. 6. android:hint="请输入密码"
    7. 7. android:textColor="@color/white"
    8. 8. android:textColorHint="@color/white"
    9. 9. android:layout_marginLeft="50dp"
    10. 10. android:layout_marginRight="50dp"
    11. 11. android:layout_marginTop="5dp"
    12. 12. />

    多项选择框控件(CheckBox)

    //记住密码

    Checkbox private CheckBox rememberCheckbox;

    rememberCheckbox = (CheckBox) findViewById(R.id.rememberPasswordCheckbox);

    //把记住密码设置为勾选或取消状态

    rememberCheckbox.setChecked(true);

    1. 1. //设置记住密码控件勾选事件的监听器
    2. 2. rememberCheckbox.setOnCheckedChangeListener(new
    3. CompoundButton.OnCheckedChangeListener() {
    4. 3. @Override
    5. 4. public void onCheckedChanged(CompoundButton buttonView, boolean
    6. isChecked) {
    7. 5. //一旦记住密码控件勾选状态发生改变,就会执行这里面的代码
    8. 6. if (isChecked == false){
    9. 7. editor.putString("username","");
    10. 8. editor.putString("password","");
    11. 9. }
    12. 10. editor.putBoolean("isRemember",isChecked);
    13. 11. editor.commit();
    14. 12. }
    15. 13. });
    16. 14.
    17. 15.
    18. 16.
    19. 17. <CheckBox
    20. 18. android:id="@+id/rememberPasswordCheckbox"
    21. 19. style="@style/CheckBoxTheme" <=注意下这里,去看下视频怎么弄得。
    22. 20. android:layout_width="wrap_content"
    23. 21. android:layout_height="wrap_content"
    24. 22. android:layout_alignParentLeft="true"
    25. 23. android:layout_marginLeft="50dp"
    26. 24. android:text="记住密码"
    27. 25. android:textColor="@color/white" />

    按钮控件(Button)

    1. 1. button.setOnClickListener(new View.OnClickListener() {
    2. 2. @Override
    3. 3. public void onClick(View v) {
    4. 4. //点击触发事件
    5. 5. }
    6. 6. });
    7. 7.
    8. 8. <Button
    9. 9. android:id="@+id/loginButton"
    10. 10. android:layout_width="match_parent"
    11. 11. android:layout_height="wrap_content"
    12. 12. android:layout_marginTop="40dp"
    13. 13. android:layout_marginLeft="50dp"
    14. 14. android:background="@drawable/round_button" <=注意下这里,去看下视频怎么弄
    15. 得。
    16. 15. android:layout_marginRight="50dp"
    17. 16. android:text="登 录"/>

    四大组件

    我们目前涉及的基本上就是Intent和数据库操作

    Intent

    1. 1. //启动一个新的窗口
    2. 2. Intent intent = new Intent(LoginActivity.this,RegActivity.class);
    3. 3. intent.putExtra(“username”,edtUserName.getText().toString()); //传递参数
    4. 4. startActivity(intent);
    5. 5.
    6. 6. //另外的窗口如何获取其他窗口发送的数据
    7. 7. Intent intent = getIntent();
    8. 8. //获取登录页面传递过来的Intent的内容
    9. 9. Intent intent = getIntent();
    10. 10. String username = intent.getStringExtra("username");
    11. 11. String password = intent.getStringExtra("password");
    12. 12. //把intent里面的内容覆盖到我们注册页面中的EditText里面的内容
    13. 13. usernameEditText.setText(username);
    14. 14. passwordEditText.setText(password);

    数据库

    1. 1. //第一步,定一个数据库管理的类
    2. 2. /**
    3. 3. * Created by Administrator on 2022/9/30.
    4. 4. */
    5. 5.
    6. 6. public class DbHelper extends SQLiteOpenHelper {
    7. 7. //定义数据库名
    8. 8. private static final String DATABASE_NAME = "EGAPP";
    9. 9.
    10. 10. //定义构造函数,设置数据库初始化参数
    11. 11. public DbHelper(Context context) {
    12. 12. super(context, DATABASE_NAME, null, 1);
    13. 13. }
    14. 14.
    15. 15.
    16. 16. //数据库创建时会执行
    17. 17. @Override
    18. 18. public void onCreate(SQLiteDatabase db) {
    19. 19.
    20. 20. //创建USER表
    21. 21. String createSql = "CREATE TABLE USER(ID INTEGER PRIMARY KEY
    22. AUTOINCREMENT,USER TEXT NOT NULL UNIQUE,PASSWORD TEXT NOT NULL)";
    23. 22. db.execSQL(createSql);
    24. 23.
    25. 24. }
    26. 25.
    27. 26. //数据库升级时会执行
    28. 27. @Override
    29. 28. public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    30. 29.
    31. 30. }
    32. 31.
    33. 32.
    34. 33. // 插入用户到数据库
    35. 34. public long insertUser(String username, String password){
    36. 35. //获得一个可写操作的数据库
    37. 36. SQLiteDatabase writableDatabase = this.getWritableDatabase();
    38. 37.
    39. 38. //将插入参数封装到ContentValues中,利用db中的insert函数,将相关数据插入到数据
    40. 库中。
    41. 39. //这里有两种方式,一种是直接通过输写sql语句插入,但是需要拼接字符串等操作,容易
    42. 写错。
    43. 40. //因此,这里采用的第二种方式,这种方式通过contentValues对我们的参数进行了封装
    44. 41. // ,使得能够在不书写sql语句的情况下也能够实现
    45. 42. //数据库的插入。
    46. 43. ContentValues contentValues = new ContentValues();
    47. 44. contentValues.put("user",username);
    48. 45. contentValues.put("password",password);
    49. 46. //返回插入成功的数量
    50. 47. long insert = writableDatabase.insert("user", null, contentValues);
    51. 48. writableDatabase.close();
    52. 49. return insert;
    53. 50. }
    54. 51.
    55. 52.
    56. 53. public boolean selectUser(String username,String password){
    57. 54. String searchSql = "SELECT * FROM USER WHERE USER=? AND PASSWORD=?";
    58. 55. //替换占位符里面的?,利用字符串数组进行替换
    59. 56. String[] values = new String[]{username,password};
    60. 57.
    61. 58. //获取可读的数据库
    62. 59. SQLiteDatabase readableDatabase = this.getReadableDatabase();
    63. 60.
    64. 61. //得到查询的数据,返回一个cursor 游标
    65. 62. Cursor cursor = readableDatabase.rawQuery(searchSql, values);
    66. 63. //如果能查询的数据大于0,则代表至少有一个数据。
    67. 64. if (cursor.getCount()>0){
    68. 65. //释放cursor资源
    69. 66. cursor.close();
    70. 67. readableDatabase.close();
    71. 68. return true;
    72. 69. }
    73. 70. //释放cursor资源。
    74. 71. cursor.close();
    75. 72. readableDatabase.close();
    76. 73. return false;
    77. 74. }
    78. 75. }
    79. 76.
    80. 77.
    81. 78. //窗口中实例化我们的数据库
    82. 79. //创建dbHelper
    83. 80. private DbHelper dbHelper;
    84. 81. //初始化dbhelper
    85. 82. dbHelper = new DbHelper(this);

    SharedPreferences

    1. 1. private SharedPreferences sharedPreferences;
    2. 2. private SharedPreferences.Editor editor;
    3. 3.
    4. 4. //定义sharedPreferences与对应的编辑器
    5. 5. sharedPreferences = getSharedPreferences("EGAPP", MODE_PRIVATE);
    6. 6. editor = sharedPreferences.edit();
    7. 7.
    8. 8. //sp 取数据 getBoolean getString getInteger getLong
    9. 9. //key值, 第二个参数是默认返回值,如果找不到就默认返回第二个参数的内容。
    10. 10. boolean isRemember = sharedPreferences.getBoolean("isRemember", false);
    11. 11. usernameEditText.setText(sharedPreferences.getString("username", ""));
    12. 12.
    13. 13. //插入数据到sp
    14. 14. editor.putString("username","");
    15. 15. editor.putBoolean("isRemember",isChecked);
    16. 16. //切忌 切忌 切忌 不要忘记commit
    17. 17. editor.commit();

    Toast

    1. 1. Toast.makeText(RegActivity.this,"注册失败。已经有存在的用户
    2. 了!",Toast.LENGTH_SHORT).show();
    3. 2. Toast.makeText(RegActivity.this,"注册失败。已经有存在的用户
    4. 了!",Toast.LENGTH_LONG).show();

    常见错误

    布局文件的组件id引用错误

    布局引用错误

    (这俩点都会导致闪退出现)

    容易搞错的点

    Shape

    1. 1. <shape xmlns:android="http://schemas.android.com/apk/res/android">
    2. 2. <solid android:color="#ffffff"/>
    3. 3. <corners android:radius=13dp” /> //设置按钮圆角的弧度
    4. 4. </shape>

    Fragment和Viewpager的使用

    1. 1. //定义FragementAdapter
    2. 2. public class FragementAdapter extends FragmentStatePagerAdapter {
    3. 3.
    4. 4. private List<Fragment> lists = new ArrayList<>();
    5. 5. private FragmentManager fm;
    6. 6.
    7. 7. public FragementAdapter(FragmentManager fm,List<Fragment> lists) {
    8. 8. super(fm);
    9. 9. this.lists = lists;
    10. 10. this.fm = fm;
    11. 11. }
    12. 12.
    13. 13. @Override
    14. 14. public Fragment getItem(int position) {
    15. 15. return lists.get(position);
    16. 16. }
    17. 17.
    18. 18. @Override
    19. 19. public int getCount() {
    20. 20. return lists.size();
    21. 21. }
    22. 22. }
    23. 23.
    24. 24. //FragmentManger Fragment的一个官方提供的一个管理器
    25. 25. FragmentManager fragmentManager = this.getSupportFragmentManager();
    26. 26. //Fragment添加到list中,相当于统一管理
    27. 27.
    28. 28. lists.add(new MainItem1());
    29. 29. lists.add(new MainItem2());
    30. 30. lists.add(new MainItem3());
    31. 31.
    32. 32. FragementAdapter adapter = new FragementAdapter(fragmentManager, lists);
    33. 33. viewPager.setAdapter(adapter);
    34. 34.
    35. 35. viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
    36. 36. @Override
    37. 37. public void onPageScrolled(int position, float positionOffset, int
    38. positionOffsetPixels) {
    39. 38.
    40. 39. }
    41. 40.
    42. 41. @Override
    43. 42. public void onPageSelected(int position) {
    44. 43. //页面发生变换被选中的时候
    45. 44.
    46. tv_document_management.setBackgroundColor(getResources().getColor(R.color.inactive)
    47. 45.
    48. tv_personal_center.setBackgroundColor(getResources().getColor(R.color.inactive));
    49. 46.
    50. tv_life_service.setBackgroundColor(getResources().getColor(R.color.inactive));
    51. 47. switch (position){
    52. 48. case 0:
    53. 49.
    54. tv_document_management.setBackgroundColor(getResources().getColor(R.color.active));
    55. 50. break;
    56. 51. case 2:
    57. 52.
    58. tv_personal_center.setBackgroundColor(getResources().getColor(R.color.active));
    59. 53. break;
    60. 54. case 1:
    61. 55.
    62. tv_life_service.setBackgroundColor(getResources().getColor(R.color.active));
    63. 56. break;
    64. 57. }
    65. 58.
    66. 59. }
    67. 60.
    68. 61. @Override
    69. 62. public void onPageScrollStateChanged(int state) {
    70. 63.
    71. 64. }
    72. 65. });

    SlidingMenu和Listview的使用

    1. 1. private ListView sliding_listview;
    2. 2. private SlidingPaneLayout slidingPaneLayout;
    3. 3.
    4. 4.
    5. 5.
    6. 6. //
    7. 7. sliding_listview = (ListView) findViewById(R.id.sliding_list_view);
    8. 8. slidingPaneLayout = (SlidingPaneLayout) findViewById(R.id.slidingPaneLayout);
    9. 9.
    10. 10. //定义listview的数据,使用了adapter。
    11. 11. ArrayAdapter listAdapter = new ArrayAdapter(MainActivity.this,
    12. 12. android.R.layout.simple_list_item_1,arrs);
    13. 13. sliding_listview.setAdapter(listAdapter);
    14. 14. sliding_listview.setOnItemClickListener(new AdapterView.OnItemClickListener()
    15. {
    16. 15. @Override
    17. 16. public void onItemClick(AdapterView<?> parent, View view, int position,
    18. long id) {
    19. 17. slidingPaneLayout.closePane();
    20. 18. viewPager.setCurrentItem(position);
    21. 19. }
    22. 20. });
    23. 21.
    24. 22.
    25. 23. <android.support.v4.widget.SlidingPaneLayout
    26. 24. android:layout_width="match_parent"
    27. 25. android:layout_height="wrap_content"
    28. 26. android:id="@+id/slidingPaneLayout">
    29. 27. <LinearLayout
    30. 28. android:layout_width="130dp"
    31. 29. android:layout_height="match_parent"
    32. 30. android:gravity="left">
    33. 31. <ListView
    34. 32. android:layout_width="130dp"
    35. 33. android:background="#f2f3f4"
    36. 34. android:id="@+id/sliding_list_view"
    37. 35. android:layout_height="match_parent">
    38. 36.
    39. 37. </ListView>
    40. 38. </LinearLayout>
    41. 39.
    42. 40. <LinearLayout
    43. 41. android:layout_width="match_parent"
    44. 42. android:layout_height="match_parent"
    45. 43. android:gravity="right">
    46. 44. <android.support.v4.view.ViewPager
    47. 45. android:id="@+id/viewpager"
    48. 46. android:layout_width="wrap_content"
    49. 47. android:layout_height="wrap_content"
    50. 48. android:layout_marginBottom="50dp">
    51. 49.
    52. 50. </android.support.v4.view.ViewPager>
    53. 51. </LinearLayout>
    54. 52. </android.support.v4.widget.SlidingPaneLayout>

  • 相关阅读:
    ParameterizedType类型设置默认值
    leetcode 416.分割等和子集 动态规划背包问题 (c++版本)
    基于Dijkstra和A*算法的机器人路径规划(Matlab代码实现)
    Java 性能优化实战SpringBoot 服务性能优化
    竞赛 深度学习 opencv python 实现中国交通标志识别
    GraphGPT: Graph Instruction Tuning for Large Language Models
    postcss及其插件autoprefixer、postcss-preset-env、stylelint的使用
    Rockland一抗丨葡糖淀粉酶抗体参数及应用
    树莓派之树莓派系统安装
    【数据结构】顺序表的基本操作详解——C语言实现
  • 原文地址:https://blog.csdn.net/weixin_64612659/article/details/127557921