< Previous                Next >

 

[Android]Sending View to Back or Front

[日本語]

 

I will introduce how to change stacking order of view as below picture.

 

Environment : Android Studio 2.2.1, API 19

 

In the case of Android, remove view from layout and set view to layout again.

Then index is set 0 and view move to back. Index is not set and view move to front.

 

Example

package net.studioks.sample1;

 

import android.app.Activity;

import android.graphics.Color;

import android.graphics.drawable.GradientDrawable;

import android.os.Bundle;

import android.view.Gravity;

import android.view.View;

import android.widget.Button;

import android.widget.RelativeLayout;

import android.widget.TextView;

import static android.support.v7.widget.ListPopupWindow.WRAP_CONTENT;

 

public class sample1 extends Activity implements View.OnClickListener {

  private TextView textView1;

  private TextView textView2;

  private Button button1;

  private Button button2;

  RelativeLayout relativeLayout;

 

  @Override

  public void onCreate(Bundle bundle){

    super.onCreate(bundle);

    relativeLayout = new RelativeLayout(this);

    setContentView(relativeLayout);

 

    textView1 = new TextView(this);

    textView1.setText("Text1");

    GradientDrawable gradient_textView1 = new GradientDrawable();

    gradient_textView1.setColor(Color.BLUE);

    textView1.setBackground(gradient_textView1);

    RelativeLayout.LayoutParams param_textView1 = new RelativeLayout.LayoutParams(300, 300);

    param_textView1.leftMargin = 0;

    param_textView1.topMargin = 0;

    param_textView1.addRule(RelativeLayout.ALIGN_TOP);

    relativeLayout.addView(textView1,param_textView1);

 

    textView2 = new TextView(this);

    textView2.setText("Text2");

    GradientDrawable gradient_textView2 = new GradientDrawable();

    gradient_textView2.setColor(Color.YELLOW);

    textView2.setBackground(gradient_textView2);

    RelativeLayout.LayoutParams param_textView2 = new RelativeLayout.LayoutParams(300, 300);

    param_textView2.leftMargin = 50;

    param_textView2.topMargin = 50;

    param_textView2.addRule(RelativeLayout.ALIGN_TOP);

    relativeLayout.addView(textView2,param_textView2);

 

    button1 = new Button(this);

    button1.setId(1);

    button1.setText("Send Label1 to Back");

    button1.setGravity(Gravity.CENTER);

    button1.setPadding(0,0,0,0);

    button1.setTextColor(Color.WHITE);

    button1.setOnClickListener(this);

    GradientDrawable gradient_button1 = new GradientDrawable();

    gradient_button1.setColor(Color.BLUE);

    button1.setBackground(gradient_button1);

    RelativeLayout.LayoutParams param_button1 = new RelativeLayout.LayoutParams(200, 50);

    param_button1.leftMargin = 0;

    param_button1.topMargin = 400;

    param_button1.addRule(RelativeLayout.ALIGN_TOP);

    relativeLayout.addView(button1,param_button1);

 

    button2 = new Button(this);

    button2.setId(2);

    button2.setGravity(Gravity.CENTER);

    button2.setPadding(0,0,0,0);

    button2.setText("Send Label1 to Front");

    button2.setTextColor(Color.WHITE);

    button2.setOnClickListener(this);

    GradientDrawable gradient_button2 = new GradientDrawable();

    gradient_button2.setColor(Color.RED);

    button2.setBackground(gradient_button2);

    RelativeLayout.LayoutParams param_button2 = new RelativeLayout.LayoutParams(200, 50);

    param_button2.leftMargin = 210;

    param_button2.topMargin = 400;

    param_button2.addRule(RelativeLayout.ALIGN_TOP);

    relativeLayout.addView(button2,param_button2);

  }

 

  public void onClick(View v) {

    switch (v.getId()){

      case 1:

        //To Back

        relativeLayout.removeView(textView1);

        relativeLayout.addView(textView1,0);

        break;

      case 2:

        //To Front

        relativeLayout.removeView(textView1);

        relativeLayout.addView(textView1);

        break;

    }

  }

}

[Andorid]How to capture screen

[日本語]

 

I introduce how to capture screen on Android this time.

 

環境:Android Studio 2.2.1, API 19

 

You can capture screen every views on Android.

At first, use setDrawingCacheEnabled(true) and getDrawingCache, and you can get view's capture.

 

And you must use setDrawingCacheEnabled(false) after getting view's capture.

private View view1;

・・・・・・・・・・・・・・・・・

view1.setDrawingCacheEnabled(true);

Bitmap bmp = Bitmap.createBitmap(view1.getDrawingCache());

view1.setDrawingCacheEnabled(false);

 

Sample code is below.

Read More

[iOS]How to capture screen

[日本語]

 

I introduce how to capture screen and make a bitmap image on iOS this time.

 

Environment:Xcode 8.3, Swift 3

 

Sample code is below.

import UIKit

 

class ViewController: UIViewController {

  let label1:UILabel = UILabel()

  let imageView1:UIImageView = UIImageView()

  let button1:UIButton = UIButton()

 

  override func viewDidLoad() {

    super.viewDidLoad()

    // Do any additional setup after loading the view, typically from a nib.

    label1.frame = CGRect(x: 10, y: 20, width: 100, height: 100)

    label1.text = "Label1"

    label1.backgroundColor = UIColor.blue

    self.view.addSubview(label1)

 

    imageView1.frame = CGRect(x: 10, y: 125, width: 300, height: 300)

    imageView1.layer.borderWidth = 0.5

    imageView1.contentMode = .scaleAspectFit

    self.view.addSubview(imageView1)

 

    button1.frame = CGRect(x: 10, y: 430, width: 100, height: 50)

    button1.backgroundColor = UIColor.blue

    button1.layer.cornerRadius = 5

    button1.setTitle("Button1", for: .normal)

    button1.addTarget(self, action: #selector(self.touchUpButton1), for: .touchUpInside)

    self.view.addSubview(button1)

  }

 

  override func didReceiveMemoryWarning() {

    super.didReceiveMemoryWarning()

    // Dispose of any resources that can be recreated.

  }

 

  func touchUpButton1(){

    //Get context

    let rect = CGRect(x: 0, y: 0, width: self.view.frame.width, height: self.view.frame.height)

    UIGraphicsBeginImageContextWithOptions(rect.size, false, 0.0)

    let context: CGContext = UIGraphicsGetCurrentContext()!

 

    //Write screen's objects' info at context

    self.view.layer.render(in: context)

 

    //Get UIImage

    let capturedImage : UIImage = UIGraphicsGetImageFromCurrentImageContext()!

 

    //Close context

    UIGraphicsEndImageContext()

    imageView1.image = capturedImage

  }

}

At first, use UIGraphicsBeginImageContextWithOptions, and make context of bitmap for capturing screen.

And write screen's objects' info at context.("self.view.layer.render(in:context)")

 

And use UIGraphicsGetImageFromCurrentImageContext, and get UIImage from context.

At last, use UIGraphicsEndImageContext, and close context.

Journey to Ozu by Iyonadamonogatari

[日本語]

 

I went to Ozu City,Ehime Prefecture,Japan by "Iyonadamonogatari",a sightseeing train of JR Yosan Line.

Iyonadamonogatari has 4 types,Ozu-hen(going to Iyo Ozu Station from Matsuyama Station),Soukai-hen(going to Matsuyama Station from Iyo Ozu Station),Yahatahama-hen(going to Yahatahama Station from Matsuyama Station) and Dogo-hen(going to Matsuyama Station from Yahatahama Station), and all of them goes along Iyonada(the sea of Ehime).

You must buy a green ticket except for a railway-ticket for taking Iyonadamonogatari.

 

Inside of train

Read More

[Android]Sqlite Database Programming

[日本語]

 

You can use Sqlite for saving data on Android.

 

Environment: Android Studio 2.2.1, API 19

 

1.Preparation

Make class extended SqLiteOpenHelper and declare database layout.

private final static String DB_NAME = "sample1.db";

private final static String DB_TABLE = "SampleTable";

private final static int DB_VERSION = 1;

 

private class SampleDBHelper extends SQLiteOpenHelper {

  public SampleDBHelper(Context context) {

    super(context, DB_NAME, null, DB_VERSION);

  }

 

  @Override

  public void onCreate(SQLiteDatabase db) {

    db.execSQL("create table if not exists " + DB_TABLE + "(id text primary key,name text,type integer,image BLOB)");

  }

 

  @Override

  public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    if (newVersion == 2) {

      db.execSQL("alter table " + DB_TABLE + " add column newField integer default 0");

    }

  }

}

You can define table layout to use "Create Table" in onCreate method.

You can change table layout to use "Alter Table" in onUpgrade method, when application version is up.

 

When you want to save Bitmap data, define BLOB data type.

 

2.How to Insert data

Use getWritableDatabase method of class which is made by SQLiteOpenHelper, and you can get writable SQLiteDatabase class.
When you execute InsertOrThrow method of SQLiteDatabase class, and new data is inserted in Sqlite.

And you'd better not use Insert method of SQLiteDatabase class, because this method don't return Exception class when error occur.

private ImageView imageView1;

private Button buttonInsert;

RelativeLayout relativeLayout;

Context context;

 

@Override

public void onCreate(Bundle bundle) {

  super.onCreate(bundle);

  context = getApplicationContext();

  relativeLayout = new RelativeLayout(context);

  setContentView(relativeLayout);

 

  imageView1 = new ImageView(context);

  Bitmap bmp = BitmapFactory.decodeResource(getResources(),R.drawable.edit);

  imageView1.setImageBitmap(bmp);

  imageView1.setAdjustViewBounds(true);

  RelativeLayout.LayoutParams param1 = new RelativeLayout.LayoutParams(300, 300);

  param1.leftMargin = 10;

  param1.topMargin = 10;

  param1.addRule(RelativeLayout.ALIGN_TOP);

  relativeLayout.addView(imageView1,param1);

 

  buttonInsert = new Button(context);

  buttonInsert.setText("Insert");

  buttonInsert.setOnClickListener(new View.OnClickListener() {

    @Override

    public void onClick(View v) {

      execInsert();

    }

  });

  RelativeLayout.LayoutParams param2 = new RelativeLayout.LayoutParams(300, 150);

  param2.leftMargin = 10;

  param2.topMargin = 320;

  param2.addRule(RelativeLayout.ALIGN_TOP);

  relativeLayout.addView(buttonInsert,param2);

}

 

private void execInsert(){

  try{

    SampleDBHelper dbHelper = new SampleDBHelper(context);

    SQLiteDatabase db = dbHelper.getWritableDatabase();

 

    ContentValues values = new ContentValues();

    values.put("id","0000000001");

    values.put("name","Name-1");

    values.put("type",1);

 

    Bitmap bmp = ((BitmapDrawable)imageView1.getDrawable()).getBitmap();

    if (bmp != null) {

      ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();

      bmp.compress(Bitmap.CompressFormat.PNG, 100, byteArrayOutputStream);

      byte[] bytes = byteArrayOutputStream.toByteArray();

      values.put("image", bytes);

    }

    db.insertOrThrow(DB_TABLE,null,values);

  }catch(Exception e){

    Log.e("touchInsertButton",e.toString());

  }

}

Use ContentValues to set field names and values.

If you want to save Bitmap Data, you must change Bitmap to byte data type.

 

3.How to update data.

Use update method of SQLiteDatabase class, you can update data in Sqlite.

Read More

[iOS]Core Data Programming

[日本語]

 

You can do database programming by Core Data, O/R mapping tool for Sqlite, on iOS.

 

Environment: Xcode 8.3, Swift 3

 

1.Preparation

At first, Check "Use Core Data" when project is created.

And code of Core Data Objects are created in AppDelegate.

 

Next, select "[project name].xcdatamodeld" and define table layout.

 

To save UIImage, select "Binary Data" in Type and check "Allow External Storage". 

Read More

Grass Courts in Yugawara Town

[日本語]

 

I went to "bonnfemme", a pension in Yugawara Town, Kanagawa Prefecture, Japan, at the event planned by Tennis Shop LAFINO .
It has two grass tennis courts. 

 

The feel of a grass court is soft.

I snuggled down in grass court without even thinking.

 

When tennis ball bounced, the force of it got weak.

But the speed of tennis ball became quick, when we hit a serve or a slice. 
We had a hard time because tennis ball often took bad hops.

 

There are ant-hills and earthworms in grass courts.

Read More

Irises Screens of Nezu Museum

[日本語]

 

I went to Nezu Museum in Minami Aoyama, Tokyo, Japan.

Nezu Museum houses Japanese arts. And structures of Nezu Museum designed by Mr.Kengo Kuma, an architect of Japan, are in harmony with nature. 

 

Nezu Museum has a big Japanese garden.

There are a lot of plants and they are beautiful.
I think I am going to forget here is center of metropolitan area.

Read More 0 Comments

Matsuyama's tramcar and Botchan Ressha

[日本語]

 

The main public transportation of Matsuyama City is a tramcar.

This is Iyo Railway(it is also called "Iyotetsu") Matsuyama City Line.

 

This is a conventional type car.(Moha 50, Moha 2000)

 

This is a LRT type car.(Moha 2100)

Read More 0 Comments

< Previous                Next >