安卓开发汇总(二)

66 阅读2分钟

安卓开发汇总(二)

UI状态修改

描述输入框初始化隐藏,点击按钮后按钮变色,输入框显示,输入值后点击按钮获取输入框值,然后按钮恢复

点击新建文件夹按钮,出现一个编辑框和保存按钮,点击保存按钮后获取到编辑框中的值,并且隐藏编辑框和保存按钮

思路 主要使用的是android:visibility属性,该属性="gone" 时隐藏,="visible"时显示

<LinearLayout  
android:id="@+id/dsf_locality_folder_name_edit_linear_layout"  
android:layout_width="wrap_content"  
android:layout_height="40dp"  
android:layout_marginStart="40dp"  
android:layout_marginEnd="20dp"  
android:layout_marginBottom="20dp"  
android:visibility="gone"  
android:orientation="horizontal"  
>  
<TextView  
android:layout_width="100dp"  
android:layout_height="40dp"  
android:gravity="center_vertical"  
android:textColor="@color/black"  
android:text="文件夹名称:"  
/>  
<EditText  
android:id="@+id/dsf_locality_folder_name_edit"  
android:gravity="center_vertical"  
android:paddingStart="20dp"  
android:layout_width="230dp"  
android:layout_height="40dp"  
android:hint="请输入文件夹名称"  
android:textSize="12sp"  
tools:ignore="RtlSymmetry"  
android:backgroundTint="@color/black"  
/>  
</LinearLayout>

在Java中使用

EditText dsfLocalityFolderNameEdit = dialogView.findViewById(R.id.dsf_locality_folder_name_edit);  
LinearLayout dsfLocalityFolderNameEditLinearLayout = dialogView.findViewById(R.id.dsf_locality_folder_name_edit_linear_layout);  
Button dsfLocalityFolderNew = dialogView.findViewById(R.id.dsf_locality_folder_new);
dsfLocalityFolderNew.setOnClickListener(v->{  
    String dsfLocalityFolderNewText = (String) dsfLocalityFolderNew.getText();  
    if(Objects.equals(dsfLocalityFolderNewText, "新建")){  
        dsfLocalityFolderNew.setBackgroundResource(R.color.btn_color1);  
        dsfLocalityFolderNew.setText("保存");  
        dsfLocalityFolderNameEditLinearLayout.setVisibility(View.VISIBLE);  
    } else {  
        dsfLocalityFolderNew.setBackgroundResource(R.color.btn_color);  
        dsfLocalityFolderNew.setText("新建");  

        String inputTextData = String.valueOf(dsfLocalityFolderNameEdit.getText());  
        boolean ismkdirsFolder = new File(selectFolderListPath,inputTextData).mkdirs();  
        if(ismkdirsFolder){  
            selectFolderListData = handleUpdateSelectFolderData(new File(selectFolderListPath));  
            SelectFolderAdapter temp_selectFolderAdapter = new SelectFolderAdapter(selectFolderListData, FtpManageAction.this);  
            dsfLocalityFolderContent.setAdapter(temp_selectFolderAdapter);  
            dsfLocalityFolderPath.setText(selectFolderListPath);  
            dsfLocalityFolderNameEditLinearLayout.setVisibility(View.GONE);  
            MessageDialog.showMsg(FtpManageAction.this,"文件夹【"+inputTextData+"】创建成功");  
        } else {  
            MessageDialog.showMsg(FtpManageAction.this,"文件夹【"+inputTextData+"】创建失败");  
        }  
    }  
});

返回上一层

假设selectFolderListPath存储的是当前文件管理的文件夹路径,字符串类型,例如"文件夹1/文件夹2/文件夹3",假如我要返回上一层,逻辑代码

public static String goBackOneLevel(String selectFolderListPath) {
    // 将文件夹路径按照"/"分割成数组 
    String[] folderArray = selectFolderListPath.split("/"); 
    // 如果文件夹路径只有一个元素,表示已经在最顶层文件夹,无法返回上一层 
    if (folderArray.length <= 1) {
        return "已经在最顶层文件夹,无法返回上一层";
    } 
    // 创建一个新的数组,不包含最后一个元素(当前文件夹)
    String[] newFolderArray = Arrays.copyOf(folderArray, folderArray.length - 1); 
    // 重新拼接文件夹路径 
    String newPath = String.join("/", newFolderArray); 
    return newPath; 
} 

public static void main(String[] args) {
    String selectFolderListPath = "文件夹1/文件夹2/文件夹3";
    String newFolderPath = goBackOneLevel(selectFolderListPath);
    System.out.println(newFolderPath);
}