a
This commit is contained in:
parent
a13eba897c
commit
f3da629131
87
DEV4.1/tp4/ex1/css/style.css
Normal file
87
DEV4.1/tp4/ex1/css/style.css
Normal file
@ -0,0 +1,87 @@
|
|||||||
|
main {
|
||||||
|
position: absolute;
|
||||||
|
top: 2rem;
|
||||||
|
left: 50%;
|
||||||
|
transform: translate(-50%, 0);
|
||||||
|
}
|
||||||
|
.loader {
|
||||||
|
position: absolute;
|
||||||
|
top: 50%;
|
||||||
|
left: 50%;
|
||||||
|
transform: translate(-50%, -50%);
|
||||||
|
}
|
||||||
|
.loader {
|
||||||
|
margin: 6rem 0 0;
|
||||||
|
}
|
||||||
|
.error {
|
||||||
|
color: #FFFAAA;
|
||||||
|
margin: 1rem 0;
|
||||||
|
}
|
||||||
|
label {
|
||||||
|
align-items: center;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
font-size: 1.6rem;
|
||||||
|
}
|
||||||
|
label span {
|
||||||
|
text-shadow: 1px 1px 2px rgba(0,0,0,0.8);
|
||||||
|
}
|
||||||
|
input {
|
||||||
|
margin: 1rem 0 0;
|
||||||
|
font-size: 1.6rem;
|
||||||
|
font-weight: 300;
|
||||||
|
padding: 0.8rem 1rem;
|
||||||
|
color: white;
|
||||||
|
border: 1px solid rgba(255, 255, 255, 0.05);
|
||||||
|
background: rgba(255, 255, 255, 0.05);
|
||||||
|
transition: all 0.3s;
|
||||||
|
box-shadow: 1px 1px 2px rgba(0,0,0, 0.3);
|
||||||
|
-moz-appearance:none;
|
||||||
|
-webkit-appearance:none;
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
input:focus {
|
||||||
|
border: 1px solid transparent;
|
||||||
|
background: rgba(255, 255, 255, 0.08);
|
||||||
|
}
|
||||||
|
ul {
|
||||||
|
padding: 0;
|
||||||
|
margin: 1rem 0 2rem;
|
||||||
|
}
|
||||||
|
ul li {
|
||||||
|
padding: 0.6rem 1rem;
|
||||||
|
margin: 1px 0;
|
||||||
|
line-height: 1.4rem;
|
||||||
|
display: flex;
|
||||||
|
justify-content: space-between;
|
||||||
|
align-items: center;
|
||||||
|
align-content: space-between;
|
||||||
|
text-shadow: 1px 1px 2px rgba(0,0,0,0.8);
|
||||||
|
background: rgba(255, 255, 255, 0.08);
|
||||||
|
box-shadow: 0 0 2px rgba(0,0,0, 0.3);
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
ul li:hover,
|
||||||
|
ul li:active,
|
||||||
|
ul li:focus {
|
||||||
|
background: rgba(255, 255, 255, 0.1);
|
||||||
|
}
|
||||||
|
ul li a {
|
||||||
|
margin: 0 0.6rem 0 0;
|
||||||
|
text-decoration: none;
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
ul li span {
|
||||||
|
opacity: 0.5;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
margin: 0;
|
||||||
|
font-family: 'Helvetica Neue', Helvetica, Arial;
|
||||||
|
font-weight: 300;
|
||||||
|
background-size: cover;
|
||||||
|
background-attachment: fixed;
|
||||||
|
background-image: -webkit-radial-gradient(ellipse farthest-corner at top, #661141, #000000);
|
||||||
|
background-image: radial-gradient(ellipse farthest-corner at top, #661141, #000000);
|
||||||
|
color: white;
|
||||||
|
}
|
13
DEV4.1/tp4/ex1/img/puff.svg
Normal file
13
DEV4.1/tp4/ex1/img/puff.svg
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
<!-- By Sam Herbert (@sherb), for everyone. More @ http://goo.gl/7AJzbL -->
|
||||||
|
<svg width="44" height="44" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg" stroke="#fff">
|
||||||
|
<g fill="none" fill-rule="evenodd" stroke-width="2">
|
||||||
|
<circle cx="22" cy="22" r="1">
|
||||||
|
<animate attributeName="r" begin="0s" dur="1.8s" values="1; 20" calcMode="spline" keyTimes="0; 1" keySplines="0.165, 0.84, 0.44, 1" repeatCount="indefinite"/>
|
||||||
|
<animate attributeName="stroke-opacity" begin="0s" dur="1.8s" values="1; 0" calcMode="spline" keyTimes="0; 1" keySplines="0.3, 0.61, 0.355, 1" repeatCount="indefinite"/>
|
||||||
|
</circle>
|
||||||
|
<circle cx="22" cy="22" r="1">
|
||||||
|
<animate attributeName="r" begin="-0.9s" dur="1.8s" values="1; 20" calcMode="spline" keyTimes="0; 1" keySplines="0.165, 0.84, 0.44, 1" repeatCount="indefinite"/>
|
||||||
|
<animate attributeName="stroke-opacity" begin="-0.9s" dur="1.8s" values="1; 0" calcMode="spline" keyTimes="0; 1" keySplines="0.3, 0.61, 0.355, 1" repeatCount="indefinite"/>
|
||||||
|
</circle>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 1.0 KiB |
28
DEV4.1/tp4/ex1/index.html
Normal file
28
DEV4.1/tp4/ex1/index.html
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<meta name="viewport" content="initial-scale=1,witdh=device-width">
|
||||||
|
<link rel="stylesheet" type="text/css" href="./css/style.css">
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<!-- vue html -->
|
||||||
|
<main>
|
||||||
|
<label>
|
||||||
|
<span>Search a movie</span>
|
||||||
|
<input type="input" placeholder="28 Days Later..">
|
||||||
|
</label>
|
||||||
|
|
||||||
|
<div class="loader">
|
||||||
|
<img src="./img/puff.svg">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<p class="error"></p>
|
||||||
|
<div id="list-movies">
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
</body>
|
||||||
|
<script type="module" src="./js/app.js"></script>
|
||||||
|
</html>
|
7
DEV4.1/tp4/ex1/js/app.js
Normal file
7
DEV4.1/tp4/ex1/js/app.js
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
import model from './model'
|
||||||
|
import Controller from './controller'
|
||||||
|
import View from './view'
|
||||||
|
|
||||||
|
const view = new View()
|
||||||
|
const app = new Controller(view,model)
|
||||||
|
|
45
DEV4.1/tp4/ex1/js/controller.js
Normal file
45
DEV4.1/tp4/ex1/js/controller.js
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
class Controller {
|
||||||
|
constructor(view,model){
|
||||||
|
this.view = view
|
||||||
|
this.model = model
|
||||||
|
|
||||||
|
this.loading = false
|
||||||
|
this.lastSearch = null
|
||||||
|
this.error = null
|
||||||
|
this.results = []
|
||||||
|
|
||||||
|
this.view.setLoading(false)
|
||||||
|
this.view.bindSearch(this.search.bind(this))
|
||||||
|
}
|
||||||
|
reset() {
|
||||||
|
this.loading = false
|
||||||
|
this.error = null
|
||||||
|
this.results = []
|
||||||
|
}
|
||||||
|
|
||||||
|
async search(searchMovie) {
|
||||||
|
try {
|
||||||
|
this.reset();
|
||||||
|
this.loading = true;
|
||||||
|
this.view.setLoading(true);
|
||||||
|
|
||||||
|
const movies = await this.model.getMovies(searchMovie);
|
||||||
|
|
||||||
|
if (movies && movies.length > 0) {
|
||||||
|
this.results = movies;
|
||||||
|
} else {
|
||||||
|
this.error = "No movies found.";
|
||||||
|
}
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Error occurred during search:', error);
|
||||||
|
this.error = "An error occurred during search.";
|
||||||
|
} finally {
|
||||||
|
this.loading = false;
|
||||||
|
this.view.setLoading(false);
|
||||||
|
this.view.renderResults(this.results, this.error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export default Controller
|
||||||
|
|
12
DEV4.1/tp4/ex1/js/helpers.js
Normal file
12
DEV4.1/tp4/ex1/js/helpers.js
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
// Returns a function, that, as long as it continues to be invoked, will not
|
||||||
|
// be triggered. The function will be called after it stops being called for
|
||||||
|
// N milliseconds.
|
||||||
|
function debounce(fn, wait) {
|
||||||
|
let timeout
|
||||||
|
|
||||||
|
return (...args) => {
|
||||||
|
clearTimeout(timeout)
|
||||||
|
timeout = setTimeout(() => fn(...args), wait)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
export default debounce
|
23
DEV4.1/tp4/ex1/js/model.js
Normal file
23
DEV4.1/tp4/ex1/js/model.js
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
let apiKey = 'a776e2df'
|
||||||
|
|
||||||
|
let model = {
|
||||||
|
getMovies(search){
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
fetch(`http://www.omdbapi.com/?apikey=${apiKey}&s=${search}`)
|
||||||
|
.then(response => {
|
||||||
|
if (!response.ok) {
|
||||||
|
throw new Error('Network response was not ok');
|
||||||
|
}
|
||||||
|
return response.json();
|
||||||
|
})
|
||||||
|
.then(data => {
|
||||||
|
resolve(data.Search);
|
||||||
|
})
|
||||||
|
.catch(error => {
|
||||||
|
console.error('There was a problem with the fetch operation:', error);}
|
||||||
|
)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export default model
|
54
DEV4.1/tp4/ex1/js/view.js
Normal file
54
DEV4.1/tp4/ex1/js/view.js
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
import debounce from "./helpers.js"
|
||||||
|
|
||||||
|
class View {
|
||||||
|
constructor(){
|
||||||
|
this.listMovies = document.querySelector("#list-movies")
|
||||||
|
this.inputSearch = document.querySelector("input")
|
||||||
|
this.loader = document.querySelector(".loader")
|
||||||
|
this.message = document.querySelector("p.error")
|
||||||
|
}
|
||||||
|
|
||||||
|
_getInput(){
|
||||||
|
return this.inputSearch.value
|
||||||
|
}
|
||||||
|
|
||||||
|
setLoading(loading){
|
||||||
|
if (loading)
|
||||||
|
this.loader.style.display = "block"
|
||||||
|
else
|
||||||
|
this.loader.style.display = "none"
|
||||||
|
}
|
||||||
|
|
||||||
|
renderMessage(error){
|
||||||
|
this.message.style.display = "block"
|
||||||
|
this.message.textContent = error
|
||||||
|
}
|
||||||
|
|
||||||
|
renderList(movies){
|
||||||
|
let ul = document.createElement("ul")
|
||||||
|
movies.forEach((movie)=>{
|
||||||
|
let li = document.createElement("li")
|
||||||
|
let a = document.createElement("a")
|
||||||
|
let span = document.createElement("span")
|
||||||
|
a.href = `http://www.imdb.com/title/${movie.imdbID}`
|
||||||
|
a.target="_blank"
|
||||||
|
a.textContent = movie.Title
|
||||||
|
span.textContent = movie.Year
|
||||||
|
|
||||||
|
|
||||||
|
li.appendChild(a)
|
||||||
|
li.appendChild(span)
|
||||||
|
ul.appendChild(li)
|
||||||
|
})
|
||||||
|
|
||||||
|
this.listMovies.replaceChildren(ul)
|
||||||
|
}
|
||||||
|
|
||||||
|
bindSearch(handler){
|
||||||
|
this.inputSearch.addEventListener("input",debounce((e)=>{
|
||||||
|
handler(this._getInput())
|
||||||
|
},500))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export default View
|
9
DEV4.1/tp4/ex3/app.js
Normal file
9
DEV4.1/tp4/ex3/app.js
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
import {tableManager} from './modules/table'
|
||||||
|
import loader from './modules/loader'
|
||||||
|
let leagues = []
|
||||||
|
|
||||||
|
let leagueList = document.querySelector(".menu-list")
|
||||||
|
let table = new tableManager(document.querySelector("table tbody"))
|
||||||
|
let loader = new loader(document.getElementById("loader"))
|
||||||
|
|
||||||
|
// TODO
|
25
DEV4.1/tp4/ex3/css/style.css
Normal file
25
DEV4.1/tp4/ex3/css/style.css
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
div.is-loading {
|
||||||
|
position: fixed;
|
||||||
|
z-index: 999;
|
||||||
|
overflow: show;
|
||||||
|
margin: auto;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
bottom: 0;
|
||||||
|
right: 0;
|
||||||
|
}
|
||||||
|
div.is-loading:after {
|
||||||
|
animation: spinAround 500ms infinite linear;
|
||||||
|
border: 2px solid hsl(0deg, 0%, 86%);
|
||||||
|
border-radius: 9999px;
|
||||||
|
border-right-color: transparent;
|
||||||
|
border-top-color: transparent;
|
||||||
|
content: "";
|
||||||
|
display: block;
|
||||||
|
position: relative;
|
||||||
|
top: calc(50% - 5em);
|
||||||
|
left: calc(50% - 5em);
|
||||||
|
width: 10em;
|
||||||
|
height: 10em;
|
||||||
|
border-width: 0.25em;
|
||||||
|
}
|
75
DEV4.1/tp4/ex3/index.html
Normal file
75
DEV4.1/tp4/ex3/index.html
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="fr">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="initial-scale=1,witdh=device-width">
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bulma@0.9.4/css/bulma.min.css">
|
||||||
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.9.0/css/all.min.css" integrity="sha512-q3eWabyZPc1XTCmF+8/LuE1ozpg5xxn7iO89yfSOd5/oKvyqLngoNGsx8jq92Y8eXJ/IRxQbEC+FGSYxtk2oiw==" crossorigin="anonymous" referrerpolicy="no-referrer" />
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="./css/style.css">
|
||||||
|
|
||||||
|
<title>French Soccer</title>
|
||||||
|
</head>
|
||||||
|
<body class="m-6">
|
||||||
|
<main class="container">
|
||||||
|
<div id="loader" ></div>
|
||||||
|
<section class="columns">
|
||||||
|
<aside class="menu column is-narrow">
|
||||||
|
<div class="box">
|
||||||
|
<p class="menu-label">Championnats de Football</p>
|
||||||
|
<ul class="menu-list">
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</aside>
|
||||||
|
<div class="column is-offset-1">
|
||||||
|
<h5 class="title is-5 has-text-primary-dark">
|
||||||
|
<span id="nom"></span><span class="tag" id="date"></span>
|
||||||
|
<div class="block control has-icons-left is-inline-block is-pulled-right">
|
||||||
|
<input class="input" type="search" placeholder="Equipe" id="myInput">
|
||||||
|
<span class="icon is-small is-left">
|
||||||
|
<i class="fas fa-search"></i>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
</h5>
|
||||||
|
|
||||||
|
|
||||||
|
<table class="table is-fullwidth is-hoverable">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th><abbr title="Position">Pos</abbr><a id="sort" href="#"><span class="icon"><i class="fas fa-sort"></i></span></a></th>
|
||||||
|
<th></th>
|
||||||
|
<th>Team</th>
|
||||||
|
<th><abbr title="Played">Pld</abbr></th>
|
||||||
|
<th><abbr title="Won">W</abbr></th>
|
||||||
|
<th><abbr title="Drawn">D</abbr></th>
|
||||||
|
<th><abbr title="Lost">L</abbr></th>
|
||||||
|
<th><abbr title="Goals for">GF</abbr></th>
|
||||||
|
<th><abbr title="Goals against">GA</abbr></th>
|
||||||
|
<th><abbr title="Goal difference">GD</abbr></th>
|
||||||
|
<th><abbr title="Points">Pts</abbr></th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tfoot>
|
||||||
|
<tr>
|
||||||
|
<th><abbr title="Position">Pos</abbr></th>
|
||||||
|
<th></th>
|
||||||
|
<th>Team</th>
|
||||||
|
<th><abbr title="Played">Pld</abbr></th>
|
||||||
|
<th><abbr title="Won">W</abbr></th>
|
||||||
|
<th><abbr title="Drawn">D</abbr></th>
|
||||||
|
<th><abbr title="Lost">L</abbr></th>
|
||||||
|
<th><abbr title="Goals for">GF</abbr></th>
|
||||||
|
<th><abbr title="Goals against">GA</abbr></th>
|
||||||
|
<th><abbr title="Goal difference">GD</abbr></th>
|
||||||
|
<th><abbr title="Points">Pts</abbr></th>
|
||||||
|
</tr>
|
||||||
|
</tfoot>
|
||||||
|
<tbody></tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
</main>
|
||||||
|
<script type="module" src="app.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
11
DEV4.1/tp4/ex3/modules/helpers.js
Normal file
11
DEV4.1/tp4/ex3/modules/helpers.js
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
function debounce(f,wait)
|
||||||
|
{
|
||||||
|
let timeout
|
||||||
|
|
||||||
|
return function(...args){
|
||||||
|
clearTimeout(timeout)
|
||||||
|
timeout=setTimeout(()=>f(...args),wait)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export default debounce
|
15
DEV4.1/tp4/ex3/modules/loader.js
Normal file
15
DEV4.1/tp4/ex3/modules/loader.js
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
class loader {
|
||||||
|
div = null
|
||||||
|
constructor(node){
|
||||||
|
this.div = node
|
||||||
|
}
|
||||||
|
set(loading){
|
||||||
|
if (loading)
|
||||||
|
this.div.classList.add("is-loading")
|
||||||
|
else
|
||||||
|
this.div.classList.remove("is-loading")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
export default loader
|
85
DEV4.1/tp4/ex3/modules/table.js
Normal file
85
DEV4.1/tp4/ex3/modules/table.js
Normal file
@ -0,0 +1,85 @@
|
|||||||
|
import debounce from './helpers'
|
||||||
|
|
||||||
|
|
||||||
|
class tableManager {
|
||||||
|
tbody = null
|
||||||
|
props = ["intRank","strTeamBadge","strTeam","intPlayed","intWin","intDraw",
|
||||||
|
"intLoss","intGoalsFor","intGoalsAgainst","intGoalDifference","intPoints"]
|
||||||
|
sort = -1 // -1 ou 1
|
||||||
|
teamSearch = ''
|
||||||
|
data = [] // données à afficher
|
||||||
|
//
|
||||||
|
constructor(tbodyNode){
|
||||||
|
this.tbody = tbodyNode
|
||||||
|
|
||||||
|
|
||||||
|
document
|
||||||
|
.getElementById("myInput")
|
||||||
|
.addEventListener("input",debounce(e=>{
|
||||||
|
this.teamSearch = e.target.value.toUpperCase()
|
||||||
|
this.tableRender()
|
||||||
|
},500))
|
||||||
|
|
||||||
|
document
|
||||||
|
.getElementById("sort")
|
||||||
|
.addEventListener("click",((e) => {
|
||||||
|
this.sort *= -1
|
||||||
|
e.preventDefault()
|
||||||
|
this.tableRender()
|
||||||
|
|
||||||
|
}))
|
||||||
|
|
||||||
|
}
|
||||||
|
setData(data){
|
||||||
|
this.data = data
|
||||||
|
}
|
||||||
|
_setDate = (()=>{
|
||||||
|
if (this.data.length == 0 ) return
|
||||||
|
let date=new Date(this.data[0].dateUpdated)
|
||||||
|
document.getElementById("date").textContent = date.toLocaleDateString("fr")
|
||||||
|
})
|
||||||
|
|
||||||
|
setNom(nom){
|
||||||
|
document.getElementById("nom").textContent = nom
|
||||||
|
}
|
||||||
|
_getRow = (v => {
|
||||||
|
let tr = document.createElement("tr")
|
||||||
|
for (let p of this.props){
|
||||||
|
let td = document.createElement("td")
|
||||||
|
if (p !== "strTeamBadge"){
|
||||||
|
td.textContent = v[p]
|
||||||
|
} else {
|
||||||
|
let figure = document.createElement("figure")
|
||||||
|
let img = document.createElement("img")
|
||||||
|
figure.classList.add("image","is-32x32")
|
||||||
|
img.src = v[p]
|
||||||
|
figure.appendChild(img)
|
||||||
|
td.appendChild(figure)
|
||||||
|
}
|
||||||
|
tr.appendChild(td)
|
||||||
|
}
|
||||||
|
return tr
|
||||||
|
})
|
||||||
|
|
||||||
|
tableRender(){
|
||||||
|
let dataFilter
|
||||||
|
if (this.teamSearch)
|
||||||
|
dataFilter = this.data.filter( item => item.strTeam.toUpperCase().includes(this.teamSearch))
|
||||||
|
else
|
||||||
|
dataFilter = [...this.data]
|
||||||
|
|
||||||
|
dataFilter.sort((eq1,eq2)=>this.sort*(eq2.intRank - eq1.intRank))
|
||||||
|
this._setDate()
|
||||||
|
|
||||||
|
let content = document.createDocumentFragment()
|
||||||
|
dataFilter.forEach(v =>{
|
||||||
|
content.appendChild(this._getRow(v))
|
||||||
|
})
|
||||||
|
|
||||||
|
this.tbody.replaceChildren(content)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export { tableManager }
|
||||||
|
|
||||||
|
|
@ -1 +0,0 @@
|
|||||||
Choix
|
|
10
DEV4.5/ChatRelative/.idea/deploymentTargetDropDown.xml
Normal file
10
DEV4.5/ChatRelative/.idea/deploymentTargetDropDown.xml
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="deploymentTargetDropDown">
|
||||||
|
<value>
|
||||||
|
<entry key="app">
|
||||||
|
<State />
|
||||||
|
</entry>
|
||||||
|
</value>
|
||||||
|
</component>
|
||||||
|
</project>
|
@ -4,15 +4,15 @@
|
|||||||
<component name="GradleSettings">
|
<component name="GradleSettings">
|
||||||
<option name="linkedExternalProjectsSettings">
|
<option name="linkedExternalProjectsSettings">
|
||||||
<GradleProjectSettings>
|
<GradleProjectSettings>
|
||||||
<option name="testRunner" value="GRADLE" />
|
|
||||||
<option name="distributionType" value="DEFAULT_WRAPPED" />
|
|
||||||
<option name="externalProjectPath" value="$PROJECT_DIR$" />
|
<option name="externalProjectPath" value="$PROJECT_DIR$" />
|
||||||
|
<option name="gradleJvm" value="#GRADLE_LOCAL_JAVA_HOME" />
|
||||||
<option name="modules">
|
<option name="modules">
|
||||||
<set>
|
<set>
|
||||||
<option value="$PROJECT_DIR$" />
|
<option value="$PROJECT_DIR$" />
|
||||||
<option value="$PROJECT_DIR$/app" />
|
<option value="$PROJECT_DIR$/app" />
|
||||||
</set>
|
</set>
|
||||||
</option>
|
</option>
|
||||||
|
<option name="resolveExternalAnnotations" value="false" />
|
||||||
</GradleProjectSettings>
|
</GradleProjectSettings>
|
||||||
</option>
|
</option>
|
||||||
</component>
|
</component>
|
||||||
|
10
DEV4.5/ChatRelative/.idea/migrations.xml
Normal file
10
DEV4.5/ChatRelative/.idea/migrations.xml
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="ProjectMigrations">
|
||||||
|
<option name="MigrateToGradleLocalJavaHome">
|
||||||
|
<set>
|
||||||
|
<option value="$PROJECT_DIR$" />
|
||||||
|
</set>
|
||||||
|
</option>
|
||||||
|
</component>
|
||||||
|
</project>
|
@ -1,6 +1,7 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<project version="4">
|
<project version="4">
|
||||||
<component name="ExternalStorageConfigurationManager" enabled="true" />
|
<component name="ExternalStorageConfigurationManager" enabled="true" />
|
||||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_17" project-jdk-name="jbr-17" project-jdk-type="JavaSDK">
|
<component name="ProjectRootManager" version="2" languageLevel="JDK_17" default="true" project-jdk-name="jbr-17" project-jdk-type="JavaSDK">
|
||||||
<output url="file://$PROJECT_DIR$/build/classes" />
|
<output url="file://$PROJECT_DIR$/build/classes" />
|
||||||
</component>
|
</component>
|
||||||
<component name="ProjectType">
|
<component name="ProjectType">
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<project version="4">
|
<project version="4">
|
||||||
<component name="VcsDirectoryMappings">
|
<component name="VcsDirectoryMappings">
|
||||||
<mapping directory="$PROJECT_DIR$/.." vcs="Git" />
|
<mapping directory="$PROJECT_DIR$/../.." vcs="Git" />
|
||||||
</component>
|
</component>
|
||||||
</project>
|
</project>
|
@ -4,9 +4,8 @@
|
|||||||
<component name="GradleSettings">
|
<component name="GradleSettings">
|
||||||
<option name="linkedExternalProjectsSettings">
|
<option name="linkedExternalProjectsSettings">
|
||||||
<GradleProjectSettings>
|
<GradleProjectSettings>
|
||||||
<option name="testRunner" value="GRADLE" />
|
|
||||||
<option name="externalProjectPath" value="$PROJECT_DIR$" />
|
<option name="externalProjectPath" value="$PROJECT_DIR$" />
|
||||||
<option name="gradleJvm" value="Embedded JDK" />
|
<option name="gradleJvm" value="jbr-17" />
|
||||||
<option name="modules">
|
<option name="modules">
|
||||||
<set>
|
<set>
|
||||||
<option value="$PROJECT_DIR$" />
|
<option value="$PROJECT_DIR$" />
|
||||||
|
10
DEV4.5/Gribouillage/.idea/deploymentTargetDropDown.xml
Normal file
10
DEV4.5/Gribouillage/.idea/deploymentTargetDropDown.xml
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="deploymentTargetDropDown">
|
||||||
|
<value>
|
||||||
|
<entry key="app">
|
||||||
|
<State />
|
||||||
|
</entry>
|
||||||
|
</value>
|
||||||
|
</component>
|
||||||
|
</project>
|
@ -4,15 +4,15 @@
|
|||||||
<component name="GradleSettings">
|
<component name="GradleSettings">
|
||||||
<option name="linkedExternalProjectsSettings">
|
<option name="linkedExternalProjectsSettings">
|
||||||
<GradleProjectSettings>
|
<GradleProjectSettings>
|
||||||
<option name="testRunner" value="GRADLE" />
|
|
||||||
<option name="distributionType" value="DEFAULT_WRAPPED" />
|
|
||||||
<option name="externalProjectPath" value="$PROJECT_DIR$" />
|
<option name="externalProjectPath" value="$PROJECT_DIR$" />
|
||||||
|
<option name="gradleJvm" value="#GRADLE_LOCAL_JAVA_HOME" />
|
||||||
<option name="modules">
|
<option name="modules">
|
||||||
<set>
|
<set>
|
||||||
<option value="$PROJECT_DIR$" />
|
<option value="$PROJECT_DIR$" />
|
||||||
<option value="$PROJECT_DIR$/app" />
|
<option value="$PROJECT_DIR$/app" />
|
||||||
</set>
|
</set>
|
||||||
</option>
|
</option>
|
||||||
|
<option name="resolveExternalAnnotations" value="false" />
|
||||||
</GradleProjectSettings>
|
</GradleProjectSettings>
|
||||||
</option>
|
</option>
|
||||||
</component>
|
</component>
|
||||||
|
10
DEV4.5/Gribouillage/.idea/migrations.xml
Normal file
10
DEV4.5/Gribouillage/.idea/migrations.xml
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="ProjectMigrations">
|
||||||
|
<option name="MigrateToGradleLocalJavaHome">
|
||||||
|
<set>
|
||||||
|
<option value="$PROJECT_DIR$" />
|
||||||
|
</set>
|
||||||
|
</option>
|
||||||
|
</component>
|
||||||
|
</project>
|
@ -1,6 +1,6 @@
|
|||||||
<project version="4">
|
<project version="4">
|
||||||
<component name="ExternalStorageConfigurationManager" enabled="true" />
|
<component name="ExternalStorageConfigurationManager" enabled="true" />
|
||||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_17" project-jdk-name="jbr-17" project-jdk-type="JavaSDK">
|
<component name="ProjectRootManager" version="2" languageLevel="JDK_17" default="true" project-jdk-name="jbr-17" project-jdk-type="JavaSDK">
|
||||||
<output url="file://$PROJECT_DIR$/build/classes" />
|
<output url="file://$PROJECT_DIR$/build/classes" />
|
||||||
</component>
|
</component>
|
||||||
<component name="ProjectType">
|
<component name="ProjectType">
|
||||||
|
6
DEV4.5/Gribouillage/.idea/vcs.xml
Normal file
6
DEV4.5/Gribouillage/.idea/vcs.xml
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="VcsDirectoryMappings">
|
||||||
|
<mapping directory="$PROJECT_DIR$/../.." vcs="Git" />
|
||||||
|
</component>
|
||||||
|
</project>
|
15
DEV4.5/Pois/.gitignore
vendored
Normal file
15
DEV4.5/Pois/.gitignore
vendored
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
*.iml
|
||||||
|
.gradle
|
||||||
|
/local.properties
|
||||||
|
/.idea/caches
|
||||||
|
/.idea/libraries
|
||||||
|
/.idea/modules.xml
|
||||||
|
/.idea/workspace.xml
|
||||||
|
/.idea/navEditor.xml
|
||||||
|
/.idea/assetWizardSettings.xml
|
||||||
|
.DS_Store
|
||||||
|
/build
|
||||||
|
/captures
|
||||||
|
.externalNativeBuild
|
||||||
|
.cxx
|
||||||
|
local.properties
|
23
DEV4.5/Pois/.idea/deploymentTargetDropDown.xml
Normal file
23
DEV4.5/Pois/.idea/deploymentTargetDropDown.xml
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="deploymentTargetDropDown">
|
||||||
|
<value>
|
||||||
|
<entry key="app">
|
||||||
|
<State>
|
||||||
|
<runningDeviceTargetSelectedWithDropDown>
|
||||||
|
<Target>
|
||||||
|
<type value="RUNNING_DEVICE_TARGET" />
|
||||||
|
<deviceKey>
|
||||||
|
<Key>
|
||||||
|
<type value="SERIAL_NUMBER" />
|
||||||
|
<value value="CIWGA6TOTWYL8TNZ" />
|
||||||
|
</Key>
|
||||||
|
</deviceKey>
|
||||||
|
</Target>
|
||||||
|
</runningDeviceTargetSelectedWithDropDown>
|
||||||
|
<timeTargetWasSelectedWithDropDown value="2024-02-29T12:51:46.113627200Z" />
|
||||||
|
</State>
|
||||||
|
</entry>
|
||||||
|
</value>
|
||||||
|
</component>
|
||||||
|
</project>
|
@ -3,15 +3,15 @@
|
|||||||
<component name="GradleSettings">
|
<component name="GradleSettings">
|
||||||
<option name="linkedExternalProjectsSettings">
|
<option name="linkedExternalProjectsSettings">
|
||||||
<GradleProjectSettings>
|
<GradleProjectSettings>
|
||||||
<option name="testRunner" value="GRADLE" />
|
|
||||||
<option name="distributionType" value="DEFAULT_WRAPPED" />
|
|
||||||
<option name="externalProjectPath" value="$PROJECT_DIR$" />
|
<option name="externalProjectPath" value="$PROJECT_DIR$" />
|
||||||
|
<option name="gradleJvm" value="#GRADLE_LOCAL_JAVA_HOME" />
|
||||||
<option name="modules">
|
<option name="modules">
|
||||||
<set>
|
<set>
|
||||||
<option value="$PROJECT_DIR$" />
|
<option value="$PROJECT_DIR$" />
|
||||||
<option value="$PROJECT_DIR$/app" />
|
<option value="$PROJECT_DIR$/app" />
|
||||||
</set>
|
</set>
|
||||||
</option>
|
</option>
|
||||||
|
<option name="resolveExternalAnnotations" value="false" />
|
||||||
</GradleProjectSettings>
|
</GradleProjectSettings>
|
||||||
</option>
|
</option>
|
||||||
</component>
|
</component>
|
10
DEV4.5/Pois/.idea/migrations.xml
Normal file
10
DEV4.5/Pois/.idea/migrations.xml
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="ProjectMigrations">
|
||||||
|
<option name="MigrateToGradleLocalJavaHome">
|
||||||
|
<set>
|
||||||
|
<option value="$PROJECT_DIR$" />
|
||||||
|
</set>
|
||||||
|
</option>
|
||||||
|
</component>
|
||||||
|
</project>
|
@ -1,7 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<project version="4">
|
<project version="4">
|
||||||
<component name="ExternalStorageConfigurationManager" enabled="true" />
|
<component name="ExternalStorageConfigurationManager" enabled="true" />
|
||||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_17" project-jdk-name="jbr-17" project-jdk-type="JavaSDK">
|
<component name="ProjectRootManager" version="2" languageLevel="JDK_17" default="true" project-jdk-name="jbr-17" project-jdk-type="JavaSDK">
|
||||||
<output url="file://$PROJECT_DIR$/build/classes" />
|
<output url="file://$PROJECT_DIR$/build/classes" />
|
||||||
</component>
|
</component>
|
||||||
<component name="ProjectType">
|
<component name="ProjectType">
|
6
DEV4.5/Pois/.idea/vcs.xml
Normal file
6
DEV4.5/Pois/.idea/vcs.xml
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="VcsDirectoryMappings">
|
||||||
|
<mapping directory="$PROJECT_DIR$/../.." vcs="Git" />
|
||||||
|
</component>
|
||||||
|
</project>
|
39
DEV4.5/Pois/app/build.gradle.kts
Normal file
39
DEV4.5/Pois/app/build.gradle.kts
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
plugins {
|
||||||
|
id("com.android.application")
|
||||||
|
}
|
||||||
|
|
||||||
|
android {
|
||||||
|
namespace = "com.example.pois"
|
||||||
|
compileSdk = 34
|
||||||
|
|
||||||
|
defaultConfig {
|
||||||
|
applicationId = "com.example.pois"
|
||||||
|
minSdk = 19
|
||||||
|
targetSdk = 34
|
||||||
|
versionCode = 1
|
||||||
|
versionName = "1.0"
|
||||||
|
|
||||||
|
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
||||||
|
}
|
||||||
|
|
||||||
|
buildTypes {
|
||||||
|
release {
|
||||||
|
isMinifyEnabled = false
|
||||||
|
proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
compileOptions {
|
||||||
|
sourceCompatibility = JavaVersion.VERSION_1_8
|
||||||
|
targetCompatibility = JavaVersion.VERSION_1_8
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
|
||||||
|
implementation("androidx.appcompat:appcompat:1.6.1")
|
||||||
|
implementation("com.google.android.material:material:1.11.0")
|
||||||
|
implementation("androidx.constraintlayout:constraintlayout:2.1.4")
|
||||||
|
testImplementation("junit:junit:4.13.2")
|
||||||
|
androidTestImplementation("androidx.test.ext:junit:1.1.5")
|
||||||
|
androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1")
|
||||||
|
}
|
@ -1,4 +1,4 @@
|
|||||||
package com.example.choix;
|
package com.example.pois;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
|
||||||
@ -21,6 +21,6 @@ public class ExampleInstrumentedTest {
|
|||||||
public void useAppContext() {
|
public void useAppContext() {
|
||||||
// Context of the app under test.
|
// Context of the app under test.
|
||||||
Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
|
Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
|
||||||
assertEquals("com.example.choix", appContext.getPackageName());
|
assertEquals("com.example.pois", appContext.getPackageName());
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -10,7 +10,7 @@
|
|||||||
android:label="@string/app_name"
|
android:label="@string/app_name"
|
||||||
android:roundIcon="@mipmap/ic_launcher_round"
|
android:roundIcon="@mipmap/ic_launcher_round"
|
||||||
android:supportsRtl="true"
|
android:supportsRtl="true"
|
||||||
android:theme="@style/Theme.Choix"
|
android:theme="@style/Theme.Pois"
|
||||||
tools:targetApi="31">
|
tools:targetApi="31">
|
||||||
<activity
|
<activity
|
||||||
android:name=".MainActivity"
|
android:name=".MainActivity"
|
@ -1,9 +1,8 @@
|
|||||||
package com.example.choix;
|
package com.example.pois;
|
||||||
|
|
||||||
import androidx.appcompat.app.AppCompatActivity;
|
import androidx.appcompat.app.AppCompatActivity;
|
||||||
|
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.view.View;
|
|
||||||
|
|
||||||
public class MainActivity extends AppCompatActivity {
|
public class MainActivity extends AppCompatActivity {
|
||||||
|
|
||||||
@ -11,5 +10,9 @@ public class MainActivity extends AppCompatActivity {
|
|||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
setContentView(R.layout.activity_main);
|
setContentView(R.layout.activity_main);
|
||||||
|
Pois p = findViewById(R.id.pois);
|
||||||
|
PoisListener PL = new PoisListener();
|
||||||
|
p.setOnTouchListener(PL);
|
||||||
|
p.PL = PL;
|
||||||
}
|
}
|
||||||
}
|
}
|
25
DEV4.5/Pois/app/src/main/java/com/example/pois/Pointeur.java
Normal file
25
DEV4.5/Pois/app/src/main/java/com/example/pois/Pointeur.java
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
package com.example.pois;
|
||||||
|
|
||||||
|
import android.graphics.Color;
|
||||||
|
import android.graphics.Paint;
|
||||||
|
import android.view.MotionEvent;
|
||||||
|
|
||||||
|
public class Pointeur {
|
||||||
|
|
||||||
|
Paint p;
|
||||||
|
MotionEvent e;
|
||||||
|
Integer id;
|
||||||
|
|
||||||
|
public Pointeur(MotionEvent e, Integer id) {
|
||||||
|
Paint pTemp = new Paint();
|
||||||
|
pTemp.setColor(getRandomColor());
|
||||||
|
pTemp.setStyle(Paint.Style.FILL);
|
||||||
|
this.p = pTemp;
|
||||||
|
this.e = e;
|
||||||
|
this.id = id;
|
||||||
|
}
|
||||||
|
private int getRandomColor() {
|
||||||
|
return Color.rgb((int) (Math.random() * 255), (int) (Math.random() * 255), (int) (Math.random() * 255));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
28
DEV4.5/Pois/app/src/main/java/com/example/pois/Pois.java
Normal file
28
DEV4.5/Pois/app/src/main/java/com/example/pois/Pois.java
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
package com.example.pois;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import android.graphics.Canvas;
|
||||||
|
import android.util.AttributeSet;
|
||||||
|
import android.view.View;
|
||||||
|
|
||||||
|
public class Pois extends View {
|
||||||
|
|
||||||
|
|
||||||
|
public PoisListener PL;
|
||||||
|
|
||||||
|
public Pois(Context context, AttributeSet attrs) {
|
||||||
|
super(context,attrs);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onDraw(Canvas c){
|
||||||
|
super.onDraw(c);
|
||||||
|
for(Pointeur point : PL.p.values()) {
|
||||||
|
c.drawCircle( PL.getX(point), PL.getY(point), 50, point.p);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,59 @@
|
|||||||
|
package com.example.pois;
|
||||||
|
|
||||||
|
import android.graphics.Color;
|
||||||
|
import android.graphics.Paint;
|
||||||
|
import android.view.MotionEvent;
|
||||||
|
import android.view.View;
|
||||||
|
import android.view.View.OnTouchListener;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
|
|
||||||
|
public class PoisListener implements OnTouchListener {
|
||||||
|
|
||||||
|
public HashMap<Integer , Pointeur> p;
|
||||||
|
|
||||||
|
public PoisListener() {
|
||||||
|
super();
|
||||||
|
this.p = new HashMap<>();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onTouch(View v, MotionEvent event) {
|
||||||
|
int action = event.getActionMasked();
|
||||||
|
int pointerIndex = event.getActionIndex();
|
||||||
|
int pointerId = event.getPointerId(pointerIndex);
|
||||||
|
|
||||||
|
|
||||||
|
switch (action) {
|
||||||
|
case MotionEvent.ACTION_DOWN:
|
||||||
|
case MotionEvent.ACTION_POINTER_DOWN:
|
||||||
|
|
||||||
|
p.put(pointerId, new Pointeur(event,pointerId));
|
||||||
|
break;
|
||||||
|
case MotionEvent.ACTION_MOVE:
|
||||||
|
break;
|
||||||
|
case MotionEvent.ACTION_UP:
|
||||||
|
case MotionEvent.ACTION_POINTER_UP:
|
||||||
|
case MotionEvent.ACTION_CANCEL:
|
||||||
|
p.remove(pointerId);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
v.invalidate(); // Trigger redraw
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public float getX(Pointeur p) {
|
||||||
|
int pointerIndex = p.e.findPointerIndex(p.id);
|
||||||
|
// Get the pointer's current position.
|
||||||
|
return p.e.getX(pointerIndex);
|
||||||
|
}
|
||||||
|
public float getY(Pointeur p) {
|
||||||
|
int pointerIndex = p.e.findPointerIndex(p.id);
|
||||||
|
// Get the pointer's current position.
|
||||||
|
return p.e.getY(pointerIndex);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
14
DEV4.5/Pois/app/src/main/res/layout/activity_main.xml
Normal file
14
DEV4.5/Pois/app/src/main/res/layout/activity_main.xml
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:background="@color/black"
|
||||||
|
tools:context=".MainActivity">
|
||||||
|
|
||||||
|
<com.example.pois.Pois
|
||||||
|
android:id="@+id/pois"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent" />
|
||||||
|
|
||||||
|
</RelativeLayout>
|
Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 1.4 KiB |
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 2.8 KiB |
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user