通过设置属性android:orientation控制方向
属性值垂直——vertical
属性值水平——horizontal
默认为水平方向
- 1. <LinearLayout
- 2. android:layout_width="wrap_content"
- 3. android:orientation="vertical"
- 4. android:layout_height="wrap_content">
- 5.
- 6. </LinearLayout>
- 1. <RelativeLayout
- 2. android:layout_width="match_parent"
- 3. android:layout_height="match_parent">
- 4. </RelativeLayout>
- 1. private Textview textview;
- 2.
- 3. protected void onCreate(Bundle savedInstanceState) (){
- 4.
- 5. TextView textView = (TextView)findViewById(R.id.textView);
- 6. //设置文本
- 7. String text = textView.getText().toString();
- 8.
- 9. //得到文本
- 10. textView.setText("XXXX");
- 11.
- 12.
- 13. }
- 1. //背景颜色
- 2. android:background="@color/colorAccent"
- 3.
- 4. //文本颜色
- 5. android:textColor="@color/red"
- 6.
- 7. //文本大小
- 8. android:textSize="@color/red"
- 9.
- 10. <TextView
- 11. android:layout_width="wrap_content"
- 12. android:layout_height="wrap_content"
- 13. android:id="@id+/textView"
- 14. android:textColor="@android:color/holo_blue_dark"
- 15. android:text="@string/hello_world" />
图像放drawable文件夹
- 1. <ImageView
- 2. android:layout_width="wrap_content"
- 3. android:layout_height="wrap_content"
- 4. android:src="@mipmap/ic_launcher"/>
//用户名输入框
private EditText usernameEditText;
usernameEditText = (EditText) findViewById(R.id.username);
//设置文本
usernameEditText.setText(username);
//得到文本
usernameEditText.getText().toString();
- 1. <EditText
- 2. android:id="@+id/password"
- 3. android:layout_width="match_parent"
- 4. android:layout_height="wrap_content"
- 5. android:drawableLeft="@drawable/password"
- 6. android:hint="请输入密码"
- 7. android:textColor="@color/white"
- 8. android:textColorHint="@color/white"
- 9. android:layout_marginLeft="50dp"
- 10. android:layout_marginRight="50dp"
- 11. android:layout_marginTop="5dp"
- 12. />
//记住密码
Checkbox private CheckBox rememberCheckbox;
rememberCheckbox = (CheckBox) findViewById(R.id.rememberPasswordCheckbox);
//把记住密码设置为勾选或取消状态
rememberCheckbox.setChecked(true);
- 1. //设置记住密码控件勾选事件的监听器
- 2. rememberCheckbox.setOnCheckedChangeListener(new
- CompoundButton.OnCheckedChangeListener() {
- 3. @Override
- 4. public void onCheckedChanged(CompoundButton buttonView, boolean
- isChecked) {
- 5. //一旦记住密码控件勾选状态发生改变,就会执行这里面的代码
- 6. if (isChecked == false){
- 7. editor.putString("username","");
- 8. editor.putString("password","");
- 9. }
- 10. editor.putBoolean("isRemember",isChecked);
- 11. editor.commit();
- 12. }
- 13. });
- 14.
- 15.
- 16.
- 17. <CheckBox
- 18. android:id="@+id/rememberPasswordCheckbox"
- 19. style="@style/CheckBoxTheme" <=注意下这里,去看下视频怎么弄得。
- 20. android:layout_width="wrap_content"
- 21. android:layout_height="wrap_content"
- 22. android:layout_alignParentLeft="true"
- 23. android:layout_marginLeft="50dp"
- 24. android:text="记住密码"
- 25. android:textColor="@color/white" />
-
- 1. button.setOnClickListener(new View.OnClickListener() {
- 2. @Override
- 3. public void onClick(View v) {
- 4. //点击触发事件
- 5. }
- 6. });
- 7.
- 8. <Button
- 9. android:id="@+id/loginButton"
- 10. android:layout_width="match_parent"
- 11. android:layout_height="wrap_content"
- 12. android:layout_marginTop="40dp"
- 13. android:layout_marginLeft="50dp"
- 14. android:background="@drawable/round_button" <=注意下这里,去看下视频怎么弄
- 得。
- 15. android:layout_marginRight="50dp"
- 16. android:text="登 录"/>
我们目前涉及的基本上就是Intent和数据库操作
- 1. //启动一个新的窗口
- 2. Intent intent = new Intent(LoginActivity.this,RegActivity.class);
- 3. intent.putExtra(“username”,edtUserName.getText().toString()); //传递参数
- 4. startActivity(intent);
- 5.
- 6. //另外的窗口如何获取其他窗口发送的数据
- 7. Intent intent = getIntent();
- 8. //获取登录页面传递过来的Intent的内容
- 9. Intent intent = getIntent();
- 10. String username = intent.getStringExtra("username");
- 11. String password = intent.getStringExtra("password");
- 12. //把intent里面的内容覆盖到我们注册页面中的EditText里面的内容
- 13. usernameEditText.setText(username);
- 14. passwordEditText.setText(password);
- 1. //第一步,定一个数据库管理的类
- 2. /**
- 3. * Created by Administrator on 2022/9/30.
- 4. */
- 5.
- 6. public class DbHelper extends SQLiteOpenHelper {
- 7. //定义数据库名
- 8. private static final String DATABASE_NAME = "EGAPP";
- 9.
- 10. //定义构造函数,设置数据库初始化参数
- 11. public DbHelper(Context context) {
- 12. super(context, DATABASE_NAME, null, 1);
- 13. }
- 14.
- 15.
- 16. //数据库创建时会执行
- 17. @Override
- 18. public void onCreate(SQLiteDatabase db) {
- 19.
- 20. //创建USER表
- 21. String createSql = "CREATE TABLE USER(ID INTEGER PRIMARY KEY
- AUTOINCREMENT,USER TEXT NOT NULL UNIQUE,PASSWORD TEXT NOT NULL)";
- 22. db.execSQL(createSql);
- 23.
- 24. }
- 25.
- 26. //数据库升级时会执行
- 27. @Override
- 28. public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
- 29.
- 30. }
- 31.
- 32.
- 33. // 插入用户到数据库
- 34. public long insertUser(String username, String password){
- 35. //获得一个可写操作的数据库
- 36. SQLiteDatabase writableDatabase = this.getWritableDatabase();
- 37.
- 38. //将插入参数封装到ContentValues中,利用db中的insert函数,将相关数据插入到数据
- 库中。
- 39. //这里有两种方式,一种是直接通过输写sql语句插入,但是需要拼接字符串等操作,容易
- 写错。
- 40. //因此,这里采用的第二种方式,这种方式通过contentValues对我们的参数进行了封装
- 41. // ,使得能够在不书写sql语句的情况下也能够实现
- 42. //数据库的插入。
- 43. ContentValues contentValues = new ContentValues();
- 44. contentValues.put("user",username);
- 45. contentValues.put("password",password);
- 46. //返回插入成功的数量
- 47. long insert = writableDatabase.insert("user", null, contentValues);
- 48. writableDatabase.close();
- 49. return insert;
- 50. }
- 51.
- 52.
- 53. public boolean selectUser(String username,String password){
- 54. String searchSql = "SELECT * FROM USER WHERE USER=? AND PASSWORD=?";
- 55. //替换占位符里面的?,利用字符串数组进行替换
- 56. String[] values = new String[]{username,password};
- 57.
- 58. //获取可读的数据库
- 59. SQLiteDatabase readableDatabase = this.getReadableDatabase();
- 60.
- 61. //得到查询的数据,返回一个cursor 游标
- 62. Cursor cursor = readableDatabase.rawQuery(searchSql, values);
- 63. //如果能查询的数据大于0,则代表至少有一个数据。
- 64. if (cursor.getCount()>0){
- 65. //释放cursor资源
- 66. cursor.close();
- 67. readableDatabase.close();
- 68. return true;
- 69. }
- 70. //释放cursor资源。
- 71. cursor.close();
- 72. readableDatabase.close();
- 73. return false;
- 74. }
- 75. }
- 76.
- 77.
- 78. //窗口中实例化我们的数据库
- 79. //创建dbHelper
- 80. private DbHelper dbHelper;
- 81. //初始化dbhelper
- 82. dbHelper = new DbHelper(this);
- 1. private SharedPreferences sharedPreferences;
- 2. private SharedPreferences.Editor editor;
- 3.
- 4. //定义sharedPreferences与对应的编辑器
- 5. sharedPreferences = getSharedPreferences("EGAPP", MODE_PRIVATE);
- 6. editor = sharedPreferences.edit();
- 7.
- 8. //sp 取数据 getBoolean getString getInteger getLong
- 9. //key值, 第二个参数是默认返回值,如果找不到就默认返回第二个参数的内容。
- 10. boolean isRemember = sharedPreferences.getBoolean("isRemember", false);
- 11. usernameEditText.setText(sharedPreferences.getString("username", ""));
- 12.
- 13. //插入数据到sp
- 14. editor.putString("username","");
- 15. editor.putBoolean("isRemember",isChecked);
- 16. //切忌 切忌 切忌 不要忘记commit
- 17. editor.commit();
- 1. Toast.makeText(RegActivity.this,"注册失败。已经有存在的用户
- 了!",Toast.LENGTH_SHORT).show();
- 2. Toast.makeText(RegActivity.this,"注册失败。已经有存在的用户
- 了!",Toast.LENGTH_LONG).show();
布局文件的组件id引用错误
布局引用错误
(这俩点都会导致闪退出现)
- 1. <shape xmlns:android="http://schemas.android.com/apk/res/android">
- 2. <solid android:color="#ffffff"/>
- 3. <corners android:radius=“13dp” /> //设置按钮圆角的弧度
- 4. </shape>
- 1. //定义FragementAdapter
- 2. public class FragementAdapter extends FragmentStatePagerAdapter {
- 3.
- 4. private List<Fragment> lists = new ArrayList<>();
- 5. private FragmentManager fm;
- 6.
- 7. public FragementAdapter(FragmentManager fm,List<Fragment> lists) {
- 8. super(fm);
- 9. this.lists = lists;
- 10. this.fm = fm;
- 11. }
- 12.
- 13. @Override
- 14. public Fragment getItem(int position) {
- 15. return lists.get(position);
- 16. }
- 17.
- 18. @Override
- 19. public int getCount() {
- 20. return lists.size();
- 21. }
- 22. }
- 23.
- 24. //FragmentManger Fragment的一个官方提供的一个管理器
- 25. FragmentManager fragmentManager = this.getSupportFragmentManager();
- 26. //Fragment添加到list中,相当于统一管理
- 27.
- 28. lists.add(new MainItem1());
- 29. lists.add(new MainItem2());
- 30. lists.add(new MainItem3());
- 31.
- 32. FragementAdapter adapter = new FragementAdapter(fragmentManager, lists);
- 33. viewPager.setAdapter(adapter);
- 34.
- 35. viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
- 36. @Override
- 37. public void onPageScrolled(int position, float positionOffset, int
- positionOffsetPixels) {
- 38.
- 39. }
- 40.
- 41. @Override
- 42. public void onPageSelected(int position) {
- 43. //页面发生变换被选中的时候
- 44.
- tv_document_management.setBackgroundColor(getResources().getColor(R.color.inactive)
- 45.
- tv_personal_center.setBackgroundColor(getResources().getColor(R.color.inactive));
- 46.
- tv_life_service.setBackgroundColor(getResources().getColor(R.color.inactive));
- 47. switch (position){
- 48. case 0:
- 49.
- tv_document_management.setBackgroundColor(getResources().getColor(R.color.active));
- 50. break;
- 51. case 2:
- 52.
- tv_personal_center.setBackgroundColor(getResources().getColor(R.color.active));
- 53. break;
- 54. case 1:
- 55.
- tv_life_service.setBackgroundColor(getResources().getColor(R.color.active));
- 56. break;
- 57. }
- 58.
- 59. }
- 60.
- 61. @Override
- 62. public void onPageScrollStateChanged(int state) {
- 63.
- 64. }
- 65. });
- 1. private ListView sliding_listview;
- 2. private SlidingPaneLayout slidingPaneLayout;
- 3.
- 4.
- 5.
- 6. //
- 7. sliding_listview = (ListView) findViewById(R.id.sliding_list_view);
- 8. slidingPaneLayout = (SlidingPaneLayout) findViewById(R.id.slidingPaneLayout);
- 9.
- 10. //定义listview的数据,使用了adapter。
- 11. ArrayAdapter listAdapter = new ArrayAdapter(MainActivity.this,
- 12. android.R.layout.simple_list_item_1,arrs);
- 13. sliding_listview.setAdapter(listAdapter);
- 14. sliding_listview.setOnItemClickListener(new AdapterView.OnItemClickListener()
- {
- 15. @Override
- 16. public void onItemClick(AdapterView<?> parent, View view, int position,
- long id) {
- 17. slidingPaneLayout.closePane();
- 18. viewPager.setCurrentItem(position);
- 19. }
- 20. });
- 21.
- 22.
- 23. <android.support.v4.widget.SlidingPaneLayout
- 24. android:layout_width="match_parent"
- 25. android:layout_height="wrap_content"
- 26. android:id="@+id/slidingPaneLayout">
- 27. <LinearLayout
- 28. android:layout_width="130dp"
- 29. android:layout_height="match_parent"
- 30. android:gravity="left">
- 31. <ListView
- 32. android:layout_width="130dp"
- 33. android:background="#f2f3f4"
- 34. android:id="@+id/sliding_list_view"
- 35. android:layout_height="match_parent">
- 36.
- 37. </ListView>
- 38. </LinearLayout>
- 39.
- 40. <LinearLayout
- 41. android:layout_width="match_parent"
- 42. android:layout_height="match_parent"
- 43. android:gravity="right">
- 44. <android.support.v4.view.ViewPager
- 45. android:id="@+id/viewpager"
- 46. android:layout_width="wrap_content"
- 47. android:layout_height="wrap_content"
- 48. android:layout_marginBottom="50dp">
- 49.
- 50. </android.support.v4.view.ViewPager>
- 51. </LinearLayout>
- 52. </android.support.v4.widget.SlidingPaneLayout>