Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/justasm/WindowView
Android ImageView you pan by tilting your device.
https://github.com/justasm/WindowView
android device-tilt imageview
Last synced: about 6 hours ago
JSON representation
Android ImageView you pan by tilting your device.
- Host: GitHub
- URL: https://github.com/justasm/WindowView
- Owner: justasm
- License: mit
- Created: 2014-08-20T20:15:47.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2016-06-18T18:45:38.000Z (over 8 years ago)
- Last Synced: 2024-03-23T19:10:26.169Z (8 months ago)
- Topics: android, device-tilt, imageview
- Language: Java
- Homepage:
- Size: 2.48 MB
- Stars: 266
- Watchers: 5
- Forks: 44
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
- awesome-android-ui - https://github.com/justasm/WindowView
- awesome-android-ui - https://github.com/justasm/WindowView
README
WindowView
==========*Window as in windowsill.*
![Tilting to pan images.](/sample/sample_in_action.gif)
An Android `ImageView` that can be panned around by tilting your device, as if you were looking
through a window.Usage
-----
Add it to your project using Gradle:```groovy
compile 'com.jmedeisis:windowview:0.2.0'
```Use in place of an `ImageView`. Example XML layout file:
```xml
```
Please refer to the included [sample application project](sample/) for a complete example.
Configuration
-------------
You will typically want to configure the following attributes for the `WindowView` class:- `wwv_max_pitch` - maximum angle (in degrees) from origin for vertical device tilts.
*Default - 30°*- `wwv_max_roll` - maximum angle (in degrees) from origin for horizontal device tilts.
*Default - 30°*- `wwv_vertical_origin` - (in degrees) when device pitch equals this value, the image is centered
vertically. *Default - 0°*- `wwv_horizontal_origin` - (in degrees) when device roll equals this value, the image is centered
horizontally. *Default - 0°*You may also want to configure more advanced attributes:
- `wwv_orientation_mode` - `Absolute` or `Relative` (default). Specifies whether device tilt should
be tracked with respect to `Absolute` world coordinates (i.e. pitch, roll w.r.t. ground plane) or
with respect to the device orientation when `WindowView` is created, which `WindowView` refers to as
the 'orientation origin'. If using the latter, i.e. `Relative`, you may use
`WindowView#resetOrientationOrigin(boolean)` to set the orientation origin to that of the device
when the method is called.- `wwv_translate_mode` - `Constant` or `Proportional` (default). Specifies how much the image is
translated in response to device tilt. If `Proportional`, the image moves within the full range
defined by `max_pitch` / `max_roll`, with the extremities of the image visible when device pitch /
roll is at those angles. If `Constant`, the image moves a constant amount per unit of tilt which is
defined by `max_constant_translation`, achieved when pitch / roll are at `max_pitch` / `max_roll`.- `wwv_max_constant_translation` - see above. *Default - 150dp*
- `wwv_sensor_sampling_period` - the desired rate of sensor events. In microseconds or one of
`fast`, `normal` (default) or `slow`. If using microsecond values, higher values result in slower
sensor updates. Directly related to the rate at which `WindowView` updates in response to device
tilt.- `wwv_tilt_sensor_mode` - `Manual` or `Automatic` (default). Specifies whether `WindowView` is
responsible for when tilt motion tracking starts and stops. If `Automatic`, `WindowView` works out
of the box and requires no extra configuration. If `Manual`, you must explicitly start and stop tilt
motion tracking. You have two options:
* Use `WindowView#startTiltTracking()` and `WindowView#stopTiltTracking()`, e.g. in your
`Activity`'s `onResume()` and `onPause()`, respectively.* Use `WindowView#attachTiltTracking(TiltSensor)` and
`WindowView#detachTiltTracking(TiltSensor)`. This approach is recommended when using multiple
`WindowView`s in a single logical layout. The externally managed `TiltSensor` should be started
and stopped using `TiltSensor#startTracking(int)` and `TiltSensor#stopTracking()` as appropriate.Example configuration:
```xml
```
Limitations
-----------
- Only supports the CENTER_CROP scale type.
- Works for API levels 9+.Development
-----------
Pull requests are welcome and encouraged for bugfixes and features such as:- adaptive smoothing filters tuned for different sensor accuracy and rates
- bi-directional image panningLicense
-------
WindowView is licensed under the terms of the [MIT License](LICENSE.txt).