К основному контенту

Android+ExtJs

I wanted to have a combine solution with Android+ExtJs.



Step1: get ExtJs.

Step2: prepare (or copy-past from an examle) some chart. Actually it needs 4 files Chart.html, Chart.js, ext-all.css, ext-all.js.

Chart.html
<link href="ext-all.css" type="text/css" rel="stylesheet">
<script type="text/javascript" src="ext-all.js"></script>
<script type="text/javascript" src="Chart.js"></script>

Chart.js


Ext.require('Ext.chart.*');
Ext.require(['Ext.data.*', 'Ext.layout.container.Fit', 'Ext.window.MessageBox']);

Ext.onReady(function() {

 window.staticData = [
  {name: 'January',data1: 47},
  {name: 'February',data1: 20},
  {name: 'March',data1: 67},
  {name: 'April',data1: 10}
 ];
 
    var store1 = Ext.create('Ext.data.JsonStore', {
        fields: ['name', 'data1'],
        data: staticData
    });

    window.chart1 = Ext.create('Ext.chart.Chart',{
  animate: false,
  store: store1,
  axes: [
   {
    type: 'Numeric',
    minimum: 0,
    position: 'left',
    fields: ['data1'],
    title: false,
    grid: true,
    label: {
     renderer: Ext.util.Format.numberRenderer('0,0'),
     font: '10px Arial'
    }
   }, {
    type: 'Category',
    position: 'bottom',
    fields: ['name'],
    title: false,
    label: {
     font: '11px Arial',
     renderer: function(name) {
      return name.substr(0, 3) + ' 07';
     }
    }
   }
  ],
  series: [{
   type: 'line',
   axis: 'left',
   xField: 'name',
   yField: 'data1',
   style: {
    fill: '#38B8BF',
    stroke: '#38B8BF',
    'stroke-width': 3
   },
   markerConfig: {
    type: 'circle',
    size: 4,
    radius: 4,
    'stroke-width': 0,
    fill: '#38B8BF',
    stroke: '#38B8BF'
   }
  }]
 });
 
    Ext.create('Ext.Viewport', {
        layout: 'fit',
        items: window.chart1,
  renderTo: Ext.getBody()
    });
 
});


Step3: load "Step3" into android project.



activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="match_parent"
 android:layout_height="match_parent"
 >

 <WebView
  android:id="@+id/webView1"
  android:layout_width="match_parent"
  android:layout_height="match_parent" />

 <Button
  android:id="@+id/button1"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:layout_alignParentRight="true"
  android:layout_alignParentTop="true"
  android:text="@string/hello_world" />

</RelativeLayout>


Step4: run the chart from Android.

MainActivity

public class MainActivity extends Activity {

  private WebView webView;
  private Button btn;

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);

  btn = (Button) findViewById(R.id.button1);
  btn.setOnClickListener(updChart);

  webView = (WebView) findViewById(R.id.webView1);
  webView.getSettings().setJavaScriptEnabled(true);
  webView.loadUrl("file:///android_asset/Chart.html");
 }

    OnClickListener updChart = new OnClickListener() {
        public void onClick(View v) {
        //update the chart data.      
        webView.loadUrl("javascript:chart1.store.loadData([{name: 'January',data1: 35},{name: 'February',data1: 56},{name: 'March',data1: 17},{name: 'April',data1: 80}]);");
        }
    };

}

my result on a real device.

 


take some beer! :-)

Популярные сообщения из этого блога

протоколы сериала Путешественники (Travelers)

смотрю сериал Travelers. в какой-то момент мне надоело слышать упоминание разных протоколов, и я решил найти список. оказалось, что про этот сериал очень мало в рунете, несмотря на высокую оценку в кинопоиске . но есть статья на английском . Протокол Альфа Высший приоритет. Протокол Альфа требует, чтобы все Путешественники сделали все возможное для решения данной проблемы. Протокол 1 Миссия на первом месте. Это означает, что нужно все отложить в сторону. Путешественник должен быть предан миссии, и это должно быть самым важным. Завершение миссии - единственная задача, которая действительно имеет значение. Все, что вы делаете как Путешественник, должно как-то способствовать достижению цели миссии. Протокол 2 Никогда не подвергайте опасности свое прикрытие. состоит из двух частей: Не называйте друг друга будущими именами «Оставьте будущее в прошлом». Не используйте будущие знания для личной выгоды. Любая из этих вещей может означать, что люди узнают, что с вами что-то не так, чт...

android эмулятор, картинка в камере

 редко пишу о рабочих моментах. но тут очень специфичная штука, которая редко бывает надо, но про нее почти нет ничего. вводная: разрабатываем андроид-приложение в котором используется камера. работа на виртуальной машине - там нет своей камеры. если включить камеру в эмуляторе - она показывает комнату, где есть телик и стол, на которые можно наложить свои изображения. и вроде как есть управление перемещением. https://developers.google.com/ar/develop/java/emulator но я долго мучался и так и не смог победить эту комнату. :-) поэтому нам подходит другой путь (третий ответ по этому линку) https://stackoverflow.com/questions/13818389/android-emulator-camera-custom-image 1) идем в C:\Users\{user}\AppData\Local\Android\Sdk\emulator\resources\ 2) закидываем туда свою картинку custom.png 3) меняем Toren1BD.posters на такое poster custom size 2 2 position 0 0 -1.8 rotation 0 0 0 default custom.png 4) включаем камеру в эмуляторе - наша картинка висит прямо перед нами. горячая замена тож...

Символика цвета в Древнем Китае

http://diary.ru/~Lycorias/p31554935.htm М.Е. Кравцова Цветовая символика сводится к пяти основным цветам, которые образуют нормативную для китайской культуры хроматическую гамму - "пять цветов" (у сэ ), имеющую однозначную космологическую семантику. В нее входят: желтый (хуан ), сине-зеленый (цин ), красный (хун ), белый (бай ) и черный (хэй ), цвета, соотносящиеся соответственно с Центром, Востоком, Югом, Западом и Севером. Эта хроматическая гамма существовала уже в иньскую эпоху, о чем свидетельствуют находки специальных приборов для красок - тулу . Они представляли собой бронзовые предметы квадратной формы с четырьмя углублениями по углам, дополненными в некоторых случаях круглым отверстием посередине. В углублениях сохранились остатки красок, достаточные для проведения химических анализов по их реконструкции.