Здесь рассказывается, как создать приложение, которое открывает сайты при нажатии на различные кнопки и меняет масштаб при нажатии на пункты меню. Предлагаю прочитать подборки статей, где рассказывается о создании предыдущих приложений. Предупреждаю, что файл AndroidManifest.xml сейчас "пишется" немного иначе, чем в предыдущие месяцы:
Создание простого Android-приложения
https://dzen.ru/suite/bb33d277-f171-4337-a4d3-58156dd16ec6?lang=ru
Создание 8-кнопочного Android-приложения
https://dzen.ru/suite/fef1c5b7-4284-44d9-9be3-aca8f7851fd2?lang=ru
Предлагаю ознакомиться с процессом создания приложения:
1. Создать в Android Studio новый проект (Empty Activity) под названием ScienceViewer.
2. В новом проекте выберите вкладку "manifests" и откройте файл AndroidManifest.xml;
В файле прописываем права:
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
android:usesCleartextTraffic="true"
3. Содержимое activity_main.xml должно быть таким:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/relative_layout"
tools:context=".MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/textView"
android:text="Swipe Gesture"
android:textSize="100sp"
android:textStyle="bold"
android:layout_centerInParent="true"
/>
<WebView
android:id="@+id/webview_id"
android:layout_width="match_parent"
android:layout_height="match_parent">
</WebView>
</RelativeLayout>
4. В файле MainActivity.java удалите все строки и вставьте:
package com.scienceviewer;
import androidx.appcompat.app.AppCompatActivity;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.GestureDetector;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.webkit.WebResourceError;
import android.webkit.WebResourceRequest;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.EditText;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;
import android.annotation.TargetApi;
import android.widget.LinearLayout;
import android.widget.Button;
import android.view.View;
public class MainActivity extends AppCompatActivity {
WebView webView;
int curLink=1;
int curLevel=0;
String LL="";
RelativeLayout relativeLayout;
TextView textView;
Button btnInfo1;
Button btnInfo2;
Button btnInfo3;
Button btnInfo4;
Button btnInfo5;
Button btnInfo6;
Button btnInfo7;
Button btnInfo8;
Button btnInfo9;
Button btnInfo10;
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.main_menu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
final Activity activity = this;
SharedPreferences sharedPref0 = activity.getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor0 = sharedPref0.edit();
// Handle item selection
switch (item.getItemId()) {
case R.id.menu_sc10:
webView.setInitialScale(10);
editor0.putInt(getString(R.string.saved_scale), 10);
editor0.apply();
return true;
case R.id.menu_sc25:
webView.setInitialScale(25);
editor0.putInt(getString(R.string.saved_scale), 25);
editor0.apply();
return true;
case R.id.menu_sc50:
webView.setInitialScale(50);
editor0.putInt(getString(R.string.saved_scale), 50);
editor0.apply();
return true;
case R.id.menu_sc100:
webView.setInitialScale(100);
editor0.apply();
return true;
case R.id.menu_sc150:
webView.setInitialScale(150);
editor0.putInt(getString(R.string.saved_scale), 150);
editor0.apply();
return true;
case R.id.menu_sc200:
webView.setInitialScale(200);
editor0.putInt(getString(R.string.saved_scale), 200);
editor0.apply();
return true;
case R.id.menu_sc300:
webView.setInitialScale(300);
editor0.putInt(getString(R.string.saved_scale), 300);
editor0.apply();
return true;
case R.id.menu_clear:
SharedPreferences sharedPref = getSharedPreferences("Selection", MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
editor.putString(getString(R.string.saved_links), "");
editor.apply();
case R.id.menu_settings:
openActivity2();
default:
return super.onOptionsItemSelected(item);
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
textView = new TextView(this); //findViewById(R.id.textView);
webView = new WebView(this);
webView.getSettings().setJavaScriptEnabled(true);
btnInfo1 = new Button(this);
btnInfo2 = new Button(this);
btnInfo3 = new Button(this);
btnInfo4 = new Button(this);
btnInfo5 = new Button(this);
btnInfo6 = new Button(this);
btnInfo7 = new Button(this);
btnInfo8 = new Button(this);
btnInfo9 = new Button(this);
btnInfo10 = new Button(this);
final Activity activity = this;
webView.setWebViewClient(new WebViewClient() {
@SuppressWarnings("deprecation")
@Override
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
Toast.makeText(activity, description, Toast.LENGTH_SHORT).show();
}
@TargetApi(android.os.Build.VERSION_CODES.M)
@Override
public void onReceivedError(WebView view, WebResourceRequest req, WebResourceError rerr) {
// Redirect to deprecated method, so you can use it in all SDK versions
onReceivedError(view, rerr.getErrorCode(), rerr.getDescription().toString(), req.getUrl().toString());
}
});
webView.loadUrl("http://tablepedia.com/en/20links.html");
webView.setInitialScale(200);
SharedPreferences sharedPref = getSharedPreferences("Selection", MODE_PRIVATE);
String actualJoin = sharedPref.getString(getString(R.string.saved_links), "");
final String[] splitted = actualJoin.split(";");
updateB();
LL=Integer.toString(splitted.length);
textView.setText("Elements: "+LL+" If elements > 20, you can swipe (inside this text field) right, left, down and up. If elements < 10 and links defined by user, only 4 buttons are visible.");
LinearLayout buttonsView = new LinearLayout(this);
buttonsView.setOrientation(LinearLayout.VERTICAL);
LinearLayout.LayoutParams lp2 = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); // Verbose!
lp2.setMargins(0, 0, 0, 0);
lp2.weight = 0.1f; // This is critical. Doesn't work without it.
LinearLayout.LayoutParams lpW = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT); // Verbose!
lpW.setMargins(10, 10, 10, 10);
lpW.weight = 1.0f; // This is critical. Doesn't work without it.
LinearLayout row = new LinearLayout(this);
row.setOrientation(LinearLayout.HORIZONTAL);
row.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT));
Button btnBack = new Button(this);
btnBack.setText("<---");
btnBack.setTextSize(14);
btnBack.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
webView.goBack();
}
});
btnBack.setHeight(160);
row.addView(btnBack, lp2);
btnInfo9.setTextSize(14);
btnInfo9.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (splitted.length>(curLevel+17)) webView.loadUrl(splitted[(curLevel+17)]); else webView.loadUrl("http://tablepedia.com/en/20links.html");
curLink=(17);
updateB();
}
});
btnInfo9.setHeight(160);
row.addView(btnInfo9, lp2);
btnInfo10.setTextSize(14);
btnInfo10.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (splitted.length>(curLevel+19)) webView.loadUrl(splitted[(curLevel+19)]); else webView.loadUrl("http://tablepedia.com/en/60links.html");
curLink=(19);
updateB();
}
});
btnInfo10.setHeight(160);
row.addView(btnInfo10, lp2);
Button btnForward = new Button(this);
btnForward.setText("--->");
btnForward.setTextSize(14);
btnForward.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
webView.goForward();
}
});
btnForward.setHeight(160);
row.addView(btnForward, lp2);
LinearLayout row2 = new LinearLayout(this);
row2.setOrientation(LinearLayout.HORIZONTAL);
row2.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT));
btnInfo1.setTextSize(14);
btnInfo1.setHeight(160);
btnInfo1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (splitted.length>(curLevel+1)) webView.loadUrl(splitted[(curLevel+1)]); else webView.loadUrl("https://en.wikipedia.org/wiki/Archimedes");
curLink=(1);
updateB();
}
});
row2.addView(btnInfo1, lp2);
btnInfo2.setTextSize(14);
btnInfo2.setHeight(160);
btnInfo2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (splitted.length>(curLevel+3)) webView.loadUrl(splitted[(curLevel+3)]); else webView.loadUrl("https://en.wikipedia.org/wiki/Aristotle");
curLink=(3);
updateB();
}
});
row2.addView(btnInfo2, lp2);
btnInfo3.setTextSize(14);
btnInfo3.setHeight(160);
btnInfo3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (splitted.length>(curLevel+5)) webView.loadUrl(splitted[(curLevel+5)]); else webView.loadUrl("https://en.wikipedia.org/wiki/Eratosthenes");
curLink=(5);
updateB();
}
});
row2.addView(btnInfo3, lp2);
btnInfo4.setTextSize(14);
btnInfo4.setHeight(160);
btnInfo4.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (splitted.length>(curLevel+7)) webView.loadUrl(splitted[(curLevel+7)]); else webView.loadUrl("https://en.wikipedia.org/wiki/Euclid");
curLink=(7);
updateB();
}
});
row2.addView(btnInfo4, lp2);
LinearLayout row3 = new LinearLayout(this);
row3.setOrientation(LinearLayout.HORIZONTAL);
row3.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT));
btnInfo5.setTextSize(14);
btnInfo5.setHeight(160);
btnInfo5.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (splitted.length>(curLevel+9)) webView.loadUrl(splitted[(curLevel+9)]); else webView.loadUrl("https://en.wikipedia.org/wiki/Galen");
curLink=(9);
updateB();
}
});
row3.addView(btnInfo5, lp2);
btnInfo6.setTextSize(14);
btnInfo6.setHeight(160);
btnInfo6.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (splitted.length>(curLevel+11)) webView.loadUrl(splitted[(curLevel+11)]); else webView.loadUrl("https://en.wikipedia.org/wiki/Plato");
curLink=(11);
updateB();
}
});
row3.addView(btnInfo6, lp2);
btnInfo7.setTextSize(14);
btnInfo7.setHeight(160);
btnInfo7.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (splitted.length>(curLevel+13)) webView.loadUrl(splitted[(curLevel+13)]); else webView.loadUrl("https://en.wikipedia.org/wiki/Pythagoras");
curLink=(13);
updateB();
}
});
row3.addView(btnInfo7, lp2);
btnInfo8.setTextSize(14);
btnInfo8.setHeight(160);
btnInfo8.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (splitted.length>(curLevel+15)) webView.loadUrl(splitted[(curLevel+15)]); else webView.loadUrl("https://en.wikipedia.org/wiki/Socrates");
curLink=(15);
updateB();
}
});
row3.addView(btnInfo8, lp2);
textView.setHeight(200);
if (splitted.length>19) buttonsView.addView(row, lp2);
if (splitted.length>19) buttonsView.addView(textView, lp2);
buttonsView.addView(webView, lpW);
buttonsView.addView(row2, lp2);
if (splitted.length>9) buttonsView.addView(row3, lp2);
setContentView(buttonsView, lpW);
relativeLayout = findViewById(R.id.relative_layout);
buttonsView.setOnTouchListener(new SwipeListener(textView));
}
public void openActivity2() {
Intent intent = new Intent(this, inputActivity.class);
startActivity(intent);
}
public void updateB() {
SharedPreferences sharedPref = getSharedPreferences("Selection", MODE_PRIVATE);
String actualJoin = sharedPref.getString(getString(R.string.saved_links), "");
final String[] splitted = actualJoin.split(";");
if (splitted.length>(curLevel+1)) {
btnInfo1.setText(splitted[(curLevel+0)]);
} else {
btnInfo1.setText("Archimedes");
}
if (splitted.length>(curLevel+2)) {
btnInfo2.setText(splitted[(curLevel+2)]);
} else {
btnInfo2.setText("Aristotle");
}
if (splitted.length>(curLevel+4)) {
btnInfo3.setText(splitted[(curLevel+4)]);
} else {
btnInfo3.setText("Eratosthenes");
}
if (splitted.length>(curLevel+6)) {
btnInfo4.setText(splitted[(curLevel+6)]);
} else {
btnInfo4.setText("Euclid");
}
if (splitted.length>(curLevel+8)) {
btnInfo5.setText(splitted[(curLevel+8)]);
} else {
btnInfo5.setText("Galen");
}
if (splitted.length>(curLevel+10)) {
btnInfo6.setText(splitted[(curLevel+10)]);
} else {
btnInfo6.setText("Plato");
}
if (splitted.length>(curLevel+12)) {
btnInfo7.setText(splitted[(curLevel+12)]);
} else {
btnInfo7.setText("Pythagoras");
}
if (splitted.length>(curLevel+14)) {
btnInfo8.setText(splitted[(curLevel+14)]);
} else {
btnInfo8.setText("Socrates");
}
if (splitted.length>(curLevel+16)) {
btnInfo9.setText(splitted[(curLevel+16)]);
} else {
btnInfo9.setText("20links");
}
if (splitted.length>(curLevel+18)) {
btnInfo10.setText(splitted[(curLevel+18)]);
} else {
btnInfo10.setText("60links");
}
LL=Integer.toString((curLevel+curLink-1)/2+1);
textView.setText(LL);
}
private class SwipeListener implements View.OnTouchListener {
GestureDetector gestureDetector;
SharedPreferences sharedPref = getSharedPreferences("Selection", MODE_PRIVATE);
String actualJoin = sharedPref.getString(getString(R.string.saved_links), "");
final String[] splitted = actualJoin.split(";");
SwipeListener(View view) {
final int threshold = 50;
final int velocity_threshold = 50;
GestureDetector.SimpleOnGestureListener listener =
new GestureDetector.SimpleOnGestureListener() {
@Override
public boolean onDown(MotionEvent e) {
return true; //super.onDoubleTap(e);
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
//
float xDiff = e2.getX() - e1.getX();
float yDiff = e2.getY() - e1.getY();
try {
if (Math.abs(xDiff) > Math.abs(yDiff)) {
if (Math.abs(xDiff) > threshold
&& Math.abs(velocityX) > velocity_threshold) {
if (xDiff > 0) {
curLink=curLink-2;
if (curLink<0) {
curLink=curLink+20;
curLevel=curLevel-20;
}
if (curLink>0) webView.loadUrl(splitted[curLevel+curLink]);
//LL=Integer.toString(curLevel+curLink);
//textView.setText(LL);
} else {
curLink=curLink+2;
if (curLink>20) {
curLink=curLink-20;
curLevel=curLevel+20;
}
if (curLink>0) webView.loadUrl(splitted[curLevel+curLink]);
//LL=Integer.toString(curLevel+curLink);
//textView.setText(LL);
}
updateB();
return true;
}
} else {
if (Math.abs(yDiff) > threshold
&& Math.abs(velocityY) > velocity_threshold) {
if (yDiff > 0) {
curLevel=curLevel-20;
if (curLevel<0) curLevel=curLevel+20;
//LL=Integer.toString(curLevel+curLink);
//textView.setText(LL);
if (curLink>0) webView.loadUrl(splitted[curLevel+curLink]);
} else {
curLevel=curLevel+20;
if ((splitted.length-20)<(curLevel)) curLevel=curLevel-20;
//LL=Integer.toString(curLevel+curLink);
//textView.setText(LL);
if (curLink>0) webView.loadUrl(splitted[curLevel+curLink]);
//if (curLev>20) curLink=curLink-20;
//if (curLink>0) webView.loadUrl(splitted[curLink]);
}
updateB();
return true;
}
}
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
};
gestureDetector =new GestureDetector(listener);
view.setOnTouchListener(this);
}
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
return gestureDetector.onTouchEvent(motionEvent); //false; //super.onDoubleTap(e);
}
}
}
5. Создайте файл main_menu.xml в подкаталоге menu каталога res:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/menu_sc10"
android:title="@string/menu_sc10" />
<item android:id="@+id/menu_sc25"
android:title="@string/menu_sc25" />
<item android:id="@+id/menu_sc50"
android:title="@string/menu_sc50" />
<item android:id="@+id/menu_sc100"
android:title="@string/menu_sc100" />
<item android:id="@+id/menu_sc150"
android:title="@string/menu_sc150" />
<item android:id="@+id/menu_sc200"
android:title="@string/menu_sc200" />
<item android:id="@+id/menu_sc300"
android:title="@string/menu_sc300" />
<item android:id="@+id/menu_clear"
android:title="@string/menu_clear" />
<item android:id="@+id/menu_settings"
android:title="@string/menu_settings" />
</menu>
6. Содержимое файла strings.xml должно быть таким:
<resources>
<string name="app_name">ScienceViewer</string>
<string name="menu_sc10">10%</string>
<string name="menu_sc25">25%</string>
<string name="menu_sc50">50%</string>
<string name="menu_sc100">100%</string>
<string name="menu_sc150">150%</string>
<string name="menu_sc200">200%</string>
<string name="menu_sc300">300%</string>
<string name="menu_clear">ClearUserLinks</string>
<string name="menu_settings">Settings</string>
<string name="saved_scale">save_high</string>
<string name="saved_links">saved_links</string>
</resources>
7. Создайте новый Activity под названием "inputActivity" через клик правой кнопки мыши на левой панели, при этом будет создан файл activity_input.xml
Удалите из файла все строки и вставьте эти:
package com.scienceviewer;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
public class inputActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_input);
LinearLayout buttonsView = new LinearLayout(this);
buttonsView.setOrientation(LinearLayout.VERTICAL);
LinearLayout.LayoutParams lp2 = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); // Verbose!
lp2.setMargins(0, 0, 0, 0);
lp2.weight = 0.1f; // This is critical. Doesn't work without it.
LinearLayout.LayoutParams lpW = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); // Verbose!
lpW.setMargins(10, 10, 10, 10);
lpW.weight = 0.1f; // This is critical. Doesn't work without it.
LinearLayout row = new LinearLayout(this);
row.setOrientation(LinearLayout.HORIZONTAL);
row.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT));
LinearLayout row2 = new LinearLayout(this);
row2.setOrientation(LinearLayout.HORIZONTAL);
row2.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT));
LinearLayout row7 = new LinearLayout(this);
row7.setOrientation(LinearLayout.HORIZONTAL);
row7.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT));
final EditText txtMulti = new EditText(this);
txtMulti.setMaxLines(10);
txtMulti.setText("Archimedes\nhttps://en.wikipedia.org/wiki/Archimedes\n\nAristotle\nhttps://en.wikipedia.org/wiki/Aristotle\n\nEratosthenes\nhttps://en.wikipedia.org/wiki/Eratosthenes\n\nEuclid\nhttps://en.wikipedia.org/wiki/Euclid\n\nGalen\nhttps://en.wikipedia.org/wiki/Galen\n\nPlato\nhttps://en.wikipedia.org/wiki/Plato\n\nPythagoras\nhttps://en.wikipedia.org/wiki/Pythagoras\n\nSocrates\nhttps://en.wikipedia.org/wiki/Socrates\n\n20links\nhttp://tablepedia.com/en/20links.html\n\n60links\nhttp://tablepedia.com/en/60links.html");
row7.addView(txtMulti, lp2);
Button btnExit = new Button(this);
btnExit.setText("Exit");
btnExit.setTextSize(12);
btnExit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
openActivity1();
}
});
row.addView(btnExit, lp2);
Button btnSave = new Button(this);
btnSave.setText("Save");
btnSave.setTextSize(12);
btnSave.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//mainF();
SharedPreferences sharedPref = getSharedPreferences("Selection", MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPref.edit();
String message1 = txtMulti.getText().toString().replaceAll("\\n", ";")+";";
message1 = message1.replaceAll(";;;;;", ";");
message1 = message1.replaceAll(";;;;;", ";");
message1 = message1.replaceAll(";;;", ";");
message1 = message1.replaceAll(";;", ";");
editor.putString(getString(R.string.saved_links), message1);
editor.apply();
}
});
row.addView(btnSave, lp2);
Button btnLinks20 = new Button(this);
btnLinks20.setText("20links");
btnLinks20.setTextSize(12);
btnLinks20.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
txtMulti.setText("Archimedes\nhttps://en.wikipedia.org/wiki/Archimedes\n\nAristotle\nhttps://en.wikipedia.org/wiki/Aristotle\n\nEratosthenes\nhttps://en.wikipedia.org/wiki/Eratosthenes\n\nEuclid\nhttps://en.wikipedia.org/wiki/Euclid\n\nGalen\nhttps://en.wikipedia.org/wiki/Galen\n\nPlato\nhttps://en.wikipedia.org/wiki/Plato\n\nPythagoras\nhttps://en.wikipedia.org/wiki/Pythagoras\n\nSocrates\nhttps://en.wikipedia.org/wiki/Socrates\n\n20links\nhttp://tablepedia.com/en/20links.html\n\n60links\nhttp://tablepedia.com/en/60links.html\n\nAurilac\nhttps://en.wikipedia.org/wiki/Pope_Sylvester_II\n\nAurelius_Augustinus\nhttps://en.wikipedia.org/wiki/Augustine_of_Hippo\n\nAquinas\nhttps://en.wikipedia.org/wiki/Thomas_Aquinas\n\nAvicenna\nhttps://en.wikipedia.org/wiki/Avicenna\n\nal-Khwarizmi\nhttps://en.wikipedia.org/wiki/Muhammad_ibn_Musa_al-Khwarizmi\n\nDemocritus\nhttps://en.wikipedia.org/wiki/Democritus\n\nPhilo\nhttps://en.wikipedia.org/wiki/Philo\n\nPtolemy\nhttps://en.wikipedia.org/wiki/Ptolemy\n\nStrabo\nhttps://en.wikipedia.org/wiki/Strabo\n\nThales_of_Miletus\nhttps://en.wikipedia.org/wiki/Thales_of_Miletus\n\nGalilei\nhttps://en.wikipedia.org/wiki/Galileo_Galilei\n\nBernoulli\nhttps://en.wikipedia.org/wiki/Daniel_Bernoulli");
}
});
row2.addView(btnLinks20, lp2);
Button btnLinks50 = new Button(this);
btnLinks50.setText("60links");
btnLinks50.setTextSize(12);
btnLinks50.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
txtMulti.setText("Plato\nhttps://en.wikipedia.org/wiki/Plato\n\nAristotle\nhttps://en.wikipedia.org/wiki/Aristotle\n\nSocrates\nhttps://en.wikipedia.org/wiki/Socrates\n\nPythagoras\nhttps://en.wikipedia.org/wiki/Pythagoras\n\nArchimedes\nhttps://en.wikipedia.org/wiki/Archimedes\n\nGalen\nhttps://en.wikipedia.org/wiki/Galen\n\nStrabo\nhttps://en.wikipedia.org/wiki/Strabo\n\nEratosthenes\nhttps://en.wikipedia.org/wiki/Eratosthenes\n\n20links\nhttp://tablepedia.com/en/20links.html\n\n60links\nhttp://tablepedia.com/en/60links.html\n\nEuclid\nhttps://en.wikipedia.org/wiki/Euclid\n\nPtolemy\nhttps://en.wikipedia.org/wiki/Ptolemy\n\nThales_of_Miletus\nhttps://en.wikipedia.org/wiki/Thales_of_Miletus\n\nPhilo\nhttps://en.wikipedia.org/wiki/Philo\n\nAurilac\nhttps://en.wikipedia.org/wiki/Pope_Sylvester_II\n\nAurelius_Augustinus\nhttps://en.wikipedia.org/wiki/Augustine_of_Hippo\n\nAquinas\nhttps://en.wikipedia.org/wiki/Thomas_Aquinas\n\nAvicenna\nhttps://en.wikipedia.org/wiki/Avicenna\n\nal-Khwarizmi\nhttps://en.wikipedia.org/wiki/Muhammad_ibn_Musa_al-Khwarizmi\n\nDemocritus\nhttps://en.wikipedia.org/wiki/Democritus\n\nGalilei\nhttps://en.wikipedia.org/wiki/Galileo_Galilei\n\nBernoulli\nhttps://en.wikipedia.org/wiki/Daniel_Bernoulli\n\nEuler\nhttps://en.wikipedia.org/wiki/Leonhard_Euler\n\nHuygens\nhttps://en.wikipedia.org/wiki/Christiaan_Huygens\n\nFermi\nhttps://en.wikipedia.org/wiki/Enrico_Fermi\n\nSchrödinger\nhttps://en.wikipedia.org/wiki/Erwin_Schr%C3%B6dinger\n\nDirac\nhttps://en.wikipedia.org/wiki/Paul_Dirac\n\nPerrin\nhttps://en.wikipedia.org/wiki/Jean_Baptiste_Perrin\n\nGiordano_Bruno\nhttps://en.wikipedia.org/wiki/Giordano_Bruno\n\nAvogadro\nhttps://en.wikipedia.org/wiki/Amedeo_Avogadro\n\nCopernicus\nhttps://en.wikipedia.org/wiki/Nicolaus_Copernicus\n\nNewton\nhttps://en.wikipedia.org/wiki/Newton\n\nLomonosov\nhttps://en.wikipedia.org/wiki/Mikhail_Lomonosov\n\nEinstein\nhttps://en.wikipedia.org/wiki/Albert_Einstein\n\nCurie\nhttps://en.wikipedia.org/wiki/Marie_Curie\n\nEdison\nhttps://en.wikipedia.org/wiki/Thomas_Edison\n\nTesla\nhttps://en.wikipedia.org/wiki/Nikola_Tesla\n\nOppenheimer\nhttps://en.wikipedia.org/wiki/J._Robert_Oppenheimer\n\nPavlov\nhttps://en.wikipedia.org/wiki/Ivan_Pavlov\n\nKorolev\nhttps://en.wikipedia.org/wiki/Sergei_Korolev\n\nVolta\nhttps://en.wikipedia.org/wiki/Alessandro_Volta\n\nAmpère\nhttps://en.wikipedia.org/wiki/Andr%C3%A9-Marie_Amp%C3%A8re\n\nOhm\nhttps://en.wikipedia.org/wiki/Georg_Ohm\n\nLavoisier\nhttps://en.wikipedia.org/wiki/Marie-Anne_Paulze_Lavoisier\n\nMendeleev\nhttps://en.wikipedia.org/wiki/Dmitri_Mendeleev\n\nMendel\nhttps://en.wikipedia.org/wiki/Gregor_Mendel\n\nSakharov\nhttps://en.wikipedia.org/wiki/Andrei_Sakharov\n\nKurchatov\nhttps://en.wikipedia.org/wiki/Igor_Kurchatov\n\nAdam_Smith\nhttps://en.wikipedia.org/wiki/Adam_Smith\n\nKarl_Marx\nhttps://en.wikipedia.org/wiki/Karl_Marx\n\nKeynes\nhttps://en.wikipedia.org/wiki/John_Maynard_Keynes\n\nDescartes\nhttps://en.wikipedia.org/wiki/Ren%C3%A9_Descartes\n\nPavel_Florensky\nhttps://en.wikipedia.org/wiki/Pavel_Florensky\n\nIvan_Ilyin\nhttps://en.wikipedia.org/wiki/Ivan_Ilyin\n\nNikolai_Berdyaev\nhttps://en.wikipedia.org/wiki/Nikolai_Berdyaev\n\nStoletov\nhttps://en.wikipedia.org/wiki/Aleksandr_Stoletov\n\nHawking\nhttps://en.wikipedia.org/wiki/Stephen_Hawking\n\nPerelman\nhttps://en.wikipedia.org/wiki/Grigori_Perelman\n\nAmundsen\nhttps://en.wikipedia.org/wiki/Roald_Amundsen\n\nFrançois Viète\nhttps://en.wikipedia.org/wiki/Fran%C3%A7ois_Vi%C3%A8te\n\nHenri Poincaré\nhttps://en.wikipedia.org/wiki/Henri_Poincar%C3%A9");
}
});
row2.addView(btnLinks50, lp2);
Button btnClear = new Button(this);
btnClear.setText("CLS");
btnClear.setTextSize(12);
btnClear.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
txtMulti.setText("");
}
});
row2.addView(btnClear, lp2);
buttonsView.addView(row, lpW);
buttonsView.addView(row2, lpW);
buttonsView.addView(row7, lpW);
addContentView(buttonsView, lpW);
}
public void openActivity1() {
Intent intent = new Intent(this, MainActivity.class );
startActivity(intent);
}
}
8. Теперь можно запускать приложение.
Не забудьте создать для него значок (иконку) через res -> New -> Image Asset (Рис. 6, 7):