Android开发相关

本文涵盖了Android开发的关键知识点,包括字符串操作、控件布局、页面跳转、Adapter使用及时间表达。强调了RelativeLayout和RecyclerView的重要性,并分享了调试与解决编译问题的方法。同时,解释了不同控件如TextView、EditText、ImageView的使用场景,以及如何实现ListView与Adapter的绑定和SearchView实时搜索。此外,还提及了时间处理中Date、Time、DateTime和Timestamp的运用,以及布局设计和资源文件管理的注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

😊

要点

字符串操作

substring():截取子串
indexOf(" : "): 定位符

居中

  • 文字在控件居中 android:gravity="center_horizontal"
  • 控件在layout居中 android:layout_gravity="center_horizontal\vertical"
    与父级容器的水平/竖直排列方向相反

控件

Textview
EditText

设置文本:setText在这里插入代码片

//获取文本
EditText editText1 =(EditText) findViewById (R.id.editText1);
c=Integer.parseInt(editText1.getText().toString());
最好使用ImageView,而不是ImageButton
最好使用Recyclerview,而不是ListView

页面跳转与关闭

  • 跳转
// 发送
ImageButton bn_edit = (ImageButton)view.findViewById(R.id.imageButton_edit);
            bn_edit.setOnClickListener(new View.OnClickListener() {
                public void onClick(View v) {
                    Intent intent=new Intent();
                    Bundle bundle=new Bundle();
                    bundle.putSerializable("inform",inform);//序列化对象
                    intent.putExtras(bundle);
                    intent.setClass(getContext(),editinform.class);
                    //启动
                    getContext().startActivity(intent);
                    ((Activity)getContext()).finish();//finish();

                }
            });

//接收
        Intent intent=getIntent();
        Bundle bundle = i.getExtras();
        bundle.getString("extras",default)//获取指定字符串的extras,若为空则指定默认值
        userName =intent.getStringExtra("userName");   
       
       //获取传入的medicine对象
        medicinedemo = (medicine) getIntent().getSerializableExtra("Medicine");



  • 直接关闭activity :finish();
  • 在adapter里面关闭当前的activity
//从不是activity获取上下文后 在关闭
((Activity)getContext()).finish();

调试打印工具

在onCreate()方法外面输入logt,然后按下TAB键,这时就会以当前的类名作为值自动生成一个TAG变量,然后在输入logd,按TAB生成级别为debug的打印日志

(有5种打印级别,在logcat查看、过滤)

Adapter

Listview 与Adapter绑定,实现展示列表,使用searchview,实现实时搜索
Adapter更改构造方法传参,自定义Adapter 自定义对象传入下一个activity要进行serializable序列化,注意,所有涉及的对象都要implements serializable,一个类里面可能有list也要继承

时间表达

Date日期类
Time时间类
Datetime日期时间类
Timestamp类(带时区)
在用DateTimematter格式化时间,时间也可以直接用字符串表示

  • 数据库存储:
    oracle:使用Datetime存储
    SQlite:使用integer建表存储时间戳,用new Date().getTime()存入,取出时,再转为Date类型Date date = new Date(cursor.getLong(i));

  • 参考:

//对Android手机系统日历数据增删改查操作
https://blog.youkuaiyun.com/wenzhi20102321/article/details/80644833?utm_medium=distribute.pc_relevant_bbs_down.none-task-blog-baidujs-1.nonecase&depth_1-utm_source=distribute.pc_relevant_bbs_down.none-task-blog-baidujs-1.nonecase

//计算两个时间戳的差值,以字符串的形式表示
public static String getDistanceTime(long  time1,long time2 ) {
        long day = 0;
        long hour = 0;
        long min = 0;
        long sec = 0;
        long diff ;
        String flag;
        if(time1<time2) {
            diff = time2 - time1;
            flag="前";
        } else {
            diff = time1 - time2;
            flag="后";
        }
        day = diff / (24 * 60 * 60 * 1000);
        hour = (diff / (60 * 60 * 1000) - day * 24);
        min = ((diff / (60 * 1000)) - day * 24 * 60 - hour * 60);
        sec = (diff/1000-day*24*60*60-hour*60*60-min*60);
        if(day!=0)return day+"天"+flag;
        if(hour!=0)return hour+"小时"+flag;
        if(min!=0)return min+"分钟"+flag;
        return "刚刚";
    }
使用TimePicker、DatePicker

参考:https://blog.youkuaiyun.com/qq_37217804/article/details/80538209

布局

最好使用Relativelayout(相对布局,尺寸适应性强),LinearLayout(线性布局,方便对齐)、不要随意自己拉框,框架套框
页眉页脚
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 
  xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:tools="http://schemas.android.com/tools"
  android:id="@+id/container"
  android:layout_width="match_parent"
  android:layout_height="match_parent" >
 
  <!-- Header aligned to top -->
  <RelativeLayout
    android:id="@+id/header"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:background="#AFA7EF"
    android:gravity="center">
 
    <TextView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_margin="5dp"
      android:text="Header"
      android:textColor="#000000"
      android:textSize="20sp" />
  </RelativeLayout>
 
  <!-- Footer aligned to bottom -->
  <RelativeLayout
    android:id="@+id/footer"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:background="#6AED83"
    android:gravity="center">
 
    <TextView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_margin="5dp"
      android:text="Footer"
      android:textColor="#000000"
      android:textSize="20sp" />
  </RelativeLayout>
 
  <!-- Content below header and above footer -->
  <RelativeLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_above="@id/footer"
    android:layout_below="@id/header"
    android:gravity="center">
 
    <TextView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Content goes here"
      android:textColor="#FFFFFF"
      android:textSize="20sp" />
  </RelativeLayout>
 
</RelativeLayout>
https://blog.youkuaiyun.com/jasoncol_521/article/details/12556473

踩坑记录

多次编译后,无法运行app,logcat一直出字:可能编译错乱,重新编译Build-> clean poject rebuild

工程各文件夹作用

引用的图片,格式放在drawable下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值