Android Open Source - MATSOL-Android Matrix Display Activity






From Project

Back to project page MATSOL-Android.

License

The source code is released under:

GNU General Public License

If you think the Android project MATSOL-Android listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

/*****************************
You may use, distribute and copy MATSOL for Android under the terms of GNU
General Public License version 3, which is displayed below.
******************************///from w w  w.  jav a  2 s  .  c  o m

package gidaibero.android.matsol;

import gidaibero.android.matsol.MatrixInputActivity;
import MatrixSolver.Determinant;
import MatrixSolver.LinearEquationSystem;
import MatrixSolver.Matrix;

import android.app.Activity;
import android.os.Bundle;
import android.app.ActionBar;
import android.view.Menu;
import android.view.MenuItem;
import android.view.MenuInflater;
import android.view.View;
import android.view.View.MeasureSpec;

import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
import android.content.Intent;
import android.support.v4.app.NavUtils;

import android.widget.TableLayout;
import android.widget.TableRow;
import android.widget.TableRow.LayoutParams;

import android.util.Log;
import android.widget.Toast;

public class MatrixDisplayActivity extends Activity
{
    private int target;
    private int height,width;
    private TextView[] textViewArray;
    private float[][] matrix;
    private float[] results;
    private TableLayout matrixTable;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        
        target = R.id.matrix_button;

        int currentIndex;
        TableRow tableRow;
        // Define the layout. 
        setContentView(R.layout.matrix_display_view);

        // Parse the values from the parent 
        Intent intent = getIntent();
        this.height = intent.getIntExtra(MatrixInputActivity.MATRIX_SIZE,5);
        this.matrix = new float[this.height][];
        for(int i=0;i<this.height;i++){
            this.matrix[i] = intent.getFloatArrayExtra(
                    MatrixInputActivity.MATRIX_VALUES+i);
        }
        this.results = intent.getFloatArrayExtra(
                MatrixInputActivity.MATRIX_RESULTS);
        // the we are always a linear equation 
        this.width = this.height + 1;

        // initialize the array
        this.textViewArray = new TextView[this.width*this.height];

        // get the table view to draw in it
        matrixTable = (TableLayout)findViewById(R.id.matrix_display_table);

        // traverse rows
        for(int i=0;i<this.height;i++){
            //traverse each element of the row
            tableRow = new TableRow(this);
            for(int j=0;j<this.width;j++){
                currentIndex = i*this.width + j; // this points to the location of t                                                                      // editText in the matrix
                this.textViewArray[currentIndex] = new TextView(this);
                this.textViewArray[currentIndex].setLayoutParams(
                        new LayoutParams(
                            LayoutParams.FILL_PARENT,
                            LayoutParams.WRAP_CONTENT)
                        );
                this.textViewArray[currentIndex].setPadding(5, 5, 5, 5);
                if(j==this.width-1){
                    this.textViewArray[currentIndex].setText(" " + this.results[i]);
                }else{
                    this.textViewArray[currentIndex].setText(" " + this.matrix[i][j]);
                }
                tableRow.addView(this.textViewArray[currentIndex]);
            }
            textViewArray[0].measure(MeasureSpec.UNSPECIFIED,
                        MeasureSpec.UNSPECIFIED);
            // this will add target and position-specific views to hint the
            // user of what we are doing
            tableRow = decorateTableRow(tableRow, 
                        textViewArray[0].getMeasuredHeight(),
                        textViewArray[0].getMeasuredWidth(),
                        i);


            matrixTable.addView(tableRow, new TableLayout.LayoutParams(
                        LayoutParams.FILL_PARENT,
                        LayoutParams.WRAP_CONTENT));

        }

    }
    private TableRow decorateTableRow(TableRow tableRow, int height,
            int width, int row){
        ImageView leftImageView = new ImageView(this);
        ImageView rightImageView = new ImageView(this); 
        leftImageView.setBackgroundResource(R.drawable.left_edge);
        rightImageView.setBackgroundResource(R.drawable.right_edge);
        if(target==R.id.matrix_button){
            // we need to allocate two more elements
            ImageView insideLeftImageView = new ImageView(this);
            ImageView insideRightImageView = new ImageView(this);
            if(row==0){ // should change decorators for top decorators
                leftImageView.setBackgroundResource(
                        R.drawable.top_left_edge);
                rightImageView.setBackgroundResource(
                        R.drawable.top_right_edge);
                insideLeftImageView.setBackgroundResource(
                        R.drawable.top_right_edge); // this is not a mistake
                insideRightImageView.setBackgroundResource(
                        R.drawable.top_left_edge);
            }else if(row == this.height-1){
                leftImageView.setBackgroundResource(
                        R.drawable.bottom_left_edge);
                rightImageView.setBackgroundResource(
                        R.drawable.bottom_right_edge);
                insideLeftImageView.setBackgroundResource(
                        R.drawable.bottom_right_edge); // this is not a mistake
                insideRightImageView.setBackgroundResource(
                        R.drawable.bottom_left_edge);

            }else{
                insideRightImageView.setBackgroundResource(
                        R.drawable.left_edge);
                insideLeftImageView.setBackgroundResource(
                        R.drawable.right_edge);
            }
            insideLeftImageView.setLayoutParams(new LayoutParams(
                        height,width/5));
            insideRightImageView.setLayoutParams(new LayoutParams(
                        height,width/5));
            insideRightImageView.getLayoutParams().height = height;
            insideLeftImageView.getLayoutParams().height = height;
            insideRightImageView.getLayoutParams().width = width/5;
            insideLeftImageView.getLayoutParams().width = width/5;
            tableRow.addView(insideLeftImageView,this.width-1);
            tableRow.addView(insideRightImageView,this.width);

        }else{
            // this is a determinant button
        }
        leftImageView.setLayoutParams(new LayoutParams(
                    height,width/10));
        rightImageView.setLayoutParams(new LayoutParams(
                    height,width/10));
        leftImageView.getLayoutParams().height = height;
        rightImageView.getLayoutParams().height = height;
        leftImageView.getLayoutParams().width = width/5;
        rightImageView.getLayoutParams().width = width/5;
        tableRow.addView(leftImageView,0);
        tableRow.addView(rightImageView);
        return tableRow;
    }
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
        // Respond to the action bar's Up/Home button
            case android.R.id.home:
                //NavUtils.navigateUpFromSameTask(this);
                finish();
                return true;
        }
        return super.onOptionsItemSelected(item);
    }

}




Java Source Code List

MatrixSolver.Determinant.java
MatrixSolver.ElementOutOfRangeException.java
MatrixSolver.ImpossibleSolutionException.java
MatrixSolver.LinearEquationSystem.java
MatrixSolver.MatrixSolverException.java
MatrixSolver.Matrix.java
MatrixSolver.TestMatrix.java
MatrixSolver.UnsquaredMatrixException.java
gidaibero.android.matsol.About.java
gidaibero.android.matsol.BaseConverterActivity.java
gidaibero.android.matsol.MainWindow.java
gidaibero.android.matsol.MatrixDimensionPicker.java
gidaibero.android.matsol.MatrixDisplayActivity.java
gidaibero.android.matsol.MatrixInputActivity.java
gidaibero.android.matsol.RescalcDialog.java