Вот как я решил проблему.
var obj = {
};
var field = "someouter.someinner.someValue";
var value = 123;
function _addField( obj, field, value )
{
// split the field into tokens
var tokens = field.split( '.' );
// if there's more than one token, this field is an object
if( tokens.length > 1 )
{
var subObj = tokens[0];
// define the object
if( obj[ subObj ] !== undefined ) obj[ subObj ] = {};
// call addfield again on the embedded object
var firstDot = field.indexOf( '.' );
_addField( obj[ subObj ], field.substr( firstDot + 1 ), value );
}
else
{
// no embedded objects, just field assignment
obj[ field ] = value;
}
}
_addField( obj, field, value );
_addField(obj, 'simpleString', 'string');
console.log( JSON.stringify( obj, null, 2 ) );
Создает следующий объект:
{
"someouter": {
"someinner": {
"someValue": 123
}
},
"simpleString": "string"
}
в вашей папке res создайте xml, например, назовите его rotate.xml и используйте этот код
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<rotate
android:duration="1000"
android:fromDegrees="0"
android:interpolator="@android:anim/overshoot_interpolator"
android:pivotX="50%"
android:pivotY="50%"
android:repeatCount="10"
android:toDegrees="360" />
</set>
, а затем в своей деятельности установите анимацию для вашего вида следующим образом
private void startAnimations() {
Animation anim = AnimationUtils.loadAnimation(this, R.anim.rotate);
yourView.startAnimation(anim);
}
после этого вы можете использовать метод startAnimation везде, где захотите, он будет запущен напрямую