我知道这似乎是一个非常基本的问题,但它专门针对 Android Q。
我只想从图库中获取图像并将其压缩并发送到服务器。但是由于 Android Q 的 Scoped Storage,它比我想象的要难。我将首先解释我用代码做了什么:
首先,我发出选择图像的意图。
fun openGallery(fragment: Fragment){
val intent = Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI)
intent.type = "*/*"
val mimeTypes = arrayOf("image/*")
intent.putExtra(Intent.EXTRA_MIME_TYPES, mimeTypes)
fragment.startActivityForResult(intent, REQUEST_IMAGE_PICK)
}
Run Code Online (Sandbox Code Playgroud)
它工作正常,我能够在 onActivityResult 方法中获取图像
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
if (requestCode == REQUEST_IMAGE_PICK && resultCode == Activity.RESULT_OK && null != data) {
val selectedImage = data.data
val source = ImageDecoder.createSource(activity!!.contentResolver, selectedImage)
val bitmap = ImageDecoder.decodeBitmap(source)
mBinding.circularProfileImage.setImageBitmap(bitmap)
}
}
Run Code Online (Sandbox Code Playgroud)
好的,现在的问题是如何以文件格式访问此图像,以便我可以进一步处理/压缩它。
以下是我尝试过的事情:
val mImagePath = getImagePathFromUri(activity!!, selectedImage)
Run Code Online (Sandbox Code Playgroud)
这是我得到的路径:
/storage/emulated/0/DCIM/Camera/IMG_20191022_152437.jpg …Run Code Online (Sandbox Code Playgroud) android storage-access-framework android-10.0 scoped-storage
我使用多向滚动视图创建了一个类似 Excel 的视图。现在我想固定标题,不仅是列标题,还有行标题。看下面的gif:
我用来创建此视图的代码:
ScrollView([.vertical, .horizontal]){
VStack(spacing: 0){
ForEach(0..<model.rows.count+1, id: \.self) {rowIndex in
HStack(spacing: 0) {
ForEach(0..<model.columns.count+1) { columnIndex in
if rowIndex == 0 && columnIndex == 0 {
Rectangle()
.fill(Color(UIColor(Color.white).withAlphaComponent(0.0)))
.frame(width: CGFloat(200).pixelsToPoints(), height: CGFloat(100).pixelsToPoints())
.padding([.leading, .trailing])
.border(width: 1, edges: [.bottom, .trailing], color: .blue)
} else if (rowIndex == 0 && columnIndex > 0) {
TitleText(
label: model.columns[columnIndex - 1].label,
columnWidth: CGFloat(columnWidth).pixelsToPoints(),
borderEgdes: [.top, .trailing, .bottom]
)
} else if (rowIndex > 0 && columnIndex == 0) {
TitleText(
label: …Run Code Online (Sandbox Code Playgroud) 在我的应用程序中,我可以通过 datasnapshot.getchildren() 来计算孩子的数量。但是如果我想将该计数存储在一个变量中,我该怎么办?
mRefReg.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Log.i(dataSnapshot.getKey(),dataSnapshot.getChildrenCount()+"Count");
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
Run Code Online (Sandbox Code Playgroud)
包括“mCount = dataSnapshot.getChildren”似乎不起作用。