V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  murmurkerman  ›  全部回复第 1 页 / 共 3 页
回复总数  47
1  2  3  
"AI 可以替代很多前端编码工作" 来压工资,他们怎么还招人,直接用 Devin 不行吗,那不比人便宜多了。
@lixyz item 有没有加 id 和 type
好久没写 android view 哈哈哈,我写出来了,花掉了所有的摸鱼时间,https://github.com/Murmurl912/android_recycler_view_chat.git
总结下:
1. 去掉 RecyclerView 的 ItemAnimator
2. 在更新 Item 的时候,判断是否在底部,已经是底部的时候滚动到底部。
3. 我之前的方案是会加一个 FirstItem 和 LastItem 的占位 Item 到 RecyclerView 中,方便实现滚动到底部和顶部。
Core Code:
```kotlin

class MainActivity : ComponentActivity() {
private val binding by lazy { ActivityMainBinding.inflate(layoutInflater) }
private val adapter by lazy {
ItemAdapter()
}
private var id = 1L
private val items = LinkedHashMap<Long, Item>()
private var job: Job? = null
private val layoutManager by lazy {
binding.recyclerView.layoutManager as LinearLayoutManager
}

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
enableEdgeToEdge()
setContentView(binding.root)
binding.root.fitsSystemWindows = true
binding.recyclerView.adapter = adapter
binding.recyclerView.itemAnimator = null
binding.generate.setOnClickListener {
if (job?.isActive == true) {
return@setOnClickListener
}
var item = Item.MessageItem(id++, "")
items[item.id] = item
updateItems()
job = lifecycleScope.launch {
MessageApi.generate()
.collect { text ->
item = item.copy(text = item.text + text, isGenerating = true).also {
items[it.id] = it
updateItems()
}
// scroll to bottom here
val isAtBottom =
layoutManager.findLastCompletelyVisibleItemPosition() == adapter.itemCount - 1
if (isAtBottom) {
layoutManager.scrollToPosition(adapter.itemCount - 1)
}
}
item = item.copy(isGenerating = false).also {
items[it.id] = it
updateItems()
}
}
}
}


private fun updateItems() {
adapter.updateItems(items.values.toMutableList()
.apply {
add(0, Item.FirstItem)
add(Item.LastItem)
}
)
}


}
```
用正序的 recycler view 比较合适。消息高度超过限制和不再自动滚动到底部。逆序的话要计算 scroll range 的变化,然后滚动变化的部分。
简单讲一下 RecyclerView 和 ItemView 结构,是某个 Item 会动态更新么,类似于 Ai 聊天应用么。
mini sdk 24 但是没设备测试哈哈哈,有没有 bug 全靠反馈
6 天前
回复了 nnegier 创建的主题 Java Android 的 Java 是阉割版的?何解呢
遇到问题搜下 GitHub😶‍🌫️
6 天前
回复了 nnegier 创建的主题 Java Android 的 Java 是阉割版的?何解呢
很简单加几个 jar 就好了 https://github.com/piyush01123/Android-Server
我记得 netty 是可以跑在安卓上的,调整下 minSdk 到支持 nio 的版本好像是 24 。
ktor 也可以跑 server 。
jetty 应该也可以。
不用焦虑安装包大小,该要的代码得加上。毕竟是个草台班子。
可以自己写插件加载,其实很简单的。只需要用 DelegateLastClassloader 加载插件 apk 的 dex 和 so ,复制插件 androidmanifest 到宿主应用。我之前写过类似的代码,对指定业务场景可用。你可以看看你的应用
在这个企业应用中加上强制的更新弹窗即可。用插件有点麻烦。插件缺点就是每次应用启动都得加载一遍,还是要以发版形式更新应用比较合适。
哈哈哈 4090 16k ,玩游戏的话捡一个 30 系列显卡 3k 4k 差不多了 3080 ~= 4070
这玩意难用,还不如关掉去 bios 改风扇曲线
你要是不会 ADB, SSH 和穿透的话。你的办公室需要有一台电脑开启远程访问。然后把手机连接上办公室电脑,装下 scrcpy 即可。

常见 ADB 命令:
1. 解锁手机:
adb shell input keyevent 62
输入密码:
adb shell input text 解锁密码
2. 锁屏:
adb shell input keyevent 26
3. 打开应用
adb shell am start -a android.intent.action.MAIN -c android.intent.category.LAUNCHER --activity-clear-task -n com.ss.android.lark/.main.app.MainActivity
4. 关闭应用
adb shell am force-stop com.ss.android.lark
如果应用没有用 9.0 新功能的话,应该没问题。

如果你有 apk 。你需要 ApkTool:
1. 用 ApkTool 解 Apk
`apktool d app.apk -o app_decompiled`
app.apk 是你的 apk 文件路径,app_decompiled ,放置解包后的产物
大致输出如下:
app_decompiled
├── AndroidManifest.xml
├── META-INF
├── apktool.yml
├── assets
├── kotlin
├── lib
├── original
├── res
├── smali
├── smali_classes2
├── smali_classes3
└── unknown

2. 修改 apktool.yml 文件,这个是个文本文件
修改最低版本为 minSdkVersion: xxx 为 minSdkVersion: 24
修改前:

sdkInfo:
minSdkVersion: 35
targetSdkVersion: 35
修改后:

sdkInfo:
minSdkVersion: 24
targetSdkVersion: 35

3. 重新打包 Apk
apktool b app_decompiled -o app_modified.apk

4. 给 Apk 签名

用 keytool 生成签名密钥:
keytool -genkeypair -v \
-keystore my-release-key.jks \
-keyalg RSA -keysize 2048 -validity 10000 \
-alias my-key-alias

用 apksinger 签名 apk:
apksigner sign --ks my-release-key.jks --out app_signed.apk app_modified.apk

验证签名:
apksigner verify app_signed.apk

5. 安装测试

工具:
apktool: https://apktool.org/docs/the-basics/intro/
keytool: jdk 自带的工具,没有的话用 openssh
apksigner: android sdk 工具,https://developer.android.com/studio?hl=zh-cn#command-tools

有源代码的话,改下构建配置就好了。
49 天前
回复了 mario328 创建的主题 Android 为什么手机 DRM 等级会自动从 L1 下降到 L3
看看这条,我的 xperia 1 iv 是 l3 ,不过是解锁了 boot loader 和 root 了。看看这个: https://www.reddit.com/r/SonyXperia/comments/15vrhz4/widevine_disappointment/
53 天前
回复了 Yaoooo 创建的主题 分享创造 Moonshot
🌓🌓🌓🌓🌓🌓🌓🌓🌓🌓🌓🌓🌓🌓
🌗🌗🌗🌗🌗🌗🌗🌗🌗🌗🌗🌗🌗🌗
🌓🌓🌓🌓🌓🌓🌑🌑🌑🌓🌓🌓🌓🌓
🌗🌖🌖🌗🌗🌑🌑🌑🌑🌑🌘🌗🌗🌗
🌓🌔🌑🌓🌒🌑🌓🌔🌓🌑🌑🌓🌓🌓
🌗🌘🌑🌑🌑🌘🌖🌖🌖🌗🌑🌗🌗🌗
🌓🌑🌑🌑🌑🌒🌔🌔🌒🌓🌑🌓🌓🌓
🌘🌗🌖🌖🌑🌗🌗🌘🌖🌖🌘🌗🌘🌗
🌔🌔🌔🌓🌔🌔🌓🌒🌔🌔🌓🌓🌒🌓
🌖🌗🌖🌖🌖🌗🌗🌗🌖🌖🌑🌑🌘🌘
🌒🌓🌒🌒🌔🌔🌔🌔🌔🌓🌑🌑🌑🌒
🌖🌗🌖🌖🌗🌖🌗🌖🌖🌘🌘🌘🌗🌗
🌔🌔🌔🌔🌔🌓🌔🌔🌔🌔🌓🌔🌓🌓
🌖🌖🌗🌗🌖🌖🌖🌖🌖🌖🌕🌕🌖🌖
海鲜市场捡一个 sony xperia 。配置尚可,几乎原生,可以刷 aosp 。
你只能用 Android Studio, Intelij Idea 打开子项目。或者直接用 VsCode 。
1  2  3  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3091 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 28ms · UTC 14:09 · PVG 22:09 · LAX 06:09 · JFK 09:09
Developed with CodeLauncher
♥ Do have faith in what you're doing.