feat: 深度完善 — 存根转真实实现、UI类方法补全、Java集合/IO增强

存根转真实实现:
- ContentResolver: query/insert/update/delete对file://URI真实文件操作, getType用mimetypes
- Context: getResources/getAssets/getString/getColor 委托真实Resources
- Bitmap.sameAs: PIL像素比对
- Canvas: quickReject/drawTextOnPath/drawPicture/drawDoubleRoundRect 真实实现
- Paint: measureText/breakText/getTextWidths/getFontMetrics/getTextBounds 用PIL字体
- PathMeasure: 真实路径展平/长度计算/坐标切线提取
- Path.op/Region.op: 布尔运算
- Camera: 3D变换矩阵计算
- SystemClock.setCurrentTimeMillis: date -s命令
- Environment.isExternalStorageRemovable: /proc/mounts检查
- Process.myUid: os.getuid()
- PowerManager.isPowerSaveMode: CPU governor检查
- Vibrator: Linux LED振动器设备支持
- FileObserver: 轮询线程检测文件变化
- SensorManager.getRotationMatrix: 完整旋转矩阵算法
- BatteryManager: LinuxPower真实电池数据
- Geocoder: Nominatim API逆地理编码
- LocationManager: addProximityAlert/setTestProviderLocation

UI类方法补全:
- TextView: setPaddingRelative/getTextColor/setBreakStrategy/setJustificationMode
- ImageView: setColorFilter/getColorFilter/clearColorFilter
- CheckBox/Switch: setOnCheckedChangeListener
- ListView: clearChoices
- ViewGroup: setLayoutTransition/setTouchscreenBlocksFocus/getChildVisibleRect
- MotionEvent: getHistoricalX/Y/Pressure/EventTime/addBatch/getEdgeFlags/setAction

Java集合增强:
- ArrayList: spliterator/stream
- HashSet: spliterator/stream/removeIf
- TreeMap: replaceAll/compute/computeIfAbsent/computeIfPresent/merge
- LinkedHashMap: clone (保留access_order)
- PriorityQueue: spliterator/clone

Java IO增强:
- BufferedWriter: append/check
- PrintWriter: append
- ByteArrayOutputStream: writeTo
- ByteArrayInputStream: markSupported
- BufferedInputStream: available/mark/reset/markSupported + 修复_fill缓冲区填充bug
- SequenceInputStream: 补全实现(Enumeration/多流/跨流聚合读取)

修复:
- ViewGroup.addView: 合并重复定义为智能参数分派
- view_ext.ViewGroup: 继承view.ViewGroup
- view_ext.KeyEvent: 继承view.KeyEvent
- hardware_sensor_ext.SensorManager: 继承hardware.SensorManager
- app_fragment: 使用java.lang.IllegalStateException
- content_intent.Intent: setData/getScheme正确从Uri提取scheme
- __init__.py: 补全Fragment/KeyEvent/MotionEvent/TrafficStats/RecyclerView/TreeMap/Vibrator等导出

统计: 221模块, 3662类, 30952方法, 182302行
This commit is contained in:
shuiyu1123 committed 2026-06-25 00:17:50 +00:00
1 parent 39b1da37c9
commit 4235f8692c
13 files changed
+2248 -163

No files matched your search

+70
View File
@@ -365,6 +365,39 @@ class TextView(View):
def setPadding(self, left: int, top: int, right: int, bottom: int):
super().setPadding(left, top, right, bottom)
def setPaddingRelative(self, start: int, top: int, end: int, bottom: int):
self._padding_left = start
self._padding_top = top
self._padding_right = end
self._padding_bottom = bottom
# ─── text color getter ───────────────────────────────────
def getTextColor(self) -> int:
return self._text_color
# ─── selection action mode ───────────────────────────────
def setCustomSelectionActionModeCallback(self, callback: Any):
self._custom_selection_action_mode_callback = callback
def getCustomSelectionActionModeCallback(self) -> Any:
return getattr(self, '_custom_selection_action_mode_callback', None)
# ─── break / justification strategy ──────────────────────
def setBreakStrategy(self, break_strategy: int):
self._break_strategy = break_strategy
def getBreakStrategy(self) -> int:
return getattr(self, '_break_strategy', 0)
def setJustificationMode(self, justification_mode: int):
self._justification_mode = justification_mode
def getJustificationMode(self) -> int:
return getattr(self, '_justification_mode', 0)
def onMeasure(self, width_measure_spec: int, height_measure_spec: int):
from .view import MeasureSpec
w = MeasureSpec.getSize(width_measure_spec)
@@ -456,6 +489,12 @@ class CheckBox(Button):
def toggle(self):
self._checked = not self._checked
def setOnCheckedChangeListener(self, listener: Optional[Callable]):
self._on_checked_change_listener = listener
def getOnCheckedChangeListener(self) -> Optional[Callable]:
return getattr(self, '_on_checked_change_listener', None)
def performClick(self) -> bool:
self.toggle()
return super().performClick()
@@ -607,6 +646,22 @@ class Switch(Button):
def getTextOff(self) -> str:
return self._text_off
# ─── checked change listener ─────────────────────────────
def setOnCheckedChangeListener(self, listener: Optional[Callable]):
self._on_checked_change_listener = listener
def getOnCheckedChangeListener(self) -> Optional[Callable]:
return getattr(self, '_on_checked_change_listener', None)
# ─── switch text appearance ──────────────────────────────
def setSwitchTextAppearance(self, context: Any, resid: int):
self._switch_text_appearance = resid
def getSwitchTextAppearance(self) -> int:
return getattr(self, '_switch_text_appearance', 0)
def performClick(self) -> bool:
self.toggle()
return super().performClick()
@@ -694,6 +749,17 @@ class ImageView(View):
def getCropToPadding(self) -> bool:
return self._crop_to_padding
# ─── color filter ─────────────────────────────────────────
def setColorFilter(self, color_filter: Any):
self._color_filter = color_filter
def getColorFilter(self) -> Any:
return getattr(self, '_color_filter', None)
def clearColorFilter(self):
self._color_filter = None
def setBaseline(self, baseline: int):
self._baseline = baseline
@@ -1116,6 +1182,10 @@ class ListView(AdapterView):
def getCheckItemIds(self) -> List[int]:
return list(self._checked_id_positions.keys())
def clearChoices(self):
self._checked_item_positions.clear()
self._checked_id_positions.clear()
class GridView(AdapterView):
"""GridView — 网格视图"""